Published
Visa and Mintoak finalised a regional partnership yesterday that consolidates in-store payments, real-time reporting, automated banking, and retention analytics into a single cloud API for SME merchants. The dashboards will be slick. The data lives in Visa's cloud, optimised for Visa's products. Here's why an independent merchant ledger still matters — and the cheapest way to keep one.
Single cloud API
Visa × Mintoak unified merchant rail, June 17 announcement
Bundles in-store payments, dynamic real-time reporting, automated banking services, and merchant retention analytics. Slicker than what most Malaysian SMEs use today. Also more centralised than what most Malaysian SMEs use today.
The upgrade itself is mostly good for merchants. Real-time reporting beats end-of-day batch files. Automated banking services beat manual reconciliation. Retention analytics beat guessing whether a customer is about to churn. If you're running a Klang Valley F&B outlet, a Shah Alam retail shop, or a Subang services SME, this is going to land in your POS over the next 12 months whether you opt in or not.
The unstated trade-off: the data layer becomes one external system's job to maintain, store, and analyse. That system is optimised first for Visa's revenue (interchange volumes, card retention, premium tier upsell) and second for your margin. Same data, different objective function.
Real-time gross, refund rates, top SKUs, "your customer churn risk" scores. None of this is wrong. All of it is partial — your suppliers, your rent, your fuel costs, your wages don't appear. The dashboard makes you feel informed about a small slice while you stop tracking the rest.
"Offer this customer a credit-card upgrade" or "this merchant should accept Visa Direct" are the actions the analytics drive. Useful sometimes. Not always aligned with your margin — a credit-card customer pays you the same and costs the bank more in interchange, which the rail recovers from your MDR over time.
Today switching a POS or acquirer is annoying. After 24 months of unified analytics under one rail, switching means losing your customer-history report, your retention scores, your real-time view. The lock-in isn't formal; it's the workflow cost of starting over.
When the dashboard goes down, you don't just lose POS — you lose your reporting view, your cash-flow forecast, the lot. Local backups stop being optional. They become the answer to "what do I do when the cloud is down at 7pm Saturday?"
Gross · Fees · Refunds · Settlement
The minimum independent merchant record
Whatever rail you're on — Visa, Mastercard, FPX, DuitNow QR, e-wallet, stablecoin — these four numbers per day, per channel, are the floor. Keep them in a record you control and you can survive any rail change.
The four-number discipline:
Card, DuitNow QR, e-wallet, cash. Daily totals. Not "today's takings" — split by how the money arrived. You can't optimise your channel mix if you can't see it. Open Duitful → Income entry per channel with Category set to the channel name (Card, DuitNow, Boost, etc).
What you actually paid the rail for the privilege. Most Malaysian merchants don't know their effective fee rate per channel — only the headline rate. Log fees as a separate expense per channel (Card-fees, DuitNow-fees, etc). Monthly: total fees ÷ total gross per channel = your real effective rate.
Refunds reduce your gross. Chargebacks reduce your gross AND cost you a fee. Track them separately from regular expenses so you can spot patterns (a particular SKU? a particular sales channel?) before the rail's algorithm flags you as high-risk.
Gross sales today aren't cash today. Some channels settle T+1, some T+3, some weekend-skip. Log the settlement amount when it lands, not when the sale happens. The gap between gross and settled is what kills small-merchant cash flow during slow weeks.
Mintoak / Visa rail gives you
Your independent ledger holds
These don't compete. They complement. The rail's dashboard answers "how's the morning going?" in real time. Your ledger answers "how was the quarter, can I afford the lease renewal, is the new channel actually profitable?" in a way that doesn't go away when you switch providers.
One per accepted channel. Card-Visa, Card-Master, DuitNow, TNG, Boost, GrabPay, Cash. Once the dropdown is seeded, daily entries take 15 seconds.
When the acquirer's statement lands monthly, log each channel's fees as a separate expense entry with matching category (Card-Visa-fees, etc). Reports filter on substring match — typing -fees shows you the full fee picture across all channels.
Sunday evening: open the rail's dashboard, open Duitful's Reports for the week, compare gross and fees by channel. The discrepancies catch acquirer errors, terminal misconfigurations, and the occasional miscategorised entry. Five minutes weekly beats four hours quarterly.
Settings → Export CSV → save with the month name. Even if Duitful disappears, even if your rail switches, even if you sell the business — the buyer/accountant/regulator gets a clean CSV with everything they need.
Honest answer: for a single-channel small SME (say, an Instagram-only sole prop accepting only DuitNow QR), the rail's reporting may genuinely be enough. The independent ledger overhead pays back at the moment you have:
One acquirer for cards, DuitNow direct from the bank, a separate e-wallet plugin, an occasional Stripe invoice for foreign customers. Each gives you a partial view. Only you can stitch them together.
Rent, payroll, inventory purchases, transport fuel. The rail's dashboard shows "your margin trend" using its assumptions about your costs — almost always optimistic. Your real margin needs your real costs.
Most acquirer dashboards show 12–24 months. Your business decisions (lease renewals, equipment upgrades, business loans) need 36–60 months. Your own CSV archive is the only place that holds that.
Foreign suppliers, expat customer payments, cross-border B2B (covered separately in the stablecoin merchant fees guide). The unified rail handles domestic well; cross-border is still your independent-ledger problem.
No, accept it. The friction reduction is real and the dashboards help. The point of an independent ledger isn't to refuse the rail's data — it's to keep your own record alongside it so the rail's dashboard remains useful but not the only source of truth.
For what's in their pipe, yes. For what isn't (suppliers, wages, fuel, rent, off-rail sales, supplier rebates), no. The rail can't analyse what it doesn't see. Most SME margin lives in the things the rail doesn't see.
The Ringgit stablecoins for merchants guide is about lowering fees on the rail itself. This guide is about keeping your own record alongside whatever rail you're on. Related but different lever — one is about the cost side, this one is about the visibility side.
Probably not for the year-end books — your accountant's software handles that. Duitful sits at the front line — the daily/weekly capture before things get re-entered into the accounting system. If your current workflow is "type everything into SQL on Friday from a stack of receipts," that's the gap. Capture in Duitful as it happens, export CSV to your accountant monthly.
Anything you log in Duitful stays on your device, encrypted with your passcode. Customer-level data (names, emails) typically belongs in your CRM rather than Duitful; what you'd track in Duitful is aggregate transaction patterns, not individual identities. See the privacy policy for the full picture on how on-device storage works.
Five-minute Duitful setup gives any Klang Valley merchant the four numbers (gross, fees, refunds, settlement) that survive any rail change — Visa, FPX, DuitNow, stablecoin. The dashboard moves; your numbers stay yours.
Open Duitful →