How to Check Payment Status Using QRIS Inquiry API: A Guide for Indonesian MSMEs in 2026

Digital payment transaction volume in Indonesia grew 40.35% year-over-year according to Bank Indonesia data. This growth brings a new challenge for business owners: how to monitor payment status in real-time, especially during high-traffic periods? QRIS Inquiry API provides the solution.
This article covers how to check payment status using QRIS Inquiry API in practice, including integration with major Indonesian payment gateways and troubleshooting common issues faced by MSMEs.
What is QRIS Inquiry API and Why It Matters
QRIS Inquiry API is an interface that allows your business system to check QRIS transaction status in real-time without waiting for webhook notifications. Unlike webhooks which are push-based (payment gateway server sends notifications to you), inquiry API is pull-based — your system actively requests status updates from the payment gateway server.
This approach is crucial for several scenarios:
- Webhook not delivered due to server downtime, network failure, or misconfiguration
- Customers asking about payment status directly (via WhatsApp, chat, or in physical store)
- Daily reconciliation between internal systems and payment gateway data
- Need for real-time status updates during peak hours (e.g., flash sales or major promos)
In 2025, QRIS expanded internationally and is now accepted in China and the United States. For Indonesian businesses planning to go global, understanding inquiry API is no longer optional — it's a fundamental need.
Payment Gateways Providing QRIS Inquiry API
Most payment gateways in Indonesia already provide inquiry endpoints for QRIS. Here's the main list with their endpoint names:
- NICEPAY: Status Inquiry API — dedicated endpoint to check QRIS transaction status with
transactionIdorreferenceNoparameters - SNAP (Midtrans): Check Status Transaction — standard API to verify status of all payment methods, including QRIS
- Zipay: Inquiry QRIS Status — specific endpoint for checking QRIS payments
- Paydia: Query Payment — API that returns payment status and timestamp details
- QRIS.id: Check Invoice Status — for checking QRIS-based invoice status
Although endpoint names differ, implementation patterns are similar: you send a request with a transaction identifier (transaction ID, invoice number, or reference number), and the server returns payment status along with metadata (timestamp, amount, customer info).
For deeper QRIS integration into your business system, comprehensive guide to payment gateway and QRIS integration for Indonesian businesses 2026 covers setup steps from beginning to production.
QRIS Inquiry API Response Structure
Responses from inquiry APIs generally follow similar patterns across different payment gateways. Here's a common structure example (format may vary by provider):
{
"status": "SUCCESS",
"transactionId": "TXN123456789",
"amount": 150000,
"paymentMethod": "QRIS",
"transactionTime": "2025-06-27T10:30:00+07:00",
"settlementTime": "2025-06-27T10:32:15+07:00"
}The status field typically has values like:
SUCCESSorCOMPLETED— payment successfulPENDING— awaiting paymentFAILED— payment failed or expiredREFUNDED— transaction already refunded
It's important to understand the status value mapping between your payment gateway and your internal system. Each gateway may use different terminology, but the basic concept is the same: transactions have a clear lifecycle and need consistent handling.
Implementing Correct Retry Logic
One common pattern when using inquiry APIs is retrying until status becomes final (SUCCESS/FAILED). However, incorrect retry can cause infinite loops or wasted resources.
Recommended pattern:
- Exponential backoff — retry intervals increase exponentially (e.g., 5s, 10s, 20s, 40s)
- Max retry limit — stop after N attempts (usually 5-10x)
- Timeout protection — stop if total time exceeds threshold (e.g., 5 minutes for QRIS)
- Idempotency — one transaction should not be processed twice even if inquired multiple times
For correct QRIS webhook implementation with idempotency patterns and retry logic, the idempotency pattern guide for QRIS webhooks covers database schema and implementation code examples.
If you're experiencing lost webhooks or notifications not arriving, how to debug and test QRIS webhooks provides practical solutions for troubleshooting these issues.
Alternatives to Inquiry API
Inquiry API isn't the only way to check QRIS payment status. Several alternative methods exist depending on your business needs:
- Merchant Dashboard — www.merchant.qris.interactive.co.id provides a web interface to view transaction history and payment status. Suitable for daily reconciliation or occasional manual checks.
- EDC Applications — applications on EDC machines connected to QRIS. Some providers store transaction history accessible directly from the device.
- GoPay Merchant App — for merchants using GoPay as their QRIS channel, the merchant app provides transaction history accessible via mobile.
- Add reasonable timeout (e.g., 10-30 seconds)
- Use queues for batch inquiries to avoid overloading your own system
- Implement retry with exponential backoff as explained earlier
- Mark transaction as
FAILEDin your system after timeout window + buffer (e.g., 5 minutes) - Notify customer that payment expired and requires retry
- Check if two SUCCESS transactions exist with the same
referenceNo - Use unique identifier combining
orderId + timestampto avoid race conditions - Batch inquiry for multiple transactions in one request if gateway provides batch endpoint
- Implement client-side rate limiting with token bucket algorithm
- Cache transaction status for some time (e.g., 1-2 minutes) to reduce redundant calls
- Integrating QRIS with complex business systems
- Implementing correct retry logic and idempotency patterns
- Troubleshooting persistent payment issues
- Modernizing your MSME's payment system
These methods are more suitable for manual operations or when you don't need automated integration. However, for fully automated systems at scale, inquiry API remains the most efficient approach.
Troubleshooting Common Issues
Here are common problems when using QRIS Inquiry API and how to resolve them:
Timeout or Slow Response
During peak hours, payment gateway servers may experience delays. Solutions:
Pending Status Too Long
QRIS has a timeout window (usually 30-60 minutes). If status remains PENDING after passing the window, the payment likely failed or expired. Actions:
Duplicate Transaction
Sometimes customers make payment twice for the same order. Detect by:
Rate Limiting
Some payment gateways apply rate limits on inquiry APIs. Solutions:
Indonesian business technology trends for 2025 show focus on cybersecurity and financial inclusion for MSMEs. Having a robust payment monitoring system isn't just about convenience — it's about security and trust in digital business.
Next Steps
Implementing QRIS Inquiry API is one component in a modern digital payment ecosystem. If you need help with:
The Colabs team is ready to help. Discuss your business needs and find the right solution for your target scale.
Tertarik mendiskusikan proyek Anda?
Konsultasi awal gratis — ceritakan kebutuhan bisnis Anda dan kami bantu temukan solusi yang tepat.
Dapatkan insight serupa tiap minggu.
Tips digital & studi kasus nyata — langsung ke inbox Anda.
Tim Colabs
Web Development Lead
Di Colabs, kami percaya berbagi arsitektur mental sama pentingnya dengan membagikan baris kode. Tetap terhubung untuk wawasan teknologi terdepan kami.

