Ilya Shkura
EN UK RU

Cases · Reconciliation

Reconciliation protocol: store orders vs payment processor

Self-initiated case study using synthetic data: a store's order export and a payment processor's export.

15records do not reconcile, each with both values and what went wrong

Goal

A store wanted to know whether its order export and its payment processor's export for 1 August to 1 September 2026 agree: every order that should be paid has a payment for the same amount, and nothing was paid that is not an order.

Challenge

1,200 orders and 1,035 payments. Cancelled orders should have no payment, some orders were charged twice, one payment came in another currency, and some payments have no order at all. A cent of rounding must not count as a difference, and a real difference must not hide inside a total.

Solution

Rules were written down before counting: order_id is the key; the 1,034 paid and refunded orders should have a payment, the 166 cancelled ones none; the order total must equal the payment amount in the same currency, within 0.01. Every order was set against its payments and every payment against its order, and a table was built from the store's total to the processor's.

Outcome

1,022 of 1,034 orders reconcile, 3 of them a cent apart. 15 records do not: 4 paid orders with no payment, 5 amounts that differ, 2 orders charged twice, 1 payment in another currency and 3 payments with no order. The table goes from EUR 249,511.39 of paid and refunded orders to EUR 249,278.77 of EUR payments, line by line. Not checked: whether refunds reached customers (refunds are in neither file), the processor's fees, and whether either file is right on its own.

Service

Reconciliation for your own files

The same method on your exports: definitions in writing first, then an independent recount.