Brick API Documentation
Dynamic QR Code

QR Code Callback - Dynamic QR Code

Use this callback as the primary real-time payment notification for Dynamic QR Code. Your system should match the callback to the original transaction, persist the update, and then update the customer order or balance.

Callback Handling

  • Match the callback using referenceId and the Brick QR Code id.
  • Treat callbacks as idempotent because retries can happen.
  • Store paidAt, amount, feeAmount, and merchant information for reconciliation.
  • Return HTTP 200 only after your system has accepted the callback. Dashboard Test URL / Save & Test also requires a JSON ACK with the exact Brick test referenceId.
  • If customerInformation is enabled, store the buyer and issuer details only for the relevant transaction record.

This is a sample of the status update we send to your callback URL:

JSONCode
{ "data": { "id": "QR_898df65b2e7a451fa0b7d38b7dbed24b", "type": "qris", "referenceId": "ref1234", "amount": 1000, "feeAmount": 8, "status": "COMPLETED", "createdAt": "2026-06-30T16:04:24.581+07:00", "paidAt": "2026-06-30T16:05:10.590+07:00", "qrisType": "DYNAMIC", "merchant": null, "merchantNmid": null, "customerInformation": { "customerName": "customer name", "issuerName": "payer bank" }, "metadata": { "orderId": "ORD-123", "customerId": "CUS-999" } } }

This is a sample of the status update we send to your callback URL if customerInformation is enabled:

JSONCode
{ "data": { "id": "QR_0a50018350f34cd4901c97e22cb1cfde", "referenceId": "1710323916255", "amount": 11000, "feeAmount": 77, "status": "PAID", "createdAt": "2024-03-13T16:58:37.000+07:00", "paidAt": "2024-03-13T23:58:58.000+07:00", "qrisType": "DYNAMIC", "merchant": null, "merchantNmid": null, "customerInformation": { "customerName": "Customer QR Code", "issuerName": "issuerName" } } }

Note: To get customerInformation, refer to the QR Code Overview docs or contact our Sales team.

Last modified on