Payments moving money between an entity own accounts were recorded as expenses alongside the transactions they settled, double-counting a year of spending.
A payment that settles a credit card is money moving from one pocket to another. On a bank statement it is indistinguishable from a payment to a supplier.
The situation
An operating account and a company credit card, reconciled together for a full year. Every transaction on both was coded to an expense account. The resulting cost figure was substantially higher than the business recognised, and no individual entry looked wrong.
The pattern
The card’s own transactions are the real costs: the fuel, the materials, the subscriptions. The periodic payment from the bank account that clears the card balance is not a cost at all — it is the settlement of a liability that the underlying transactions already created.
Record both and every card purchase is counted twice: once as itself, once inside the lump payment that settled it. Because the payment appears on the bank statement with a description that reads like an ordinary outgoing payment, nothing about it invites suspicion. The error scales with the volume of card activity, which means it is largest exactly where it is hardest to spot by eye.
The same shape recurs across several transaction types, and each has to be classified before any coding happens:
Transfers between own accounts are movements. Enter them once, from the side that carries a running balance you can reconcile against, and suppress the mirror entry on the other side. The two sides will not agree in total, because the statement periods do not align — that is timing, not two sets of payments, and it belongs in a note rather than being rediscovered next period.
Loan repayments are mostly balance sheet. Only the interest portion is a cost, so treating the instalment as an expense overstates costs and understates the liability reduction simultaneously.
Deposits and receipts are not negative costs. They belong against revenue or receivables, and netting them into an expense account hides both.
What makes this class of error expensive is that it survives every check that operates within the expense ledger. The entries balance, they reconcile to the bank, and they foot correctly. The mistake is one level up — in the decision about what was allowed to be an expense in the first place — so it can only be caught by a step that runs before coding, not after it.
Engineering takeaway — Separate movements of money from costs before anything is coded. An internal transfer is entered once, from the side that has a balance to reconcile; recording both sides double-counts every transaction the transfer settled.