# QRIS in Indonesia — the strongest case for one national QR standard

> QRIS is Indonesia's single mandated payment QR standard. Since 1 January 2020, Bank Indonesia has required every payment QR in the country to be QRIS, so any licensed app — GoPay, OVO, DANA, ShopeePay or a bank app — can pay any QRIS code, and merchant fees are set nationally rather than negotiated.

Source: https://useqr.app/docs/payments/qris-indonesia · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## The problem QRIS solved

By 2019, Indonesian counters were plastered with stickers: one QR per wallet — GoPay, OVO,
DANA, LinkAja — each readable only by its own app. Merchants managed multiple acquiring
relationships and reconciliations; customers needed the right app for the right sticker.
This is the fragmentation trap every closed-loop QR market falls into, and the one
[China's duopoly still lives in](/docs/payments/wechat-pay-and-alipay-qr).

Bank Indonesia's answer was blunt: **QRIS** (Quick Response Code Indonesian Standard,
pronounced "kris"), developed with the Indonesian Payment System Association (ASPI),
launched on **17 August 2019** — Independence Day, deliberately — and made **mandatory from
1 January 2020**. From that date, every payment QR presented in Indonesia must be a QRIS
code. Wallet-specific payment codes became non-compliant overnight.

## How it works

QRIS profiles the [EMVCo merchant-presented
standard](/docs/payments/emvco-merchant-presented-qr): tag-length-value payload, merchant
identifiers in the account templates (including a national merchant ID), currency `IDR`,
country `ID`, optional amount in field `54`, [CRC16](/glossary/crc16) at the end. Decode a
QRIS sticker with [/validate](/validate) and the structure matches a
[PIX](/docs/payments/pix-qr-code-format) or
[DuitNow](/docs/payments/duitnow-qr-malaysia) code — the differences live in the templates,
not the skeleton.

The interoperability is the point: **any licensed payment app pays any QRIS code.** A
warung with one laminated code accepts customers from every wallet and bank in the country.
The merchant chooses one acquirer; the customer chooses any app; the national switch routes
between them.

## Nationally set merchant pricing

QRIS pricing is a regulatory instrument, not a negotiation. The merchant discount rate (MDR)
is set centrally by the regulator by merchant category, with **reduced — at times zero —
rates for micro-merchants**, precisely to keep street vendors inside the formal system. The
exact rates have been adjusted over the years (Bank Indonesia publishes current figures),
but the structural fact is the interesting one: in Indonesia the cost of QR acceptance is
policy, not market power. Compare card acquiring, where an individual merchant negotiates
from no leverage at all.

## Why this is the strongest one-standard case study

Other countries reached interoperability by different routes —
[Brazil built one system](/docs/payments/pix-qr-for-small-business),
[India one deep-link format](/docs/payments/pix-vs-upi-compared), Malaysia a framework
obliging interoperation. Indonesia is the cleanest test of the mandate approach: a large,
fragmented, wallet-first market where the regulator declared one code format and required
every incumbent to adopt it. The visible result — one sticker per counter, national
merchant-fee policy, wallet competition shifting from acceptance networks to product
quality — is why QRIS features in the
[standards comparison](/docs/payments/qr-payment-standards-compared) as the reference
unification story. Cross-border QRIS linkages within ASEAN (Malaysia, Thailand, Singapore)
extend the same code to participating foreign apps, with the usual caveat: check your own
app's participation before relying on it.

## For merchants and travellers

Merchant onboarding runs through a licensed acquirer (bank or wallet company), which issues
your QRIS code and states your MDR. Deployment is the universal drill: **≥ 4–5 cm** at
counter distance, intact [quiet zone](/glossary/quiet-zone), name printed large to match the
payer's confirmation screen, mounted where an overlay sticker would show.

Travellers: your home app pays QRIS codes only if it participates in a linkage; otherwise
cash or cards. The codes themselves are safe to scan and
[inspect](/docs/security/how-to-check-a-qr-code-before-opening) — scanning never moves money
without your confirmation in a payment app.

## FAQ

### What does QRIS stand for?
Quick Response Code Indonesian Standard — the single payment QR format defined by Bank
Indonesia and ASPI, launched 17 August 2019 and mandatory for all payment QR codes in
Indonesia since 1 January 2020.

### Can any app pay any QRIS code?
Yes — that is its purpose. Every licensed Indonesian payment app, bank or wallet, must be
able to pay every QRIS merchant code, regardless of which acquirer issued the code.

### Who sets QRIS merchant fees?
The regulator. The merchant discount rate is set nationally by merchant category, with
reduced or zero rates for micro-merchants, rather than being negotiated between merchant
and provider. Bank Indonesia publishes the current rates.

### Is QRIS an EMVCo format?
Yes. QRIS is a national profile of the EMVCo merchant-presented QR specification —
tag-length-value fields ending in a CRC16 — with Indonesian scheme identifiers and a
national merchant ID in the templates.

## Try it

- https://useqr.app/validate
- https://useqr.app/scan
