An invoice marked paid is a claim. A deposit in your bank account is a fact. Reconciliation matches the two so billing belief and bank reality agree — and collections stops chasing money that already landed.
Sonic's bank rec is operationally real but still prototype-grade on edge cases. Expect a human queue for messy wires, not magic autopsy of every statement line.
The four headline metrics
| Metric | Problem it signals |
|---|---|
| Unmatched deposits | Someone paid; you may still be chasing them |
| Unmatched invoices | Books say paid; bank disagrees |
| Matched this month | Progress |
| Variance | Near-matches — fees, FX, rounding |
Both unmatched columns are bad in opposite directions.
What Sonic matches on
Candidate scoring uses:
- Amount (with tolerance for variance)
- Reference text on the statement line
- Paid by vs billed party name and contacts
Subscription workspace → customer catalog + customer contacts.
Shipment workspace → shipper catalog + shipper contacts — never the subscription customer table for freight.
Exact payer string match alone fails on real banks. Controllers often pay from personal accounts, parent entities, or AP desks with abbreviations.
Payment processor payouts
Stripe and Razorpay mark invoices paid when the customer checks out. Bank rec still matters because:
- Payouts arrive batched and net of fees.
- One deposit may settle dozens of charges.
- Variance is the fee gap, not a customer shortfall.
Reconcile payouts in bank rec; do not expect deposit == invoice total.
Partial payments and multi-invoice deposits
| Situation | What should happen |
|---|---|
| Customer pays 60% now | The partial amount matches; the invoice stays open; dunning pauses rather than stops |
| One wire covers three invoices | The deposit splits across all three, not just the largest |
| A few cents of rounding or FX difference | Recorded as variance, not forced to zero |
| A match was wrong | It gets undone and redone correctly before close, not left as-is |
The failure mode to design against is forcing a deposit onto whichever open invoice is largest just to make the unmatched-deposits count hit zero before a deadline. That's how AR looks clean on Friday and wrong on Monday.
Collections interaction
Watchtower ages sent unpaid only. When bank rec confirms payment:
- Invoice → paid
- Dunning sequence stops
- Recovery metrics update
If collections emailed after cash landed, the failure is usually match latency, not cadence aggression. Work unmatched deposits daily during close.
Journal and ERP
Matched cash should align with journal cash receipts your controller expects. Sonic links invoice → match → journal trail; ERP remains book of record for posting.
Watch out for
- Card paid ≠ bank matched — both questions matter.
- Shipment mode uses shipper identity in payer matching.
- Fees are not customer debt — book variance separately.
- Do not mark paid to silence dunning without bank truth if close depends on cash.
- Prototype honesty — unusual statement formats may need manual rules; report gaps rather than forcing match.