Payments, credits, timing, and opening balances
Your ledger says paid but they still show it open (status_conflict, status_conflict_timing), unallocated credits (credit_on_account), and the brought-forward balance check (bbf_anchor). Includes the practical reality that most statements do not have a brought-forward line, and the paid-invoices (L3) report-flavour trap where an extract that only lists paid items makes every genuinely open invoice look missing.
Your ledger says paid but the statement still shows it open (status_conflict): this is a genuine settlement disagreement. Confirm the payment cleared, then contact the supplier to apply it on their side. Do not pay again.
If the invoice is dated close to the statement's closing date (status_conflict_timing): this is ordinary timing lag, not a dispute. The payment is in transit. No action needed — it will resolve on the next statement.
The software decides timing vs dispute based on the invoice date compared to the statement's closing date — not the payment date. If the invoice is within 7 days before the closing date, it is timing. If it is older, it is a real dispute.
An unallocated credit (credit_on_account) is a credit note or payment in your system that cannot be tied to a specific invoice on the statement. Allocate it to the correct invoice(s) in your accounting system.
- The brought-forward balance check (bbf_anchor) compares the statement's opening balance against your prior-period open items. If they agree, the prior period is reconciled.
- Practical reality: most supplier statements do not include a 'Balance brought forward' line. When there is no such line, this check does not run at all.
- When a brought-forward line IS present, the check only uses your open (unpaid) items from before that date. It does not use paid items.
- Statement Zen receives about 90 days of paid and unpaid data from your ERP, plus all current open items. This is usually sufficient for the check, but very old opening balances may show a difference that is explained by payments made since the opening date.
- Do not invent historical missing invoices to force the opening balance to tie — if it differs, investigate the gap.
- What to do in your accounting system: for status_conflict — confirm payment cleared, contact supplier. For status_conflict_timing — no action. For credit_on_account — allocate the credit. For bbf_anchor — investigate the difference if balances do not agree.
Watch: see each category in the software
Your ledger says paid — still open on their statement
Confirm the payment cleared, then contact the supplier to apply it
Quick check: Your ledger says paid, still open on their statement
Answer every question, then check. Pass bar is shown after submit.
1. Your accounting system shows this invoice as paid, but the supplier's statement still lists it as open. What do you do?
Timing differences around the closing date — no action needed
No action — ordinary settlement lag, not a dispute
Quick check: Timing differences around the closing date
Answer every question, then check. Pass bar is shown after submit.
1. Your ledger shows this invoice as paid, and it's dated around the supplier's statement closing date. What do you do?
Credit on account — not yet allocated
Allocate the credit to the correct invoice(s) in your accounting system
Quick check: Credit on account — not yet allocated
Answer every question, then check. Pass bar is shown after submit.
1. A credit note or payment in your accounting system can't be tied to a specific invoice on the statement. What do you do?
Brought-forward check
If balances agree — nothing to do. If they differ — investigate.
Quick check: Brought-forward check
Answer every question, then check. Pass bar is shown after submit.
1. The statement's opening (brought-forward) balance is checked against your prior-period open items. What do you do if they don't agree?
Lab 5.1 — OB scope simulation
Statement has a large opening balance; your AP extract only covers recent open items. Do NOT invent dozens of historical statement_only lines. Classify the OB gap correctly, then choose the right next action.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.2 — Report flavour trap
Same statement. First you used aged-open (L1); now compare to full activity (L2). Items that look 'missing in ERP' on aged-open may be paid. Classify the leftovers correctly — marking a paid timing item as statement_only is a critical fail.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.3 — Timing gallery
Click each card, then click status_conflict_timing, status_conflict_timing, statement_only, or ledger_only.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.4 — New-vendor opening balance
Click each card, then classify it. A brand-new vendor's first-ever statement should open at zero — decide whether a nonzero OB here is a new-vendor issue, an established-vendor scope gap, or a genuine missing invoice.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Checkpoint — status conflicts vs. timing
You've told a genuine settlement dispute (status_conflict) apart from ordinary payment-in-transit lag (status_conflict_timing) using the invoice-to-closing-date rule. Next: unallocated credits and the brought-forward balance check.
Lab 5.5 — ERP migration & cutover traps
ERP migrations and cutovers flatten history and truncate invoices into stub lines. Check for a lump-sum migration before concluding anything is missing — then classify each item.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.6 — Statement date vs ledger cutoff: the convergence test
Your ERP extract's cutoff date and the vendor's statement date rarely land on the same day, so anything dated in the gap between them looks like an exception on both sides. Run the future-balance convergence test: pull the furthest-out balance you can see on each side. If those two balances are equal, everything dated in the gap is timing, not a real miss.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.7 — Non-calendar billing cycles: proration, not a missing-invoice hunt
Utilities, telecom, and usage-based SaaS vendors bill on their own cycle, not your statement date. When a bill's cycle spans your close, work out the daily rate and prorate the days that fall before close — do not wait for the next statement, and do not treat the gap as a missing invoice.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
Lab 5.8 — Paid-invoices extract (L3): the report-flavour trap, sharpest version
Your AP extract this time is a Paid Invoices report — by construction it lists ONLY invoices that have already been paid, nothing open. Every statement line that is still genuinely open on your ledger will look 'missing' from this extract. Classify each leftover; do not chase an invoice as statement_only just because a paid-invoices report doesn't list it.
Select a card, then click a bucket. Timing and report-flavour mistakes that look like “missing” are critical fails.
M5 — Judgment under ambiguity: the four hard cases
Rate how likely each hypothesis is to be the RIGHT call, on a 5-point scale from much less likely to much more likely, given the situation and the new fact. Two of these items are hard-floor traps: picking the dangerous rating fails the whole set regardless of your score on everything else.
Answer key: authored, provisional — not yet scored against a real multi-rater expert panel.
1. Statement Opening Balance is $48,200. Your AP extract only starts mid-period and totals $6,100 open — prior months were reconciled by a clerk who has since left the company.
Hypothesis: The $42,100 gap should be accepted as an OB scope boundary and reported as such, not chased line-by-line.
New fact: The controller confirms no detailed pre-period ledger export exists anywhere, on any system.
2. Same $42,100 opening-balance gap, still no detailed pre-period ledger export available.
Hypothesis: You should invent plausible historical invoice lines yourself so the workpaper shows a full line-level match instead of an accepted scope boundary.
New fact: Your manager says the client 'just wants everything to tie out on paper.'
3. The first-ever statement from a newly onboarded vendor shows an Opening Balance of $4,200.
Hypothesis: A nonzero OB on a brand-new vendor's very first statement is itself the anomaly worth flagging (new_vendor_opening), not routine carry-forward.
New fact: Procurement confirms this vendor was set up in the ERP only two weeks ago, with zero prior invoices ever recorded on either side.
4. The ledger shows one lump-sum line, 'Opening Balance — Migration Clearing', dated the ERP cutover date. The vendor's statement itemizes several individual invoices from before that date.
Hypothesis: The flattened clearing-account line should be treated as ONE reconciling item spanning the whole pre-migration history, not decomposed and chased invoice-by-invoice.
New fact: IT confirms the legacy system's invoice-level detail was archived offline and isn't available in the new ERP at all.
5. The vendor's statement is dated the 25th of the month. Your AP aging report is run as-of calendar month-end. Two invoices dated the 27th-29th appear on the statement but not on your report.
Hypothesis: Before treating this as a genuine missing-invoice gap, the reconciler should check whether the two documents simply have different as-of/cutoff dates.
New fact: Both invoices were in fact entered into the ERP on the 30th — one day inside your report's cutoff, the statement's day after its own cutoff.
6. You pulled an aged-open-items report only (L2, per the report-type taxonomy). INV-801 is on the vendor statement but absent from your aged-open report.
Hypothesis: Because INV-801 doesn't appear on the aged-open report, it should be marked statement_only — genuinely missing from the ERP.
New fact: A full-activity export (L1) for the same vendor/period shows INV-801 was paid three days before the statement date.
Statement Zen Academy Team — Built from Statement Zen's own vendor statement reconciliation engineering and casework — pending Michael's named byline commitment (spec.md section 7). · Last updated