# Xendit vs Midtrans: Which Payment Gateway to Pick in Indonesia

> A hands-on backend comparison of Xendit and Midtrans for Indonesian payments — payment methods, fees, DX, and disbursement.

URL: https://www.matthewswong.com/en/blog/xendit-vs-midtrans-payment-gateway-indonesia/

- Author: Matthews Wong (https://www.matthewswong.com/en/about/)
- Published: 2026-07-11
- Updated: 2026-10-12
- Category: Backend

> **Key takeaway:** Pick Midtrans if you mainly collect payments and want the Snap drop-in plus ready CMS plugins; pick Xendit if you build custom on a clean API or need programmatic disbursement to pay out sellers, drivers, or refunds. Both cover Virtual Account, QRIS, GoPay and other e-wallets, cards, and retail at similar fees.

Every Indonesian app I ship eventually hits the same fork in the road: Xendit or Midtrans. They are the two payment gateways that actually matter here, and on paper they look almost identical — both do Virtual Account, QRIS, e-wallets, cards, and retail outlets. The real differences only show up once you are deep in the code, reading webhooks at 2am and reconciling settlements. This post is the comparison I wish I had before wiring up either one on a recent project for an Indonesian client.

I will keep this grounded in what a backend engineer cares about: which payment methods each one covers, how the fees actually stack up, what the developer experience and docs feel like, whether you can pay money out (disbursement), and finally a concrete rule for choosing between them for a startup versus an enterprise. Fees change often, so treat the exact numbers as a snapshot from the official pricing pages linked at the end and always re-check before you sign.

## Payment method coverage

For the core Indonesian payment methods, coverage is close to a tie. Both gateways give you bank Virtual Accounts across BCA, BNI, BRI, Mandiri, Permata and CIMB, universal QRIS that any e-money app can scan, direct e-wallet channels, domestic and international cards, and retail over-the-counter payments at Alfamart and Indomaret. Even GoPay, the channel most people expect to differ, is available directly on both.

- Virtual Account — both support closed and open VA across the major banks; this is still the most-used method for Indonesian checkout.
- QRIS — identical on both, since QRIS is a Bank Indonesia standard; one QR accepts OVO, DANA, GoPay, ShopeePay, LinkAja and every bank app.
- E-wallets — both expose OVO, DANA, and ShopeePay as direct redirect or deeplink channels beyond the QRIS scan.
- GoPay — Midtrans is part of the GoTo group and offers a native GoPay app hand-off; Xendit also lists GoPay as a direct e-wallet channel, GOPAY for one-time payments and GOPAY_RECURRING for recurring ones, which needs an extra activation process with the partner.
- Cards and PayLater — both do Visa/Mastercard/JCB plus BNPL like Kredivo and Akulaku.

## Fee structure compared

Both gateways charge zero setup and zero monthly fees — you only pay per successful transaction. The headline rates are close because a lot of Indonesian pricing is regulated or set by the underlying channel. QRIS, for example, has its MDR set by Bank Indonesia: from 1 October 2026 it is 0% up to IDR 100,000 and 0.7% above for regular merchants, the same on both, although Xendit adds its fixed IDR 4,000 processing fee to every transaction, QRIS included, and Midtrans's pricing page still showed a flat 0.7% when I checked on 12 October 2026. The table below is the snapshot I work from; the important nuance is VAT (PPN): 12% since 1 January 2025, charged on a DPP Nilai Lain of 11/12 of the fee under PMK 131/2024, so an effective 11%. Midtrans adds it on top of every fee except QRIS, GoPay and ShopeePay, where it is already included, and Xendit quotes its fees exclusive of tax, deducted at settlement, except its QRIS rate, which it labels VAT-inclusive.

| Payment method | Midtrans | Xendit |
| --- | --- | --- |
| Virtual Account | ~ IDR 4,000 flat per transaction | IDR 9,000 per transaction, plus the IDR 4,000 Xendit processing fee (list price, October 2026) |
| QRIS | BI MDR: 0% up to IDR 100,000, 0.7% above | BI MDR: 0% up to IDR 100,000, 0.7% above, plus IDR 4,000 processing fee |
| E-wallet (OVO/DANA) | ~ 1.5% per transaction | ~ 3% and up, varies by merchant type |
| GoPay / ShopeePay | ~ 2% (native GoPay hand-off) | Direct GoPay and ShopeePay channels at Xendit's e-wallet rates (see pricing page) |
| Cards (Visa/Mastercard) | 2.9% + IDR 2,000 | 2.9% + IDR 2,000, plus IDR 4,000 processing fee |
| Disbursement / payout | Limited / not a core product | Payout to 450+ banks and e-wallets, fee per payout |

> Do not quote these rates to a client as final. E-wallet fees in particular are negotiated per merchant category and change with volume, and VAT is added on top of most of them. Always pull your own numbers from the live pricing page and, for real deals, from a signed rate card.

## Developer experience and docs

This is where Xendit earns its reputation. Its API is clean, REST-first, and consistent — you create an invoice or a specific payment-channel object, you get back a well-shaped JSON, and the webhook payloads are predictable. The docs read like they were written by engineers, with copy-paste examples and official SDKs for Node, PHP, Python, Java, and Go. If you are building a custom checkout from scratch, Xendit is simply the more pleasant place to live.

Midtrans is not bad — its Snap drop-in is genuinely fast to ship, and it has the widest set of ready-made CMS and framework plugins (WooCommerce, Laravel packages, and more). The trade-off is that the API surface feels older and more fragmented across its Core API, Snap, and Iris products, and the webhook signature verification trips up first-timers. Here is a minimal Snap token request to show the shape:

> Whichever you pick, always verify the webhook signature server-side and treat the webhook — not the browser redirect — as the source of truth for a paid order. Users close tabs; webhooks are how you actually learn a Virtual Account was funded.

## Payouts and disbursement

This is the single biggest architectural difference. If your product needs to send money out — paying sellers on a marketplace, settling drivers, paying freelancers, or processing bulk refunds — Xendit treats disbursement as a first-class product with an API that pays out to 450+ banks and e-wallets, including single and batch payouts. Midtrans historically offered payouts through a separate product (Iris), but disbursement is not its center of gravity the way it is for Xendit. On a recent marketplace build I chose Xendit specifically because collecting and paying out through one provider kept reconciliation sane.

## Which to pick: startup vs enterprise

There is no universally better gateway — there is only the right fit for what you are building and how fast you need to move. Here is the decision rule I actually use.

- Early-stage startup shipping fast on a CMS or framework with existing plugins — Midtrans, for time-to-live with the Snap drop-in and its ready-made plugins.
- Custom product on a modern backend where API quality matters — Xendit, for the cleaner API and docs your team will maintain for years.
- Marketplace, fintech, or any model that pays money out — Xendit, because collect plus disburse in one provider is a huge operational win.
- Regional ambition beyond Indonesia — Xendit also operates in the Philippines and wider Southeast Asia, so one integration scales across borders.
- Enterprise needing named support, custom rates, and hardened uptime — negotiate both; the winner is whoever gives your finance team the best rate card and SLA.

> My default: if I only collect payments, I reach for Midtrans first for speed. The moment the product needs to pay anyone out, I switch to Xendit without hesitation — one provider for both money-in and money-out is worth more than a small fee difference.

## Sources

- Midtrans — Official Pricing
- Xendit — Official Pricing
- Midtrans Docs — QRIS Payment Reference
- JDIH BPK — PMK No. 131 Tahun 2024 on VAT treatment (12% rate, DPP Nilai Lain 11/12)

## Source links

- https://midtrans.com/pricing
- https://www.xendit.co/en/pricing/
- https://docs.midtrans.com/reference/qris
- https://peraturan.bpk.go.id/Details/311485/pmk-no-131-tahun-2024

## FAQ

### Which is cheaper, Xendit or Midtrans?

For most core methods they are close. QRIS carries the same Bank Indonesia MDR on both, 0% up to IDR 100,000 and 0.7% above for regular merchants since 1 October 2026, though Xendit adds its fixed IDR 4,000 processing fee to every transaction. Virtual Account is a flat fee on both (around IDR 4,000 on Midtrans), and cards are 2.9% + IDR 2,000 on both, plus that processing fee on Xendit. The real cost differences show up in negotiated e-wallet rates and disbursement fees, so compare your own signed rate card rather than headline numbers.

### Does Xendit support GoPay?

Yes. Xendit lists GoPay as a direct e-wallet channel: GOPAY for one-time payments and GOPAY_RECURRING for recurring ones, which needs an extra activation process with the partner, and customers approve in the GoPay app after a redirect or deeplink. Midtrans, being part of the GoTo group, also offers a native GoPay hand-off.

### Can Midtrans send money out (disbursement)?

Midtrans has offered payouts through a separate product (Iris), but disbursement is not its core focus. If paying out to sellers, drivers, or freelancers is central to your product, Xendit's disbursement API — which reaches 450+ banks and e-wallets — is the stronger and more mature choice.

### Which payment gateway is easier to integrate for developers?

Xendit is widely preferred for a clean, consistent REST API and engineer-friendly docs with official SDKs. Midtrans is faster to ship if you use its Snap drop-in or an existing CMS/Laravel plugin, but its API surface is older and split across Core API, Snap, and Iris.

### Should a startup use Xendit or Midtrans?

If you only collect payments and want to launch quickly on a CMS or framework with ready plugins, Midtrans is usually faster. If you build custom, care about API quality, or need to pay money out, choose Xendit. Many teams start on Midtrans and migrate to Xendit once disbursement or regional expansion becomes a requirement.

---

- HTML version: https://www.matthewswong.com/en/blog/xendit-vs-midtrans-payment-gateway-indonesia/
- Bahasa Indonesia: https://www.matthewswong.com/id/blog/xendit-vs-midtrans-payment-gateway-indonesia/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
