Skip to content
Last updated: Sep 25, 2026

Reconciliation Certification & Adjustment Items ​

OwnerClassificationVersionEffectiveNext reviewStatus
Platform EngineeringInternal0.12026-09-132026-12-13Draft

Purpose. Reference for how a reconciliation clears a mismatch and reaches a certified state, and — the common point of confusion — when a reconciling item is sufficient and when a journal voucher (JV) is required. Covers the variance formula, the three item classes, the certification threshold gate, and the open-adjustment risk.

The variance formula ​

The reconciliation engine (runreconciliation) derives the mismatch per account/period:

unidentifieddifference = glbalance − bankbalance − subledgerbalance − reconciliationitembalance

reconciliationitembalance is the sum of all active periodreconciliationitem rows for the summary. The rollup applies no itemclass filter — Timing, Substantiation, and Adjustment items reduce the variance identically. itemclass therefore classifies intent; it is not a mechanical control.

Item classes and JV implications ​

Item classWhat it assertsJV required
SubstantiationThe GL balance is correct; the item proves its composition (e.g. a prepaid made up of N contracts).No
TimingThe GL is correct; a legitimate timing difference will self-resolve (deposits in transit, outstanding cheques, unswept subledger items).No — clears in a later period
AdjustmentThe GL is wrong; a correction is owed.Yes — only a posted JV corrects the GL

An Adjustment item documents that a correction is needed, but posting the item does not change the GL. The Create adjustment journal action turns that documented intent into a posted JV.

Certification gate ​

The engine sets a tolerance flag, not a status:

iswithinthreshold =
  |unidentifieddifference|           ≤ certificationthresholdamount   (amount check)
  |unidentifieddifferencepercentage| ≤ certificationthresholdpercent  (percent check)
  combined per certificationthresholdandor ('AND' = both; otherwise OR)
  → NULL when no threshold is configured

Clean means within tolerance, not zero. Status is advanced separately:

  • Auto-certification (autocertifyaccounts) stages status = 'System Certified' for accounts matching an active ruleset — query, manual-mapping, or criteria-based (rule engine). The variance/risk bar lives inside the ruleset, not in code. Accounts with accountsettings.excludefromautocertification = true, or already in Approved/Reviewed/System Certified, are skipped.
  • Manual certification — accounts matching no ruleset are certified by the preparer and approved by the reviewer.
  • Decertification — a later run that detects a changed GL balance returns the account to System Decertified, reopening the mismatch.

The open-adjustment risk ​

Because the variance math counts Adjustment items, an account can reach reconciled / within-threshold / System Certified while still carrying an un-posted Adjustment — a known misstatement documented but never corrected. No current link binds an Adjustment item to its JV. The Create-adjustment-journal back-link (journalvoucherheader carrying sourcemodule / sourcereferencetype / sourcereferenceid to the periodsummary) closes this gap so an open adjustment cannot present as clean.

Revision history ​

VersionDateAuthorChange
0.12026-09-13Platform EngineeringInitial draft — variance formula, item classes, certification gate, open-adjustment risk.

Finaisse Internal — Confidential. Not for external distribution.

Finaisse Internal — Confidential. Access-restricted; not for external distribution.