Retrieve the full state of an APM payout — including status, decline reason, and provider-specific data.
Overview
Use the APM Payout Info endpoint to fetch the complete payout state.
Use this endpoint when:
- A webhook was not received
- You need to verify payout completion
- You need full details for reconciliation or support
The response payload matches the webhook callback. Use polling only as a fallback.
Endpoint
GET /api/v1/payouts/apm/info/{id}
Retrieve full details of an APM payout transaction.
Headers
| Header | Value |
|---|---|
| Authorization | Bearer {token} |
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| id | String | Unique payout transaction identifier |
Important Notes
Use /info, not /status
/info, not /status/info/{id}returns declineCode and declineSubReason on failure- Status-only endpoints do not include decline details
Key Response Fields
| Field | Description |
|---|---|
| transactionId | Unique payout transaction identifier |
| requestId | Original request ID |
| transactionStatus | Current status (PROCESSING, SUCCEED, FAILED) |
| declineCode | Decline reason (present on failure) |
| declineSubReason | Additional failure context |
| apmRequestPayload | Original APM payload |
| apmResponseData | Provider-specific response data |
| createdAt | ISO 8601 timestamp |
Full Response Fields
| Field | Type | Description |
|---|---|---|
| transactionId | String | Unique transaction identifier |
| requestId | String | Idempotency key |
| accountId | Integer | Merchant account ID (APM equivalent of mid) |
| transactionStatus | String | Current status |
| declineCode | Integer | Decline reason (only when FAILED) |
| declineSubReason | String | Additional decline details |
| apmRequestPayload | Object | Original APM payload |
| apmResponseData | Object | Provider-specific response |
| callbackUrl | String | Webhook URL for final result |
| billingDetails | Object | Customer billing details |
| order | Object | Order-related data |
| createdAt | String | ISO 8601 timestamp |
| metadata | Map | Custom key-value data |
Example Response
{
"transactionId": "123456789",
"requestId": "req-abc-123",
"accountId": 1001,
"transactionStatus": "FAILED",
"declineCode": 101,
"declineSubReason": "Invalid account details",
"apmRequestPayload": {
"paymentMethod": "EFT",
"account": "123456789"
},
"apmResponseData": {
"providerTransactionId": "prov-789"
},
"callbackUrl": "https://merchant.com/webhook",
"createdAt": "2026-04-24T10:15:30Z",
"metadata": {
"payoutId": "PO-123"
}
}Error Responses
| HTTP Status | Description |
|---|---|
| 400 | Bad Request — missing or invalid parameters |
| 401 | Unauthorized — missing or invalid token |
| 404 | Not Found — payout does not exist |
| 500 | Internal Server Error — retry with backoff |
Best Practices
- Treat webhooks as the primary source of truth
- Use
/infoonly as a fallback - Always check
declineCodeanddeclineSubReasonwhen status isFAILED - Store
transactionIdandrequestIdfor reconciliation - Stop polling after terminal status

