QR Flow Payload
Request and response payloads for APM methods that return actionType: QR.
3 min readUpdated Apr 8, 2026
QR-flow APM methods return actionType: QR — the customer scans a dynamically generated QR code with their payment app. All QR methods use the same payload structure, differing only by paymentMethod and paymentType. See QR Code flow for the end-to-end sequence.
QR codes expire in 1–5 minutes (varies by provider). Show a countdown timer and offer a "Refresh QR" option on expiry.
For the full list of supported QR methods, see APM Payload References.
#Required Request Fields
Top-Level Fields
| Field | Type | Description |
|---|---|---|
callbackUrl | String | URL to receive transaction status updates |
successRedirectUrl | String | URL to redirect the customer after successful payment |
failureRedirectUrl | String | URL to redirect the customer after failed payment |
Billing Details (ApmBillingDetails)
| Field | Type | Description |
|---|---|---|
email | String | The customer's email address used for communication or receipts |
#Payload Structure
{
"paymentMethod": "PIX_QR",
"paymentType": "E_WALLET"
}Payload Fields
| Field | Type | Required | Description |
|---|---|---|---|
paymentMethod | Enum | Yes | QR method identifier (e.g. PIX_QR, UPI_QR, ASTRO_PAY_QR) |
paymentType | Enum | Yes | Payment type for the method (e.g. E_WALLET, BANK_TRANSFER) |
#Expected apmResponseData
{
"paymentMethod": "PIX_QR",
"paymentType": "E_WALLET",
"actionType": "QR",
"redirectUrl": null,
"iframeUrl": null,
"qrData": "iVBORw0KGgoAAAANSUhEUg...base64-encoded-png...",
"qrDeepLink": "pix://pay?code=BR123456789ABCDEF",
"providerTransactionId": "pix-tx-abc123",
"extra": null
}#Response Fields
| Field | Type | Required | Description |
|---|---|---|---|
paymentMethod | Enum | Yes | The QR method used |
paymentType | Enum | Yes | Payment type |
actionType | Enum | Yes | Always QR |
redirectUrl | String | No | Always null for QR methods |
iframeUrl | String | No | Always null for QR methods |
qrData | String | No | Base64-encoded QR code PNG image |
qrDeepLink | String | No | Mobile deep link to open the payment app directly. May be null for some methods |
providerTransactionId | String | No | Transaction ID in the provider's system |
#Rendering QR Codes
// Display QR image from Base64
const img = document.createElement('img');
img.src = `data:image/png;base64,${apmResponseData.qrData}`;
document.getElementById('qr-container').appendChild(img);
// Deep link fallback for mobile
if (apmResponseData.qrDeepLink) {
const link = document.createElement('a');
link.href = apmResponseData.qrDeepLink;
link.textContent = 'Open in app';
document.getElementById('qr-container').appendChild(link);
}#See Also
- POST /api/v1/payments/apm — Full endpoint reference
- Payment Flow — End-to-end APM payment flows
- Smart QR Payments — Auto-routed QR via
SMART_QR - APM Payload References — All supported payment methods
Was this helpful?