If you're shipping anything that takes money in Indonesia, two names come up before all others: Midtrans and Xendit. They're both solid, both support the payment methods Indonesians actually use, and both will get you live. But they're tuned for different kinds of projects, and picking the wrong one means either fighting the API or migrating later. Here's a developer-level comparison, plus the QRIS basics you need either way.
QRIS is the backbone — start there
Whatever gateway you pick, QRIS (the national QR standard) is non-negotiable for the Indonesian market: one QR that works across every bank and e-wallet. Good news for your budget — the QRIS merchant fee is regulated by Bank Indonesia at 0.7% per transaction, the same on both gateways. So QRIS pricing is not a differentiator; the developer experience and the surrounding features are.
Midtrans in one paragraph
Midtrans is part of the GoTo group, which gives it one concrete advantage: native GoPay integration — Indonesia's largest e-wallet. Customers can be redirected straight into the GoPay app instead of scanning a QR. It tends to have faster settlement, a large library of ready-made plugins for popular CMS and e-commerce platforms, and the deepest pool of Indonesian-language tutorials and community — which matters a lot if your team is junior or local. The trade-off: it's focused on receiving payments.
Xendit in one paragraph
Xendit's reputation is the clean, modern API and genuinely good docs — the nicer developer experience if you're building something custom and API-first. Its standout feature is Disbursement: programmatically sending money out to bank accounts. If your product pays sellers, drivers, freelancers or refunds at scale, that's a big deal Midtrans doesn't cover. The trade-off: no native GoPay redirect (GoPay users still pay via universal QRIS, just with a scan instead of an app hand-off).
How to actually choose
A few honest rules of thumb:
- You're on a CMS or e-commerce platform (WooCommerce, Shopify-style, Laravel with existing packages) → Midtrans usually wins on ready plugins and time-to-live.
- You're building custom and comfortable with APIs → Xendit's API is the more pleasant place to live.
- You need to pay money out, not just take it in (marketplaces, payouts, refunds at scale) → Xendit, for Disbursement.
- GoPay redirect UX matters for conversion and your audience leans GoPay-heavy → Midtrans's native integration is smoother than a QR scan.
- Faster settlement is critical to your cash flow → lean Midtrans.
For a lot of marketplaces the real answer is both: Xendit for disbursement to sellers, plus whichever fits your collection UX best.
The gotchas nobody mentions
- Webhooks are your source of truth, not the redirect. Don't mark an order paid because the user landed back on your success page — confirm via the gateway's server-side notification/webhook, and make the handler idempotent.
- Settlement time ≠ transaction time. Money confirmed today isn't money in your account today. Model that in your cash-flow and your seller payouts.
- UU PDP applies to you. The moment you store customer data tied to payments, Indonesia's Personal Data Protection Law is in scope — consent, a processing policy, and sensible data handling. Don't store card-adjacent data you don't need.
- Test mode lies a little. Sandbox behaviour for QRIS and e-wallets doesn't always match production edge cases. Budget time for a real-money smoke test before launch.
There are other players worth a look depending on your case — DOKU and iPaymu among them — but for most new builds the decision is Midtrans vs Xendit.
If you'd rather not build it in-house
Payment integration is one of those tasks that looks like "just add a button" and turns into webhooks, reconciliation, payouts and edge cases. If it's outside your team's wheelhouse, studios that build Indonesian payment and platform integrations — for example H-Studio — can take it end to end. Either way, the decision framework above is the same.
FAQ
Is QRIS cheaper on Midtrans or Xendit?
Neither — the QRIS merchant fee is regulated at 0.7% on both. Choose on developer experience and features, not QRIS price.
Which is better for a custom-built product?
Xendit, generally — cleaner API and better docs for API-first builds. Midtrans shines when you're on a CMS with ready plugins.
I need to pay out to sellers — which one?
Xendit, for its Disbursement feature. Midtrans focuses on collecting payments, not sending them.
Do I need both?
Many marketplaces do: Xendit for payouts plus the best collection UX for their audience. For a simple checkout, one is enough.
Takeaway
Midtrans and Xendit are both good — they're just good at different things. CMS and GoPay-heavy, fast-settlement shops lean Midtrans; custom, API-first products and anything needing payouts lean Xendit. Decide based on what your product does with money, wire up webhooks properly, and remember UU PDP the moment you store customer data.
Top comments (0)