How QRIS Works โ€“ Complete Guide to Indonesia's QR Payment

Everything about Indonesia's national QR payment standard: NMID, merchant categories, EMV payload, cross-border ASEAN payments and supported apps.

What is QRIS?

QRIS โ€” Quick Response Code Indonesian Standard โ€” is Indonesia's national QR payment standard, developed by Bank Indonesia (BI) together with the Indonesian Payment System Association (ASPI). Officially launched on August 17, 2019 (Indonesia's Independence Day) and made mandatory for all payment providers on January 1, 2020, QRIS is built on the international EMV Merchant Presented Mode (MPM) specification โ€” the same technical foundation used by PromptPay in Thailand and PayNow in Singapore. Before QRIS, Indonesian merchants had to display multiple QR code stickers at their counters โ€” one for each payment app. A GoPay user couldn't scan an OVO QR code, and a Dana user couldn't pay at a LinkAja merchant. QRIS solved this fragmentation by creating a single, unified QR standard that all Indonesian payment apps must support. Today, Indonesia has over 30 million QRIS merchants โ€” from street food stalls (warung) and motorbike taxi drivers to government offices and shopping malls โ€” making it one of the world's largest QR payment networks by merchant count. More than 100 million Indonesians actively use QRIS-enabled payment apps. The QRIS Application Identifier (AID) is ID.CO.QRIS.WWW, embedded in EMV tag ID 26 of the QR payload. Every transaction is routed through BI-FAST, Bank Indonesia's national fast payment infrastructure, enabling real-time, 24/7 settlement.

The QRIS Revolution: One Code for All Apps

The transformation QRIS brought to Indonesian commerce cannot be overstated. Before January 2020, a street vendor accepting digital payments would need to maintain separate registrations with GoPay, OVO, Dana, LinkAja, and ShopeePay โ€” and display five different QR stickers. QRIS replaced all of this with a single code. The Bank Indonesia mandate was clear: from January 1, 2020, any payment provider operating in Indonesia must adopt QRIS. Non-compliant providers faced the risk of losing their operating licenses. The result was immediate and sweeping โ€” within months, Indonesia's entire digital payment landscape unified under a single QR standard.

AspectBefore QRISAfter QRIS
QR codes needed5+ (GoPay, OVO, Dana, LinkAjaโ€ฆ)1 (QRIS)
Counter spaceMultiple stickers cluttering deskOne clean QRIS sticker
App compatibilityEach code only for one appAny QRIS-enabled app
Merchant setupRegister with each wallet separatelyOne Bank Indonesia registration
SettlementFragmented across app walletsUnified via BI-FAST

How QRIS Works โ€“ Step by Step

  1. 1

    Merchant displays their QRIS code

    Static codes are printed on stickers. Dynamic codes with a preset amount are generated per transaction for e-commerce or invoices.

  2. 2

    Customer opens any QRIS-enabled app

    GoPay, OVO, Dana, LinkAja, ShopeePay, BCA Mobile, Mandiri Livin' or any of the 50+ participating apps โ€” all fully interoperable.

  3. 3

    Customer scans the QRIS QR code

    The code can be scanned from a printed sticker, a phone screen, a PDF, or any other surface.

  4. 4

    Payment details appear automatically

    Merchant name, NMID, and amount (if embedded) are parsed from the EMV payload. For static codes, the customer enters the amount manually.

  5. 5

    Customer enters PIN or uses biometrics

    Authentication happens in the app. The PIN is never transmitted and never stored in the QR code.

  6. 6

    Transaction processes via BI-FAST

    Bank Indonesia's national switching infrastructure settles the payment in real time โ€” 24/7/365 including holidays.

  7. 7

    Both parties receive confirmation

    Payer receives a success notification with transaction reference. Merchant receives instant credit notification.

QRIS Merchant Categories & MDR

Bank Indonesia classifies all QRIS merchants into four tiers based on annual revenue. The category is encoded in the QRIS payload as the Merchant Criteria field and directly determines the MDR (Merchant Discount Rate) charged on each received payment. Usaha Mikro (Micro) with revenue under Rp 300 million per year pays 0.3% MDR. Usaha Kecil (Small) with revenue Rp 300Mโ€“2.5B and Usaha Menengah (Medium) with Rp 2.5Bโ€“50B both pay 0.7% MDR. Usaha Besar (Large) above Rp 50 billion also pays 0.7%. Government institutions and education facilities pay 0% MDR. These rates are regulated by Bank Indonesia to ensure accessibility for all business sizes.

CategoryEnglishCriteria CodeAnnual RevenueMDRExamples
Usaha MikroMicroA< Rp 300 million / year0.3%Street vendors, warungs, food stalls
Usaha KecilSmallARp 300M โ€“ 2.5B / year0.7%Local shops, small restaurants, service providers
Usaha MenengahMediumBRp 2.5B โ€“ 50B / year0.7%Regional chains, mid-sized businesses
Usaha BesarLargeC> Rp 50 billion / year0.7%Shopping malls, major retailers, corporations

The QRIS EMV Payload

A QRIS QR code encodes a sequence of TLV (Tag-Length-Value) fields as a plain ASCII string. Each field starts with a two-digit tag ID, followed by a two-digit length value, followed by the data content. The payload is defined by the EMV Merchant Presented Mode specification and extended with QRIS-specific fields by Bank Indonesia. Tag ID 26 is the heart of QRIS โ€” it contains the Application Identifier ID.CO.QRIS.WWW (sub-tag 00) and the merchant's National Merchant ID / NMID (sub-tag 01). The final tag 63 contains the CRC16-CCITT checksum of the entire payload (including the literal text '6304'), expressed as a 4-character uppercase hex string. The transaction currency is always Indonesian Rupiah (IDR, ISO 4217 code 360).

000201
010211
2660
  0016ID.CO.QRIS.WWW
  0117ID1234567890123
52040000
5303360
5802ID
5915Warung Pak Budi
6006Jakarta
63041A2B
Tag IDField NameExample ValueRequiredDescription
00Payload Format Indicator01RequiredAlways "01" โ€“ EMV Merchant Presented Mode
01Point of Initiation Method11 or 12Required11 = static (no preset amount), 12 = dynamic (amount embedded)
26Merchant Account โ€“ QRISID.CO.QRIS.WWW + NMIDRequiredApplication Identifier + National Merchant ID
52Merchant Category Code0000RequiredISO 18245 MCC โ€“ business category of merchant
53Transaction Currency360RequiredISO 4217 numeric code for Indonesian Rupiah (IDR)
54Transaction Amount50000OptionalPresent only in dynamic QR codes; absent in static codes
58Country CodeIDRequiredISO 3166-1 alpha-2 โ€“ Indonesia
59Merchant NameWarung Pak BudiRequiredName displayed on payer's screen, max 25 characters
60Merchant CityJakartaRequiredCity of merchant location
62Additional Data Fieldterminal / referenceOptionalOptional terminal ID, reference ID, or customer label
63CRC4-digit hexRequiredCRC16-CCITT checksum of the entire payload including "6304"

QRIS Cross-Border Payments

Bank Indonesia has been actively expanding QRIS beyond Indonesia's borders through bilateral QR payment linkages with ASEAN neighbors and beyond. Under these linkages, tourists from connected countries can pay at Indonesian QRIS merchants using their home country's payment apps โ€” no cash or currency exchange required. Indonesia has established connections with Thailand (PromptPay, since 2021), Malaysia (DuitNow, since 2022), Singapore (PayNow, since 2022), Philippines (QR Ph, since 2023), Vietnam (VietQR, since 2023), India (UPI, since 2023), and Japan (since 2024). The ASEAN cross-border QR payment initiative is part of a broader G20-aligned effort to interlink national fast payment systems globally.

๐Ÿ‡น๐Ÿ‡ญ

Thailand

PromptPay

Since 2021

๐Ÿ‡ฒ๐Ÿ‡พ

Malaysia

DuitNow

Since 2022

๐Ÿ‡ธ๐Ÿ‡ฌ

Singapore

PayNow

Since 2022

๐Ÿ‡ต๐Ÿ‡ญ

Philippines

QR Ph

Since 2023

๐Ÿ‡ป๐Ÿ‡ณ

Vietnam

VietQR

Since 2023

๐Ÿ‡ฎ๐Ÿ‡ณ

India

UPI

Since 2023

๐Ÿ‡ฏ๐Ÿ‡ต

Japan

JCB / local

Since 2024

Supported Apps & Banks

All QRIS-enabled apps are fully interoperable. A customer with GoPay can scan the same QRIS code as a customer with BCA Mobile โ€” the routing and settlement happen transparently through Bank Indonesia's infrastructure. As of 2025, over 50 payment service providers participate in the QRIS ecosystem, including GoPay, OVO, Dana, LinkAja, ShopeePay, BCA Mobile, Mandiri Livin', BRI Mobile, BNI Mobile, CIMB Niaga, Permata, Jenius, Allo Bank, and Bank Jago. Beyond consumer e-wallets, every major Indonesian state bank and private bank has integrated QRIS into their mobile banking apps.

GoPayOVODanaLinkAjaShopeePayBCA MobileMandiriBRIBNICIMB NiagaPermataJeniusAllo Bank50+ moreโ€ฆ

QRIS for Merchants โ€“ Getting Started

Registering as a QRIS merchant is straightforward. You do not register directly with Bank Indonesia โ€” instead, you apply through any Bank Indonesia-licensed Payment Service Provider (PJSP). Common routes include registration via your bank app (BCA, Mandiri, BRI, BNI, CIMB), via GoPay/Gojek, via OVO, or via Dana. Upon successful registration, you receive a National Merchant ID (NMID) โ€” a unique identifier assigned by Bank Indonesia โ€” and a printed QRIS sticker with your QR code. The NMID is encoded in your QRIS payload and is required for Bank Indonesia compliance. For developers and businesses who need to generate QRIS QR codes programmatically, qrpayhub.com provides a free browser-based QRIS generator.

  • ๐Ÿ“ฑ

    Via your bank app

    Most major Indonesian banks (BCA, Mandiri, BRI, BNI, CIMB) offer merchant QRIS registration directly through their business banking apps or branch offices.

  • ๐Ÿ’š

    Via GoPay / Gojek

    GoTo Financial (GoPay) offers a streamlined merchant registration for small businesses, with the QRIS sticker delivered to your address.

  • ๐ŸŸฃ

    Via OVO

    OVO Business registration gives you a QRIS merchant code compatible with all QRIS apps, not just OVO users.

  • ๐Ÿ”ต

    Via Dana

    Dana for Merchants (Merchant Dana) offers QRIS registration with a merchant dashboard for tracking transactions.

Ready to generate your QRIS QR Code?

Free, instant, works with GoPay, OVO, Dana, LinkAja, ShopeePay and all QRIS apps.