Skip to content

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.

  1. Accounting → Vouchers → New voucher.

  2. Choose the journal (sales, purchases, bank, miscellaneous, opening balances). This determines the numbering prefix (e.g. VTE, ACH, BNQ, OD, AN).

  3. Enter the date (must belong to an open fiscal year — otherwise SynkriaOps blocks creation).

  4. 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)
  5. Total debits must equal total credits. The header banner shows the difference in real time — validation is blocked while debit ≠ credit.

While the voucher is in DRAFT status, you can modify it freely. Validation triggers:

  1. Sequential numbering: VTE-2026-000123 is assigned through a PostgreSQL pessimistic lock (FOR UPDATE). No number can be skipped or duplicated, even under concurrent writes.

  2. 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.

  3. PostgreSQL trigger: the amount, account, date columns of validated lines are protected against UPDATE/DELETE by a BEFORE trigger (cf. migration TightenPiecesValideeImmutability).

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.

DateJournalNumberAccountDebitCreditLabel
2026-05-19VTE(auto)4110000451 180 000Client SARL ABC
2026-05-19VTE(auto)701000001 000 000Consulting service sale
2026-05-19VTE(auto)44310000180 000Output VAT 18%

Total debit = 1 180 000 ✓ Total credit = 1 180 000 → validation allowed.

ErrorCauseSolution
”Debit ≠ Credit”Unbalanced linesAdd an adjustment line or fix amounts
”Fiscal year closed”Date in a closed yearPick a date in an open fiscal year
”Account 411xxx not found”Counterparty not yet createdCreate the counterparty (auto-generates the 411 sub-account)
“Validated voucher — edit not allowed”Editing an already-validated voucherCreate a contra-entry instead
  • Counterparty reconciliation (coming soon)
  • Understanding the hash chain (coming soon)
  • FEC export for tax controls (coming soon)