"Every month-end, someone sits with the bKash statement, the Nagad statement, the bank statement and our sales sheet, and ticks line by line. It takes days, and we still find payments we cannot explain." This is reconciliation: checking that every sale was paid and every payment belongs to a sale. Done by hand it is slow and error-prone, and problems surface weeks after they happened.

Why the numbers do not match

Payments rarely line up neatly with orders. Common reasons:

  • The customer pays from a relative's number, not the one on the order.
  • One payment covers two orders, or one order is paid in two parts.
  • The reference field is empty, or says something like "for shirt".
  • Charges are deducted, so the amount received differs from the order total.
  • Courier cash-on-delivery settlements arrive as one lump sum for many parcels, minus their charges.
  • Personal and business transactions are mixed in the same account.

How automated matching works

  1. Collect statements in a consistent format. Get statements from your bKash and Nagad accounts and from your bank as downloadable files, in whatever way your account type offers them, ideally every day. If your account offers an official API or scheduled export, the system can use that instead. Never give anyone, or any tool, your PIN or login.
  2. Standardise them. Each statement has its own layout. The system turns them into one table: date, time, amount, sender, reference, transaction ID and channel.
  3. Match in passes, from strictest to loosest.
    • Order number in the reference and exact amount: matched.
    • Sender number from the order, same amount, within a short time window: matched.
    • Amount and date only: suggested, and a person decides.
  4. Use AI for messy references. AI can read free-text references and notes, such as a name and half an order number, and suggest the likely order. These are suggestions, not final matches.
  5. List the exceptions. Payments with no order, orders with no payment, duplicates and amount differences go to one short list for a person to resolve.
  6. Report daily. A morning summary of what was matched, what is outstanding, and which orders were dispatched without confirmed payment.

What to put in place first

  • One order ID format, and a request to customers to put it in the payment reference. A polite line on the invoice or order confirmation message helps.
  • The expected payment method on each order, so the system knows where to look.
  • A note of how charges and courier deductions appear, so small differences are explained rather than flagged.
  • Separate business accounts where possible. Mixing personal transactions makes matching much harder.

Mistakes and risks

  • Trusting screenshots. A payment screenshot sent on WhatsApp is not proof. Confirm against the statement before marking an order paid, because edited screenshots are a known trick.
  • Letting automation decide refunds or write-offs. Those stay with a person, and your accountant reviews the final figures.
  • Reconciling only at month-end. Daily matching catches problems while the customer and courier still remember the details.
  • No audit trail. Every manual match should record who made it and why.

In-house or with help

With modest volumes, a well-built Google Sheet with lookup formulas, filled daily from statement downloads, works. As volume grows or channels multiply, you need import routines for each statement format, matching rules, an exceptions view and a link to your sales system. Building that is part of my AI and workflow automation work, and it pairs well with a daily sales report.

Smallest first step

Pick one channel, say bKash. For one week, download its statement every morning and match it against the previous day's orders in a sheet. Note every line you could not match, and why. That list of reasons tells you exactly which rules the automation needs. If you would like help building it, get in touch.

Related service AI and workflow automation Claude-powered assistants and automated workflows that take repetitive work off your team, while people keep the final say.