The settlement that never arrived
Your ledger says a merchant received ₦50,000, while the provider file has no matching settlement. If the system silently marks the row settled, the team loses the chance to find a missing transfer. Create an exception with the source records, owner, and due time.
Match on stable identifiers
Compare provider reference, internal operation ID, amount, currency, direction, and final status. Store source files or messages so a reviewer can repeat the match. A matching amount alone is weak evidence when many payments share a value.
Keep exceptions out of automatic release
Place missing, duplicate, and mismatched transactions in separate review queues. Verify capture separately from settlement. A settlement mismatch must not authorize settlement-dependent release or erase a verified capture. Record each manual adjustment as a new approved ledger entry.
Measure the queue that matters
Group open cases by age, amount at risk, provider, and reason. A count of open cases alone hides one large missing settlement among many small fee differences. Alert when an expected provider file is absent, even if the import job reports no row errors. Review old cases with the ledger owner and the provider contact. Record a next action and due time for each case, then test that a failed import cannot produce a reassuring empty report.
Define closure states
An exception can close as matched, provider-corrected, internally adjusted, refunded, or written off under an approved rule. Each closure type needs different proof. A late provider row may close a missing-settlement case after exact ID matching; an amount mismatch needs a fee explanation or adjustment. Do not close a case just because the amount eventually equals zero. Keep the original gap, every imported source row, and the decision that made the final ledger correct.
Reconcile both sides of the ledger
Suppose internal records show payments P-1 and P-2 for ₦10,000 each, while the provider’s settlement contains P-1 and P-3. Matching only provider rows finds P-3 but misses the absent P-2. Matching only internal rows finds P-2 but misses the unexpected P-3. Build two exception sets: internal without provider, and provider without internal. For each exception, store the provider settlement ID, transaction reference, amount, currency, fee, and the internal payment state.
Keep the unmatched value out of automatic merchant release. The provider’s settlement API exposes settlement records and their transactions; use the provider’s exact identifiers rather than a customer name or timestamp. If P-2 appears in the next settlement, attach it to the open case and close it with that source record. If P-3 was a genuine payment omitted from your ledger, fix the import path and post a reviewed journal. Never create a balancing entry without a source. The daily report should show the amount and age of open cases, not just the number of matched rows.
Prove completeness before closing the gap
A captured charge and a bank settlement are different events. The ledger can record a verified capture before settlement; a missing settlement then creates a receivable exception. Hold only the release that depends on that settlement under your product policy. Do not erase a real capture or mark the merchant paid to hide a settlement gap.
For a synthetic ₦10,000 capture with a ₦150 fee, expected net settlement is ₦9,850. If the provider sends ₦9,800, the gap is ₦50. Check the fee rule and source records before any adjustment. A correction must use a new approved journal linked to the original; it must not repeat the ₦10,000 capture credit.
PAY-10 has a missing row that arrives with the exact amount and currency on day two. Import it twice: both runs attach to the same case, closure happens once, and no second credit appears. Test fee differences separately. Get every page of the provider’s settlement transaction list and compare membership in both directions. A matching footer can still describe a file that omitted a payment. Paystack’s settlement API provides settlement and transaction endpoints; your importer must handle pagination and incomplete retrieval before it reports a complete match.
Evidence to retain
Keep both source records, matching rule, exception owner, approval, and adjustment entry. The exception must remain traceable after closure.
Sources
Put this into practice
Run one provider file through staging and matching. Review every item that is missing, duplicated, or different by amount. See our reconciliation race conditions and payment gateway testing service. To check a live flow, request a security review.