Network Response
When a card payment is declined, dLocal returns raw data from the card scheme and issuer in the acquirer object of the payment response. This gives you direct access to the network-level decline reason which is useful for building precise retry logic, debugging decline patterns at scale, and mapping issuer responses to your own internal systems.
dLocal's status_code and status_detail fields remain the primary way to handle payment outcomes. The acquirer object is an additional layer for integrations that require scheme-level granularity.
Note: These fields are available upon request. Contact your Technical Account Manager to enable the
acquirerresponse fields for your account.
The acquirer object
acquirer objectThe acquirer object is returned in the payment response when a card payment is declined and the fields are enabled for your account. These fields are returned in the real-time payment response (POST /payments), when retrieving a payment via GET /payments/{id}, and in the IPN notification for asynchronous payment flows.
| Field | Type | Description |
|---|---|---|
network_response_code | String | The raw ISO 8583 response code returned by the card scheme or issuer (e.g. 05, 51, N7) |
network_response_description | String | Human-readable description of the network response code |
merchant_advice_code | String | Mastercard only. A code provided by the issuer with specific guidance on whether and when to retry the transaction |
merchant_advice_description | String | Human-readable description of the merchant advice code |
Example responses
Declined Mastercard payment with MAC
{
"id": "T-4-cf8eef6b-52d5-4320-b5ea-f5e0bbe4343f",
"amount": 10.00,
"currency": "BRL",
"payment_method_id": "CARD",
"payment_method_type": "CARD",
"payment_method_flow": "DIRECT",
"country": "BR",
"card": {
"holder_name": "John Doe",
"expiration_month": 6,
"expiration_year": 2026,
"brand": "MC",
"last4": "4444"
},
"created_date": "2024-01-15T14:22:31.000+0000",
"status": "REJECTED",
"status_code": "306",
"status_detail": "Call bank for authorize",
"order_id": "order-001",
"acquirer": {
"network_response_code": "05",
"network_response_description": "Do not honor",
"merchant_advice_code": "03",
"merchant_advice_description": "Do not try again"
}
}Declined Visa payment
{
"id": "T-4-ab3de12f-11c4-4781-a3ea-c2e1cc5b231a",
"amount": 10.00,
"currency": "BRL",
"payment_method_id": "CARD",
"payment_method_type": "CARD",
"payment_method_flow": "DIRECT",
"country": "BR",
"card": {
"holder_name": "John Doe",
"expiration_month": 6,
"expiration_year": 2026,
"brand": "VI",
"last4": "1111"
},
"created_date": "2024-01-15T14:22:31.000+0000",
"status": "REJECTED",
"status_code": "302",
"status_detail": "Insufficient amount",
"order_id": "order-002",
"acquirer": {
"network_response_code": "51",
"network_response_description": "Insufficient funds/over credit limit"
}
}
merchant_advice_codeandmerchant_advice_descriptionare only returned for Mastercard transactions where the issuer includes them in the authorization response. For Visa transactions, only the network response fields are returned.
Merchant Advice Codes (Mastercard)
Merchant Advice Codes (MACs) are returned by Mastercard issuers to provide explicit retry guidance. When present, the MAC takes precedence over networkResponseCode for determining retry behavior.
| MAC Code | Description | Type | Recommended action |
|---|---|---|---|
| 01 | Updated information required | Soft | Request updated card details from the cardholder before retrying |
| 02 | Try again later | Soft | Retry after a short delay |
| 03 | Do not try again | Hard | Do not retry. Advise the cardholder to contact their bank |
| 21 | Payment cancellation | Hard | Do not retry. The cardholder has revoked the recurring payment authorization with their issuer |
| 24 | Retry after 1 hour | Timed | Retry after at least 1 hour |
| 25 | Retry after 24 hours | Timed | Retry after at least 24 hours |
| 26 | Retry after 2 days | Timed | Retry after at least 2 days |
| 27 | Retry after 4 days | Timed | Retry after at least 4 days |
| 28 | Retry after 6 days | Timed | Retry after at least 6 days |
| 29 | Retry after 8 days | Timed | Retry after at least 8 days |
| 30 | Retry after 10 days | Timed | Retry after at least 10 days |
Retry guidance
Use the following decision logic when handling declined card payments:
Mastercard: Check merchant_advice_code first. If present, follow its instruction — it represents explicit guidance from the issuer. If not present, fall back to network_response_code.
Visa: Use network_response_code directly. Visa does not use MACs.
As a general rule:
- Hard declines should not be retried.
- Soft declines can be retried with spacing and within the limits set by each card scheme.
- Timed declines (Mastercard only) should be retried only after the specified interval.
For the full mapping between network response codes and dLocal status codes, see Payment status codes.
Scheme retry limits
Card schemes enforce limits on how many times you can retry a declined transaction. Exceeding these limits can result in fees and negatively impact your authorization rates.
Visa
| Category | Description | Retry limit |
|---|---|---|
| Category 1 | Hard declines | Do not retry |
| Category 2 | Issuer or cardholder action required | Up to 15 attempts over 30 days |
| Category 3 | Data quality issues | Up to 15 attempts over 30 days — revalidate card data before retrying |
| Category 4 | Generic declines | Up to 15 consecutive attempts over 30 days |
Mastercard
For Mastercard, retry behavior is determined by the MAC code when present — follow the interval and limits specified in the Merchant Advice Codes table above. When no MAC is returned, do not retry more than 15 times over a 30-day period.
Updated about 2 hours ago
