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.
| Aspect | Before QRIS | After QRIS |
|---|---|---|
| QR codes needed | 5+ (GoPay, OVO, Dana, LinkAjaโฆ) | 1 (QRIS) |
| Counter space | Multiple stickers cluttering desk | One clean QRIS sticker |
| App compatibility | Each code only for one app | Any QRIS-enabled app |
| Merchant setup | Register with each wallet separately | One Bank Indonesia registration |
| Settlement | Fragmented across app wallets | Unified via BI-FAST |
How QRIS Works โ Step by Step
- 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
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
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
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
Customer enters PIN or uses biometrics
Authentication happens in the app. The PIN is never transmitted and never stored in the QR code.
- 6
Transaction processes via BI-FAST
Bank Indonesia's national switching infrastructure settles the payment in real time โ 24/7/365 including holidays.
- 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.
| Category | English | Criteria Code | Annual Revenue | MDR | Examples |
|---|---|---|---|---|---|
| Usaha Mikro | Micro | A | < Rp 300 million / year | 0.3% | Street vendors, warungs, food stalls |
| Usaha Kecil | Small | A | Rp 300M โ 2.5B / year | 0.7% | Local shops, small restaurants, service providers |
| Usaha Menengah | Medium | B | Rp 2.5B โ 50B / year | 0.7% | Regional chains, mid-sized businesses |
| Usaha Besar | Large | C | > Rp 50 billion / year | 0.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 ID | Field Name | Example Value | Required | Description |
|---|---|---|---|---|
| 00 | Payload Format Indicator | 01 | Required | Always "01" โ EMV Merchant Presented Mode |
| 01 | Point of Initiation Method | 11 or 12 | Required | 11 = static (no preset amount), 12 = dynamic (amount embedded) |
| 26 | Merchant Account โ QRIS | ID.CO.QRIS.WWW + NMID | Required | Application Identifier + National Merchant ID |
| 52 | Merchant Category Code | 0000 | Required | ISO 18245 MCC โ business category of merchant |
| 53 | Transaction Currency | 360 | Required | ISO 4217 numeric code for Indonesian Rupiah (IDR) |
| 54 | Transaction Amount | 50000 | Optional | Present only in dynamic QR codes; absent in static codes |
| 58 | Country Code | ID | Required | ISO 3166-1 alpha-2 โ Indonesia |
| 59 | Merchant Name | Warung Pak Budi | Required | Name displayed on payer's screen, max 25 characters |
| 60 | Merchant City | Jakarta | Required | City of merchant location |
| 62 | Additional Data Field | terminal / reference | Optional | Optional terminal ID, reference ID, or customer label |
| 63 | CRC | 4-digit hex | Required | CRC16-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.
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.