APM Response Data Examples
Concrete apmResponseData examples for every APM action type
APM Response Data Examples
When you receive a response from POST /api/v1/payments/apm or a webhook callback with paymentMethod=apm, the apmResponseData object varies by payment method and action type. This page provides concrete JSON examples for each category.
#ApmResponseData Schema (quick reference table)
| Field | Type | Description |
|---|---|---|
paymentMethod | Enum | Payment method identifier (e.g., PIX_QR, PAYPAL, IDEAL) |
paymentType | Enum | Category: E_WALLET, BANK_TRANSFER, CARD_PAYMENT |
actionType | Enum | REDIRECTION, QR, or NONE |
redirectUrl | String? | Full-page redirect URL |
iframeUrl | String? | Embeddable iframe URL |
qrData | String? | Base64-encoded QR code image |
qrDeepLink | String? | Mobile deep link for QR payment apps |
providerTransactionId | String? | Transaction ID in provider's system |
extra | Map? | Additional key-value metadata |
#Redirect-Based APMs (actionType: REDIRECTION)
Customer completes payment on provider's hosted page.
#E-Wallet Redirect (e.g., PayPal, Skrill, Neteller)
{
"requestId": "req-wallet-001",
"transactionId": "tx-88001122",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "PAYPAL",
"paymentType": "E_WALLET",
"actionType": "REDIRECTION",
"redirectUrl": "https://www.paypal.com/checkoutnow?token=EC-1AB23456CD789012E",
"iframeUrl": null,
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "EC-1AB23456CD789012E",
"extra": null
},
"createdTime": "2025-07-29T10:00:00Z"
}Action: redirect user to redirectUrl. After completion, user returns to your successRedirectUrl/failureRedirectUrl. Final status arrives via webhook.
#Bank Transfer Redirect (e.g., iDEAL, SEPA, Sofort)
{
"requestId": "req-bank-001",
"transactionId": "tx-88002233",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "IDEAL",
"paymentType": "BANK_TRANSFER",
"actionType": "REDIRECTION",
"redirectUrl": "https://ideal.bunq.com/authorize?trxid=0050004012345678",
"iframeUrl": null,
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "0050004012345678",
"extra": null
},
"createdTime": "2025-07-29T10:05:00Z"
}#HPP Apple Pay (EXTERNAL_HPP_APPLE_PAY)
{
"requestId": "req-apple-001",
"transactionId": "tx-88003344",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "EXTERNAL_HPP_APPLE_PAY",
"paymentType": "E_WALLET",
"actionType": "REDIRECTION",
"redirectUrl": "https://hpp.provider.com/checkout/apple/abc123",
"iframeUrl": "https://hpp.provider.com/iframe/apple/abc123",
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "prov-ap-abc123",
"extra": {
"walletType": "APPLE_PAY"
}
},
"createdTime": "2025-07-29T10:10:00Z"
}Note: when both redirectUrl and iframeUrl are present, choose whichever fits your checkout UX.
#HPP Google Pay (EXTERNAL_HPP_GOOGLE_PAY)
{
"requestId": "req-google-001",
"transactionId": "tx-88004455",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "EXTERNAL_HPP_GOOGLE_PAY",
"paymentType": "E_WALLET",
"actionType": "REDIRECTION",
"redirectUrl": "https://hpp.provider.com/checkout/google/def456",
"iframeUrl": "https://hpp.provider.com/iframe/google/def456",
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "prov-gp-def456",
"extra": {
"walletType": "GOOGLE_PAY"
}
},
"createdTime": "2025-07-29T10:15:00Z"
}#HPP BLIK (EXTERNAL_HPP_BLIK)
{
"requestId": "req-blik-001",
"transactionId": "tx-88005566",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "EXTERNAL_HPP_BLIK",
"paymentType": "BANK_TRANSFER",
"actionType": "REDIRECTION",
"redirectUrl": "https://hpp.provider.com/checkout/blik/ghi789",
"iframeUrl": null,
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "prov-blik-ghi789",
"extra": null
},
"createdTime": "2025-07-29T10:20:00Z"
}#HPP EFT (EXTERNAL_HPP_EFT)
{
"requestId": "req-eft-001",
"transactionId": "tx-88006677",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "EXTERNAL_HPP_EFT",
"paymentType": "BANK_TRANSFER",
"actionType": "REDIRECTION",
"redirectUrl": "https://hpp.provider.com/checkout/eft/jkl012",
"iframeUrl": null,
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "prov-eft-jkl012",
"extra": null
},
"createdTime": "2025-07-29T10:25:00Z"
}#QR-Based APMs (actionType: QR)
Customer scans a QR code or uses a mobile deep link.
#PIX QR
{
"requestId": "req-pix-001",
"transactionId": "tx-99001122",
"transactionStatus": "CUSTOMER_VERIFICATION",
"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
},
"createdTime": "2025-07-29T11:00:00Z"
}Action:
- Decode
qrData(Base64 to PNG) and display to customer - On mobile, offer
qrDeepLinkas a tap-to-pay button - Poll
GET /api/v1/payments/apm/status/{transactionId}or wait for webhook
#UPI QR
{
"requestId": "req-upi-001",
"transactionId": "tx-99002233",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "UPI_QR",
"paymentType": "E_WALLET",
"actionType": "QR",
"redirectUrl": null,
"iframeUrl": null,
"qrData": "iVBORw0KGgoAAAANSUhEUg...base64-encoded-png...",
"qrDeepLink": "upi://pay?pa=merchant@upi&pn=Merchant&am=500.00&cu=INR",
"providerTransactionId": "upi-tx-def456",
"extra": null
},
"createdTime": "2025-07-29T11:05:00Z"
}#AstroPay QR
{
"requestId": "req-astro-001",
"transactionId": "tx-99003344",
"transactionStatus": "CUSTOMER_VERIFICATION",
"apmResponseData": {
"paymentMethod": "ASTRO_PAY_QR",
"paymentType": "E_WALLET",
"actionType": "QR",
"redirectUrl": null,
"iframeUrl": null,
"qrData": "iVBORw0KGgoAAAANSUhEUg...base64-encoded-png...",
"qrDeepLink": null,
"providerTransactionId": "astro-tx-ghi789",
"extra": null
},
"createdTime": "2025-07-29T11:10:00Z"
}Note: AstroPay may not return qrDeepLink. Always check for null.
#No Action Required (actionType: NONE)
Payment finalized server-side, no customer interaction needed.
{
"requestId": "req-none-001",
"transactionId": "tx-77001122",
"transactionStatus": "SUCCEED",
"apmResponseData": {
"paymentMethod": "SMART_E_WALLET",
"paymentType": "E_WALLET",
"actionType": "NONE",
"redirectUrl": null,
"iframeUrl": null,
"qrData": null,
"qrDeepLink": null,
"providerTransactionId": "prov-none-xyz789",
"extra": null
},
"createdTime": "2025-07-29T12:00:00Z"
}#Handling Logic (Decision Tree)
Receive response from POST /api/v1/payments/apm
|
+-- transactionStatus = "SUCCEED" or "FAILED"
| +-- Payment is final. No further action needed.
|
+-- transactionStatus = "CUSTOMER_VERIFICATION"
|
+-- actionType = "REDIRECTION"
| +-- redirectUrl present -> Full-page redirect
| +-- iframeUrl present -> Embed in iframe
| +-- Both present -> Choose based on your UX
|
+-- actionType = "QR"
| +-- qrData present -> Decode Base64 -> Display QR image
| +-- qrDeepLink present -> Show as tap-to-pay on mobile
| +-- Poll status or wait for webhook callback
|
+-- actionType = "NONE"
+-- Wait for webhook callback or poll status endpoint
#Common Patterns
#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);
}#Redirect with Fallback
const { redirectUrl, iframeUrl } = apmResponseData;
if (iframeUrl && !isMobile()) {
// Embed iframe for desktop
const iframe = document.createElement('iframe');
iframe.src = iframeUrl;
iframe.width = '100%';
iframe.height = '600';
document.getElementById('payment-container').appendChild(iframe);
} else if (redirectUrl) {
// Full redirect
window.location.href = redirectUrl;
}#See Also
- Processing the Payment Response — full response field reference
- Handling the Callback — webhook callback structure
- apmPayload References — all PaymentMethod and PaymentType enums
- Webhook Callback & Transaction Lifecycle — webhook identification fields