The end of the month arrives. You open your POS system report and see total sales of Rp 48.750.000. Then you open your BCA mobile banking and see that the closing balance minus the opening balance, accounting for expenses paid, leaves you roughly Rp 2 juta short of where you expected to be. You check again. The numbers still do not match.
This is bank reconciliation: the process of confirming that your internal sales and expense records match what actually moved through your bank account. When it matches, you have confidence in your books. When it does not, something requires investigation, whether it is an error, a missing record, a timing difference, or occasionally something more concerning.
For cafe and food business owners specifically, the reconciliation has more moving parts than most because revenue comes from multiple channels with different settlement timing. Cash sales settle immediately. QRIS settlements typically arrive the next business day. GoFood and GrabFood settlements come weekly or biweekly, often as a net amount after platform commission has already been deducted. Each of these channels requires its own tracking.
Why the numbers rarely match on the first check
Three categories of differences account for the vast majority of reconciliation gaps.
Timing differences. A QRIS payment on the last day of March may not settle into your BCA account until April 1. Your POS system recorded the sale in March. The bank records it in April. This is not an error. It is a timing difference that resolves itself once you account for outstanding settlements at the end of each period. The fix is to track your settlement float: what was processed but not yet received in cash by the close of the month.
Missing expense records. You paid Rp 2,3 juta to a supplier in cash on a Tuesday without recording it. The cash left your drawer, so your physical cash count is short relative to your POS total. If you also made a bank transfer later that week to buy something small and forgot to note it, the bank statement reflects the transfer but your expense log does not. Each of these gaps creates a discrepancy.
Platform commissions and fees. GoFood typically settles net of its commission. If an order total was Rp 85.000 but your settlement shows Rp 72.250, that difference is the platform fee. If your POS records the full order value as revenue but the bank only receives the net settlement, you will always appear to be short. The reconciliation requires you to record the full revenue and the commission as a separate marketing expense, so the math works out to the net settlement received.
Building a workable monthly reconciliation process
The goal is not zero discrepancy on the first check. The goal is a documented explanation for every difference, and a final reconciled balance that confirms your records are complete.
Start by pulling three things: your POS daily sales report for the month, your bank statement for the same period, and a log of any expenses paid in cash rather than through the bank. Most modern POS systems used in Indonesian cafes can export a monthly summary by payment type. Request that export and keep it alongside your bank statements for the same month.
Then work through this sequence. First, identify your opening and closing balance in the bank. Second, list all income deposits in the bank statement and match them to your sales records by payment channel. For QRIS and GoPay, the settlement dates may differ from sale dates, so match by settlement batch rather than individual transaction. Third, list all expense payments from the bank statement and match them to your expense log. Fourth, list any cash income or expenses not reflected in the bank account and account for them separately in your cash-on-hand tracking. Fifth, calculate the expected closing balance and compare it to the actual bank closing balance.
Any remaining difference after you have worked through these steps either has an explanation you have not identified yet, or represents an error that needs correction.
Common sources of unexplained differences in food businesses
A few patterns appear regularly when food businesses find reconciliation gaps they cannot immediately explain.
Refunds and cancellations that were processed in the system but not physically returned to the customer, or vice versa. A GoFood order that was canceled after the food was prepared means the platform may have reversed the charge, reducing your settlement, while the cost of the ingredients was already incurred. This appears as a smaller-than-expected settlement that has nothing to do with bookkeeping error.
Manual discounts given by staff that were not entered into the POS. When the counter staff gives a regular customer a Rp 10.000 discount without ringing it through, the cash collected does not match the POS total for that transaction. Over a month, multiple undocumented discounts can create a material gap.
Bank charges and interest. BCA and other banks charge monthly admin fees and sometimes transaction fees for certain transfers. These appear in the bank statement as small deductions. If you do not record them as expenses, the bank's closing balance will consistently be slightly lower than your calculated balance.
How often to reconcile, and the case for monthly
Some businesses do this daily. That level of frequency catches errors immediately and makes the process fast because there is less to review. For a cafe with 80 to 150 transactions per day, daily cash reconciliation is standard practice even if the full bank reconciliation is monthly.
Monthly bank reconciliation is the minimum we would recommend. Quarterly reconciliation means you are carrying three months of potential errors before finding them. By that point, you may no longer be able to locate the underlying receipts or remember the context for unclear transactions.
Monthly reconciliation also means that your books for each month are closed and confirmed before you move on to the next one. That discipline makes the annual filing straightforward, because each month's numbers are already verified rather than reconstructed.
We built Ledgerowl's bank sync feature specifically to make this process faster for business owners who do not have time to run a full reconciliation manually every month. When your BCA or Mandiri account is connected, the incoming and outgoing transactions are pulled automatically and matched against the categorized records in your ledger. You still need to review the result, confirm that settlement amounts from GoFood match what you recorded as revenue, and note any cash transactions not in the bank. But the starting point is a structured comparison rather than a blank spreadsheet.
The reconciliation gap you cannot explain is worth more of your attention than the gap you have already traced. An unexplained Rp 500 ribu difference that reappears every month is either a systematic recording error or something worse. Finding it early is always better than finding it at filing time.