Skip to content

Posting and reversing an accounting entry

In SynkriaOps, an accounting voucher progresses through two distinct statuses: DRAFT and POSTED. Understanding this distinction is essential: once posted, a voucher is immutable — in line with SYSCOHADA revised 2019 requirements (art. 24) and accounting integrity rules. The only way to correct it is through a contra-entry (reversal).

CharacteristicDRAFTPOSTED
Modifying linesYesNo
DeletionYes (if never posted)No
NumberingTemporary (not yet assigned)Final — VTE-2026-000001
Appears in general ledgerNoYes
Included in trial balanceNoYes
Included in FEC exportNoYes
Protected by SHA-256 hashNoYes

When you click Post, SynkriaOps executes three sequential operations that guarantee integrity:

1. Sequential numbering via pessimistic lock

Section titled “1. Sequential numbering via pessimistic lock”

The number is assigned through a PostgreSQL transaction with SELECT … FOR UPDATE on the journal counter. No number can be skipped or duplicated, even with concurrent users.

Examples of generated numbers:

  • Journal VTE → VTE-2026-000001, VTE-2026-000002, …
  • Journal ACH → ACH-2026-000001, ACH-2026-000002, …
  • Journal OD → OD-2026-000007, …

SynkriaOps computes: SHA-256(voucher_content + previous_voucher_hash_same_tenant). This chaining guarantees that any subsequent tampering is immediately detectable — the chain breaks.

A BEFORE UPDATE / BEFORE DELETE trigger on the entry lines table blocks any modification of the amount, account, date columns for posted vouchers. This protection applies even to direct database access.

While the voucher is in DRAFT status, correction is straightforward:

  1. Go to Accounting → Vouchers, locate your draft.

  2. Click the voucher to open it in edit mode.

  3. Modify lines: amounts, accounts, labels, or add / remove lines.

  4. Verify that total debits = total credits (the red banner disappears once balanced).

  5. Click Save to keep the draft, or Post to finalise.

Correcting AFTER posting — the contra-entry

Section titled “Correcting AFTER posting — the contra-entry”

A contra-entry (reversal) is a mirror entry: it uses exactly the same accounts and amounts, with debits and credits swapped. Both vouchers (original + contra-entry) coexist in the general ledger and offset each other.

  • Invoice posted with an incorrect amount
  • Wrong general ledger account used
  • Voucher posted to the wrong journal
  • Duplicate entry
  1. Open the posted voucher to correct in Accounting → Vouchers.

  2. Click Reverse (button at the bottom of the page or in the action menu).

  3. Choose the reversal date:

    • Same date as the original voucher (recommended if the error is in the same fiscal year)
    • A later date (if the original fiscal year is closed)
  4. SynkriaOps automatically creates a new DRAFT voucher with all signs swapped. Review the lines.

  5. Click Post to definitively record the reversal. A number is assigned (e.g. OD-2026-000012).

  6. If necessary, create the corrected voucher with the right information.

Worked example — reversing a sales invoice

Section titled “Worked example — reversing a sales invoice”

Situation: you posted a sales invoice for XAF 1,500,000 excl. VAT + 18% VAT (XAF 270,000) = XAF 1,770,000 incl. VAT, but the client rejected the service.

Original posted voucher (VTE-2026-000018):

AccountLabelDebitCredit
411025Customer SOTRANB1,770,000
701000Sales — Services1,500,000
44310000Output VAT 18%270,000

Contra-entry created (OD-2026-000009):

AccountLabelDebitCredit
701000Sales — Services (reversal)1,500,000
44310000Output VAT 18% (reversal)270,000
411025Customer SOTRANB1,770,000

After reversal, the net balance of account 411025 for this transaction = 0. The customer owes nothing.

ErrorCauseSolution
”Posted voucher — edit not allowed”Attempting to edit a posted voucherCreate a contra-entry instead
”Fiscal year closed — posting not allowed”Date falls in a closed yearChange the date or request reopening (ADMIN)
“Debit ≠ Credit”Unbalanced voucherAdd or correct a line
”No fiscal year found for this date”Date outside any open fiscal yearCheck fiscal years in Settings → Fiscal years
”Number already in use”Numbering conflict (rare)Retry — the pessimistic lock resolves automatically