Skip to content
All blog
Payments Reconciliation Malaysia Process

Bank transfers and manual payments you still receive

Chong 6 min read

Almost every Malaysian store that sells online also receives payments that never touched its checkout. A wholesale customer transfers against an invoice. A regular buyer messages on WhatsApp and pays directly. A walk-in pays by transfer instead of card.

These are usually a modest share of revenue and routinely the largest share of unmatched bank lines, because they arrive with no structured reference and no system expecting them.

Why manual payments persist

Not because anyone failed to automate. Because for certain customers they are genuinely better.

Business customers pay against invoices, on terms, in their own payment run. That is how B2B works and no checkout replaces it.

Larger amounts avoid percentage fees. A customer transferring a substantial sum saves you the gateway fee entirely, and on a big order that is a real saving worth accommodating.

Existing relationships have their own habits. A customer who has ordered by phone for years is not going to start using your website, and insisting is a good way to lose them.

Some sales happen off-platform. A conversation in a shop, an enquiry by message, an order taken at an event. All perfectly legitimate revenue, none of it arriving through a payment gateway — see running Shopify alongside Shopee and TikTok Shop for the multi-channel version of the same problem.

So the goal is not to eliminate them. It is to make them cheap to process.

The matching problem in its purest form

A gateway payout at least comes with a report. A bank transfer comes with a narration field containing whatever the payer chose to type, which is frequently their own name, sometimes nothing useful, and occasionally a reference to a different invoice.

The failure modes are consistent and worth recognising.

One transfer covering several invoices. Common in B2B and it breaks any one-to-one matching rule. The payment has to be split across the invoices it settles, in the right amounts.

Partial payments. A customer pays part of an invoice now and the rest later. The invoice is neither settled nor unsettled, and treating it as either is wrong.

Rounded or netted amounts. The transfer is short by a small amount because the customer deducted a bank charge, or applied a credit note you had forgotten about.

Payments from a name you do not recognise. A director's personal account, a group company, a staff member paying on behalf of the business. The amount matches nothing under a customer you know.

None of these are exotic. Between them they account for most of the time spent on manual payment matching, and each one has a defined handling that turns it from a puzzle into a routine.

What makes a transfer identifiable

You have more influence here than you might think, and the interventions are cheap.

Put the reference on the invoice, prominently, with an instruction to quote it. A short, unambiguous reference — not your full invoice number if it is long, because people mistype long numbers. Compliance will not be universal and it will be far better than not asking.

Give business customers their own account number if your volume justifies it. Virtual account numbers, where your bank offers them, turn identification from guesswork into a lookup, because the account the money arrived into identifies the payer.

Ask for a payment advice. For customers who pay several invoices at once, a remittance note saying which invoices are covered removes the splitting problem entirely. Most business customers will send one if asked.

Record who normally pays from where. The mapping between a customer and the account name their transfers arrive under is worth storing the first time you work it out, because it is the same puzzle every month otherwise — see supplier statement reconciliation with AI for the mirror image on the payables side.

Handling the ones that will never match cleanly

Some transfers cannot be identified on arrival, and that is a permanent condition rather than a failure.

Hold them. An unidentified receipt goes to a holding position, not to a customer account by guess and not to income. Guessing produces a wrong allocation that is harder to unwind than an unallocated balance, because it looks resolved.

Then chase them on an ageing basis. An unidentified receipt sitting for weeks is usually a customer waiting for their invoice to be marked paid, and they will eventually ask. Getting there first is better, and it requires somebody to be looking at the list — see when the payout arrives before the report for the same holding-position discipline applied to gateway payouts.

The number that matters is the size and age of the unidentified balance. Small and clearing is healthy. Growing means the identification process is not working.

Where automation actually helps here

Not by eliminating the judgement. By eliminating the search.

Matching on amount and date, proposing candidate invoices for a receipt, remembering that this payer name maps to that customer, splitting a payment across the invoices a remittance advice names, and flagging what it cannot resolve — all of that is mechanical and all of it is most of the work.

What remains is deciding whether a short payment was a bank charge or a dispute, and whether an unfamiliar payer is a known customer under another name. Those are judgements, they need a person, and there are far fewer of them than there are transactions — see automating bank reconciliation with AI.

The measure of whether it is working is how many receipts a person has to look at, not how many arrive.

Common questions

Why do manual bank transfers take so much reconciliation effort?

Because they arrive with no structured reference. A gateway payout comes with a settlement report identifying every transaction inside it, while a bank transfer carries only whatever the payer typed into the narration field, which is often just their own name. Identification therefore depends on amount, date and recognition rather than on data.

How do you handle one transfer covering several invoices?

By splitting the receipt across the invoices it settles, which requires knowing which those are. A remittance advice from the customer removes the guesswork entirely and most business customers will provide one if asked, so requesting it is more effective than trying to infer the split from the amount.

What should you do with a payment you cannot identify?

Hold it in an unallocated position rather than allocating it to a customer by guess or coding it to income. A wrong allocation looks resolved and is harder to unwind later than an open balance, so the receipt should sit unidentified, be aged, and be chased — with the size and age of that balance treated as the health measure.

Should online stores stop accepting manual payments?

Generally no. Business customers pay against invoices on their own terms, larger transfers avoid percentage processing fees entirely, and long-standing customers have habits worth accommodating. The productive goal is making manual receipts cheap to identify — clear references, per-customer account numbers where available, and a stored mapping of payer names to customers.


Related: automating bank reconciliation with AI · reconciling two gateways into one bank account · managing cash on delivery


See what you could build

Start a free trial and describe what your business needs in plain language — SmartB Studio builds the module for you.

Start free trial
Get started

No credit card · Cancel anytime · Your data stays yours