Create an accounting voucher
An accounting voucher in SynkriaOps is a set of entries posted to the same journal, on the same date, balanced debit/credit. Once validated, the voucher becomes immutable (no modification allowed, only contra-entry possible) and SHA-256 chain-hashed for NF203 / SYSCOHADA art. 24 traceability.
Standard entry flow
Section titled “Standard entry flow”-
Accounting → Vouchers → New voucher.
-
Choose the journal (sales, purchases, bank, miscellaneous, opening balances). This determines the numbering prefix (e.g.
VTE,ACH,BNQ,OD,AN). -
Enter the date (must belong to an open fiscal year — otherwise SynkriaOps blocks creation).
-
Add the entry lines:
- Account number (autocomplete from the SYSCOHADA chart of accounts)
- Label
- Debit OR credit amount (never both on the same line)
- Optional: external reference (invoice number, analytical code, reconciliation)
-
Total debits must equal total credits. The header banner shows the difference in real time — validation is blocked while
debit ≠ credit.
Validation and numbering
Section titled “Validation and numbering”While the voucher is in DRAFT status, you can modify it freely. Validation
triggers:
-
Sequential numbering:
VTE-2026-000123is assigned through a PostgreSQL pessimistic lock (FOR UPDATE). No number can be skipped or duplicated, even under concurrent writes. -
Chained SHA-256 hash computation: this voucher’s hash =
SHA-256(voucher content + previous voucher's hash for the same tenant). Any later tampering breaks the chain and is immediately detectable. -
PostgreSQL trigger: the
amount,account,datecolumns of validated lines are protected againstUPDATE/DELETEby a BEFORE trigger (cf. migrationTightenPiecesValideeImmutability).
Integrity verification (QR code)
Section titled “Integrity verification (QR code)”Starting from PR #270 (LOT-FACT-V5-QR-VERIF), each validated voucher PDF embeds
a QR code pointing to https://app.synkriaops.com/v/{token}. Scanning this
QR verifies within milliseconds:
- The voucher’s authenticity (HMAC-SHA256-signed JWT token)
- That current content matches the recorded chained hash
- The author and validation date
Compliant with SYSCOHADA art. 24 (10-year retention) — useful for tax inspections or external audits.
Example — client invoice
Section titled “Example — client invoice”| Date | Journal | Number | Account | Debit | Credit | Label |
|---|---|---|---|---|---|---|
| 2026-05-19 | VTE | (auto) | 411000045 | 1 180 000 | Client SARL ABC | |
| 2026-05-19 | VTE | (auto) | 70100000 | 1 000 000 | Consulting service sale | |
| 2026-05-19 | VTE | (auto) | 44310000 | 180 000 | Output VAT 18% |
Total debit = 1 180 000 ✓ Total credit = 1 180 000 → validation allowed.
Common errors
Section titled “Common errors”| Error | Cause | Solution |
|---|---|---|
| ”Debit ≠ Credit” | Unbalanced lines | Add an adjustment line or fix amounts |
| ”Fiscal year closed” | Date in a closed year | Pick a date in an open fiscal year |
| ”Account 411xxx not found” | Counterparty not yet created | Create the counterparty (auto-generates the 411 sub-account) |
| “Validated voucher — edit not allowed” | Editing an already-validated voucher | Create a contra-entry instead |
Going further
Section titled “Going further”- Counterparty reconciliation (coming soon)
- Understanding the hash chain (coming soon)
- FEC export for tax controls (coming soon)