Retry Advice
Understand why a payment was declined and what to do next
Overview
When a card payment is declined, the issuing bank and card scheme return guidance on whether the transaction can be retried, and if so, when. Acquired.com interprets this guidance and returns it as a retry_advice object in the API response — giving you a clear, actionable recommendation without needing to interpret raw scheme-specific codes yourself.
Retry Advice is particularly valuable for recurring and merchant-initiated payments, where an automated retry strategy can significantly improve approval rates and reduce involuntary churn.
NoteRetry Advice is returned via the API only. For Hosted Checkout and Components integrations, use
GET /transactions/{transaction_id}to retrieve advice after the transaction completes.
How it works
When a transaction is processed, Acquired.com receives a response from the acquiring bank that may include a Merchant Advice Code (MAC) from Mastercard or an issuer response code that maps to a Visa decline category. Acquired.com translates these signals into a canonical, acquirer-agnostic retry_advice object so that your integration receives consistent guidance regardless of which acquirer processes the transaction.
The advice is informational only. Acquired.com does not automatically retry transactions or enforce stop-processing rules based on advice values. You are responsible for implementing your own retry logic using the guidance provided.
The retry_advice object
retry_advice objectWhen advice is available for a transaction, the response includes a retry_advice object positioned after the check object:
{
"transaction_id": "a7e3fde5-5b3-44f4-9915-782bc71243717",
"status": "declined",
"reason": "insufficient_funds",
"issuer_response_code": "51",
"check": {
"avs_line1": "matched",
"avs_postcode": "matched",
"cvv": "matched"
},
"retry_advice": {
"category": "retry_later",
"detail": null,
"retry_after": "2026-03-15T00:00:00Z",
"acquirer_code": "25"
},
"bin": {
"issuing_bank": "MONZO BANK LIMITED",
"card_category": "DEBIT",
"product_type": "CONSUMER",
"card_level": "BLANK",
"issuing_country": "UNITED KINGDOM",
"issuing_country_iso2": "GB",
"eea_indicator": true,
"non_reloadable": false
},
"links": [
{
"rel": "self",
"href": "/v1/transactions/a7e3fde5-5b83-44f4-9915-782bc7341717"
}
]
}When no advice is available for a transaction, retry_advice is returned as null. The field is always present in the response and is never omitted.
Field reference
| Field | Type | Description |
|---|---|---|
category | string | Acquired.com's canonical classification of the advice. Always present when retry_advice is non-null. See Advice categories for all possible values. |
detail | string or null | Additional context where the semantics are clear and acquirer-agnostic. For example, non_reloadable_prepaid or single_use_virtual_card. |
retry_after | string or null | An RFC 3339 UTC timestamp indicating the earliest recommended retry time. This is a recommendation, not an optimal or guaranteed retry window. See Understanding retry_after for details. |
acquirer_code | string or null | The normalised acquirer-provided advice code, preserved for transparency and debugging. Single-digit numeric codes are left-padded to two digits (e.g. "1" → "01"). For Visa transactions, this field is null. |
Advice categories
The category field tells you what action to take. Below are all possible values:
| Category | Meaning | Recommended action |
|---|---|---|
retry_later | The issuer cannot approve at this time but may do so later. | Retry the transaction after the retry_after timestamp if provided. If no timestamp is available, wait at least 24 hours before retrying. |
do_not_retry | The issuer will never approve this transaction on this card. | Do not retry. Remove the card from retry queues. Prompt the cardholder for an alternative payment method. |
update_credentials | The payment credentials need updating (e.g. expired card, reissued card). | Trigger Account Updater or prompt the cardholder to update their card details before retrying. |
update_details | The transaction was declined due to a data quality issue. | Review and correct the transaction data (e.g. incorrect expiry date, missing CVV) before retrying. |
cancelled | The cardholder has cancelled this recurring payment arrangement. | Stop all future recurring payment attempts on this card for this mandate. |
token_requirements_not_met | Token provisioning requirements were not fulfilled. | Review the token setup and ensure all scheme requirements are met before retrying. |
not_eligible | The merchant does not qualify for the requested product or service code. | Do not retry. Contact Acquired.com support if unexpected. |
card_product_limitations | The card type is not suitable for this transaction type. Check the detail field for specifics. | Inform the cardholder that their card type is not supported for this payment. See Card product limitations below. |
customer_action_required | The cardholder needs to contact their issuing bank to resolve the issue. | Do not retry automatically. Notify the cardholder to contact their bank. |
scheme_blocked | The scheme or issuer has blocked the transaction. | Do not retry. Prompt the cardholder for an alternative payment method. |
unknown | The advice code could not be fully interpreted in this context. | Apply your default retry logic. Do not assume the transaction is permanently blocked, but do not assume it will succeed either. |
Card product limitations
When category is card_product_limitations, the detail field provides specifics about the card type:
detail value | Meaning | Guidance |
|---|---|---|
non_reloadable_prepaid | The card is a consumer non-reloadable prepaid card. | Not suitable for recurring billing. Contact the cardholder to provide a different payment method. |
single_use_virtual_card | The card is a single-use virtual card number (VCN). | The card number can only be used once and will not work for subsequent payments. |
multi_use_virtual_card | The card is a multi-use virtual card number. | May be subject to restrictions. Refer to scheme documentation. |
Understanding retry_after
retry_afterWhen advice includes retry timing guidance, the retry_after field contains an RFC 3339 UTC timestamp representing the earliest recommended retry time.
How retry_after is calculated:
- Hour-based guidance (e.g. "retry after 1 hour"):
retry_afteris set to the current time plus the specified duration. - Day-based guidance (e.g. "retry after 2 days"):
retry_afteris set to00:00:00Zon the recommended retry day (i.e. midnight UTC, today + N days).
Important considerations:
retry_afteris a recommended earliest retry time. It is not an optimal retry window or a guaranteed approval time.- The timestamp does not account for weekends, bank holidays, merchant operating hours, or customer context.
- You should apply your own optimisation logic (e.g. retry during peak approval hours for your customer base) when determining the actual retry time.
retry_afterwill never be set to a time in the past.- For Visa transactions,
retry_afteris alwaysnullbecause Visa does not provide retry timing guidance.
How Visa and Mastercard differ
Acquired.com abstracts the differences between Visa and Mastercard into a single retry_advice model, but it's helpful to understand how the underlying guidance differs.
Mastercard
Mastercard returns explicit Merchant Advice Codes (MAC) in the authorisation response. These codes provide granular guidance including specific retry timing windows (e.g. retry after 1 hour, after 24 hours, after 2 days, up to 10 days). Acquired.com maps these directly to canonical categories with retry_after timestamps.
Some Mastercard advice codes (notably those related to lifecycle and security declines) require additional context from the issuer response to interpret correctly. In these cases, Acquired.com uses Mastercard's Authorization Optimizer signals to determine the appropriate advice category.
Visa
Visa does not include retry advice in authorisation responses. Instead, Visa classifies issuer response codes into four decline categories:
| Visa category | Meaning | Acquired.com mapping |
|---|---|---|
| Category 1 | Issuer will never approve | do_not_retry |
| Category 2 | Cannot approve at this time | retry_later |
| Category 3 | Data quality — revalidate payment information | update_details |
| Category 4 | Generic / other | unknown |
Acquired.com derives Visa advice internally by mapping issuer response codes to the appropriate category. Because Visa does not provide retry timing, retry_after and acquirer_code are always null for Visa transactions.
Supported endpoints
The retry_advice object is returned on the following API endpoints:
| Endpoint | Description |
|---|---|
POST /payments | Card payments with full card details |
POST /payments/reuse | Payments using a stored card_id |
POST /payments/recurring | Recurring / merchant-initiated payments |
POST /payments/apple-pay | Apple Pay transactions |
POST /payments/google-pay | Google Pay transactions |
POST /payments/credit | Credit transactions |
POST /transactions/{transaction_id}/refund | Refund transactions |
GET /transactions | Transaction list — each transaction includes its own retry_advice field |
GET /transactions/{transaction_id} | Single transaction retrieval |
Note
retry_adviceis not returned in Hosted Checkout, Components, or Payment Links responses. For these integration methods, retrieve advice by callingGET /transactions/{transaction_id}after the transaction completes.
Response examples
Declined with retry timing (Mastercard)
The issuer has declined due to insufficient funds and the scheme recommends retrying after 24 hours:
{
"transaction_id": "a7e3fde5-5b83-44f4-9915-782bc7121717",
"status": "declined",
"reason": "insufficient_funds",
"issuer_response_code": "51",
"check": {
"avs_line1": "matched",
"avs_postcode": "matched",
"cvv": "matched"
},
"retry_advice": {
"category": "retry_later",
"detail": null,
"retry_after": "2026-03-11T00:00:00Z",
"acquirer_code": "25"
},
"links": [
{
"rel": "self",
"href": "/v1/transactions/a7e3fde5-5b83-44f4-9915-782bc7121717"
}
]
}Do not retry (Mastercard)
The issuer has permanently declined. The card account is closed or fraudulent. Do not attempt this transaction again:
{
"transaction_id": "c3f8a219-6e42-4d8b-b1a7-9f2e1c5d3a67",
"status": "declined",
"reason": "do_not_honour",
"issuer_response_code": "05",
"check": {
"avs_line1": "not_matched",
"avs_postcode": "not_matched",
"cvv": "not_matched"
},
"retry_advice": {
"category": "do_not_retry",
"detail": null,
"retry_after": null,
"acquirer_code": "03"
},
"links": [
{
"rel": "self",
"href": "/v1/transactions/c3f8a219-6e42-4d8b-b1a7-9f2e1c5d3a67"
}
]
}Card product limitation (prepaid card)
The card is a non-reloadable prepaid card and is not suitable for recurring billing:
{
"transaction_id": "91b4e7d3-2a5f-4c18-96e0-d7f3b8a12c45",
"status": "declined",
"reason": "generic_decline",
"issuer_response_code": "05",
"check": {
"avs_line1": "matched",
"avs_postcode": "matched",
"cvv": "matched"
},
"retry_advice": {
"category": "card_product_limitations",
"detail": "non_reloadable_prepaid",
"retry_after": null,
"acquirer_code": "40"
},
"links": [
{
"rel": "self",
"href": "/v1/transactions/91b4e7d3-2a5f-4c18-96e0-d7f3b8a12c45"
}
]
}Visa decline — data quality issue
Visa has indicated the decline is due to invalid transaction data. Correct the data and retry:
{
"transaction_id": "58d1f4a6-7b3e-49c2-a5d8-e6f2c9b01d83",
"status": "declined",
"reason": "invalid_card_number",
"issuer_response_code": "54",
"check": {
"avs_line1": "not_checked",
"avs_postcode": "not_checked",
"cvv": "not_checked"
},
"retry_advice": {
"category": "update_details",
"detail": null,
"retry_after": null,
"acquirer_code": null
},
"links": [
{
"rel": "self",
"href": "/v1/transactions/58d1f4a6-7b3e-49c2-a5d8-e6f2c9b01d83"
}
]
}No advice available
When no Merchant Advice Code is returned by the acquirer or the issuer response code does not map to a known category, retry_advice is null:
{
"transaction_id": "d4a72f19-8c6e-4b35-a1e9-3f5d7c82b460",
"status": "declined",
"reason": "generic_decline",
"issuer_response_code": "05",
"check": {
"avs_line1": "matched",
"avs_postcode": "matched",
"cvv": "matched"
},
"retry_advice": null,
"links": [
{
"rel": "self",
"href": "/v1/transactions/d4a72f19-8c6e-4b35-a1e9-3f5d7c82b460"
}
]
}Building your retry logic
Retry Advice provides the signals — your system needs to act on them. Here's a recommended approach for handling the retry_advice object:
Decision flow
-
Check if
retry_adviceis present. Ifnull, apply your default retry logic. -
Read the
categoryvalue and route to the appropriate handler:-
do_not_retry,cancelled,scheme_blocked→ Stop. Remove the payment method from your retry queue. Notify the customer to update their payment details. -
retry_later→ Schedule a retry. Ifretry_afteris present, schedule no earlier than that timestamp. Ifretry_afterisnull, wait at least 1 hour. -
update_credentials→ Request updated card details. Trigger Account Updater if available, or prompt the cardholder via email or in-app notification. -
update_details→ Fix the request data. Check for expired card details, incorrect CVV, or other data quality issues before retrying. -
customer_action_required→ Notify the customer. The cardholder needs to contact their bank directly. Do not retry automatically. -
card_product_limitations→ Check thedetailfield. If the card is prepaid or single-use, prompt the customer to provide a different payment method. -
unknown→ Treat with caution. You may retry, but apply conservative limits and monitor outcomes.
-
-
Always respect scheme retry limits. Regardless of the advice received, card schemes enforce maximum retry limits:
- Mastercard: 10 retries per card per merchant in 24 hours; 35 retries in 30 days.
- Visa: 15 retries in 30 days for Category 2 and 3 declines; zero retries for Category 1 (do not retry).
Scheme compliance and fees
Card schemes enforce rules around transaction retries. Failing to follow retry advice can result in fees.
Mastercard — Transaction Processing Excellence (TPE)
Mastercard's TPE programme monitors retry behaviour and charges fees for excessive or non-compliant retries:
- Excessive retry fee: Retrying a transaction more than 35 times in 30 days on the same card/merchant combination incurs a fee per additional attempt.
- Do-not-retry violations: Submitting a card-not-present authorisation on a card that was declined with
do_not_retryorcancelledadvice within the previous 30 days incurs a per-transaction fee — even if the transaction amount differs. - Authorization Optimizer fee: A fee applies when specific combinations of issuer response codes and Merchant Advice Codes are used.
Visa — Excessive reattempt rules
Visa classifies decline response codes into categories and enforces reattempt limits:
- Category 1 (do not retry): Any reattempt after a Category 1 decline incurs a fee.
- Category 2 and 3: Up to 15 reattempts are permitted within a 30-day rolling window. Each attempt beyond 15 incurs a fee.
How Retry Advice helps
By following the category and retry_after guidance in the retry_advice object, you can:
- Avoid retrying permanently declined transactions (
do_not_retry,cancelled) - Space retries appropriately using
retry_aftertimestamps - Reduce scheme fees by staying within permitted retry limits
- Improve approval rates by retrying at the recommended time
NoteFor more information on Visa's monitoring programmes, see our VAMP Frequently Asked Questions guide.
Availability
Integration methods
| Integration method | retry_advice in response | How to access |
|---|---|---|
| API (direct card payments) | ✅ Yes | Included in the API response |
| Hosted Checkout | ❌ No | Use GET /transactions/{transaction_id} |
| Components | ❌ No | Use GET /transactions/{transaction_id} |
| Payment Links | ❌ No | Use GET /transactions/{transaction_id} |
Acquirer support
Retry Advice coverage depends on the acquiring bank processing the transaction:
| Acquirer | Mastercard MAC | Visa advice | Notes |
|---|---|---|---|
| Trust Payments | ✅ Supported | ✅ Derived by Acquired.com | Full MAC pass-through including retry timing (MAC 24–30) |
| Shift4 | ✅ Supported | ✅ Derived by Acquired.com | Full MAC pass-through including retry timing (MAC 24–30) |
| Cashflows | ❌ Not yet available | ✅ Derived by Acquired.com | Cashflows does not currently pass MAC codes to Acquired.com. retry_advice will be null for Mastercard transactions processed via Cashflows. |
Frequently asked questions
Does Acquired.com automatically retry declined transactions based on advice?
No. Retry Advice is informational only. Acquired.com returns the advice in the API response and it is your responsibility to implement retry logic.
Will retry_advice always be present on declined transactions?
The retry_advice field is always present in the API response, but its value may be null if the acquirer did not return a Merchant Advice Code or the issuer response code does not map to a known category.
What should I do if category is unknown?
This means the advice code could not be fully interpreted. You may apply your default retry logic, but should monitor the acquirer_code value for patterns. As Acquired.com expands its mapping coverage, some unknown values will be reclassified to more specific categories in future releases.
Can I use retry_advice for one-off card payments, or is it only for recurring?
Retry Advice is returned on all card transaction types — one-off, recurring, and merchant-initiated. While it is most valuable for recurring payments (where automated retry logic is common), the guidance is equally applicable to any declined transaction.
Updated about 9 hours ago