Skip to content

Bank and M-Pesa reconciliation

Reconciling means proving that what your books say about an account matches what the bank or M-Pesa says about it. Upscale does this by importing the statement, matching each line against your ledger, and refusing to finish until the two closing balances agree exactly.

M-Pesa is treated as a first-class account, not an afterthought. If your till or paybill is where most of your money arrives, you can reconcile it the same way you reconcile a bank account.

Importing a statement

Export the statement from your bank or from the M-Pesa organization portal, then upload the file.

Upscale reads the file and shows you a preview before anything is saved. The preview tells you:

  • which format was recognised
  • how many rows were read, and how many could not be
  • how many rows you have already imported, which will be skipped
  • the date range, total money in and total money out
  • the first few rows, so a wrongly read column is obvious immediately

Nothing is written until you confirm. If a column looks wrong in the preview, fix the mapping rather than importing and cleaning up afterwards.

M-Pesa statements

The M-Pesa organization statement is recognised automatically. Upscale reads the Receipt No., Completion Time, Details, Paid In, Withdrawn and Balance columns, and understands the paybill variants that add the payer number and the account reference your customer typed.

Other banks

Common Kenyan bank exports are recognised where we have confirmed the format. For anything else, map the columns once: which column holds the date, the description, the amount (or the separate money in and money out columns), and the reference. The mapping is saved against the account, so the next statement from that bank imports without any setup.

Re-importing is safe

Export ranges overlap. If you download October and then download September to October, the overlapping rows are recognised and dropped rather than imported twice. Upscale identifies each row by its reference where the bank provides a stable one, and by its date, amount and running balance where it does not.

You can re-upload the same file as many times as you like. The second import writes nothing.

Matching

Once rows are imported, Upscale tries to match each one to a line already in your books.

Matched automatically

If a payment was captured through the M-Pesa integration, its receipt number is already recorded against the payment. When that same receipt number appears on the statement, the match is exact and Upscale applies it for you.

This is the practical benefit of taking payments through Upscale rather than recording them by hand afterwards: the reconciliation largely does itself.

Automatic matches are still shown, and any of them can be undone with one click.

If two ledger lines could both be the exact match, Upscale matches neither and asks you to choose. It will not guess between two candidates.

Suggested

Where there is no exact reference, Upscale offers candidates. A candidate must have the exact same amount. Amount is never treated as approximate: a transaction that is close but not equal is a different transaction, not a weaker match.

Candidates are ranked by how close the dates are and how well the descriptions correspond. You confirm the one that is right.

Matched by hand

You can search for and pick any line yourself, including:

  • splitting, where one statement line settles several ledger lines
  • combining, where several statement lines settle one

A common case is an M-Pesa settlement into your bank account, where one bank credit corresponds to a transfer covering many individual receipts.

Whichever way you match, the lines you pick must add up to the statement line exactly. A partial match would let a reconciliation finish while the account was still out.

Lines your books have never seen

Bank charges, ledger fees, interest received, till transaction fees: these appear on the statement because the bank took or added money without you raising a document.

Select the row and record it directly from the statement. Choose the account it belongs to, Upscale posts the entry, and the row is matched to what it just created.

Do not try to exclude these rows instead. The money really did move, so if it is not recorded, the account can never be reconciled again. Excluding is reserved for import problems such as a duplicate row the system could not detect, never for real money.

Finishing

Enter the closing balance printed on the statement. Upscale compares it against what your books say the account holds on the same date.

You can only complete the reconciliation when:

  • the two closing balances are equal, and
  • every statement row is matched

If there is a difference, Upscale tells you exactly what it is and does not let you continue. A reconciliation that completes with a difference has not reconciled anything.

Once complete:

  • every matched ledger line is stamped as reconciled, and shows a tick in the account register
  • the statement rows are sealed
  • a record of the reconciliation is kept, showing both closing balances and the counts by how each row was matched
  • you are offered the option to lock the period for banking, so the figure the bank saw cannot be changed afterwards

Reconciling and then locking is the strongest position your books can be in.

Undoing

A completed reconciliation can be undone as long as the period is not hard locked. Undoing removes the reconciled stamps and deletes the record. It does not touch a single figure: matching never changes money, it only records which ledger line corresponds to which statement line.

What is still outstanding

The unreconciled items report shows two things separately, because they mean different things:

  • Unmatched statement rows are money the bank saw that your books do not know about.
  • Unreconciled ledger lines are money your books claim that the bank never saw.

Both are grouped by age. The second list is usually the more serious of the two, which is why the report never merges them into one figure.