Error and decline codes#
Every code the platform can return on a failed request, with the cause it reports and whether sending the same request again can succeed.
Error & Decline Codes#
When a request fails validation, the synchronous response contains:
{
"result": "ERROR",
"error_message": "Description of the error",
"error_code": 204002
}Error Code Reference
The Category column is the cause, as the platform reports it. The Retry column is what to do about it. They are separate axes, and the same cause can carry different retry advice depending on the code.
Codes marked Not classified are ones where the documented cause does not settle the retry behaviour. They are left unclassified deliberately rather than guessed at, because wrong retry advice either hammers an endpoint that will never succeed or abandons one that would.
| Code | Description | Category | Retry | Guidance |
|---|---|---|---|---|
400# | Duplicate request (order_id already used) | Validation | Terminal | The order_id is spent. Issue a new one. Do not retry the same request. |
204002# | Enabled merchant mappings or MIDs not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204003# | Payment type not supported | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204004# | Payment method not supported | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204005# | Payment action not supported | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204006# | Payment system/brand not supported | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204007# | Day MID limit not set or exceeded | Limits | Not classified | Conflates a limit not set with a limit exceeded. See questions.md Q4. |
204008# | Day merchant mapping limit not set or exceeded | Limits | Not classified | Conflates a limit not set with a limit exceeded. See questions.md Q4. |
204009# | Payment type not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204010# | Payment method not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204011# | Payment system/brand not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204012# | Payment currency not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204013# | Payment action not found | Configuration | Account configuration | Contact support. Retrying will not change the mapping. |
204014# | Month MID limit exceeded | Limits | Transient | A monthly window. Retry in the next period, not sooner. |
204015# | Week merchant mapping limit exceeded | Limits | Transient | A weekly window. Retry in the next period, not sooner. |
208001# | Payment not found | Transaction | Terminal | The trans_id does not exist. Check it rather than retrying. |
208002# | Cannot request 3DS for payment not in 3DS status | Transaction | Not classified | Depends on whether the payment can still reach that state. See questions.md Q4. |
208003# | Cannot capture payment not in PENDING status | Transaction | Not classified | Depends on whether the payment can still reach PENDING. See questions.md Q4. |
208004# | Capture amount exceeds auth amount | Transaction | Terminal | Arithmetic. Retrying the same amount always fails. |
208005# | Cannot refund payment not in SETTLED or PENDING status | Transaction | Not classified | Depends on whether the payment can still settle. See questions.md Q4. |
208006# | Refund amount exceeds payment amount | Transaction | Terminal | Arithmetic. Retrying the same amount always fails. |
208008# | Reversal amount exceeds payment amount | Transaction | Terminal | Arithmetic. Retrying the same amount always fails. |
208009# | Partial reversal not allowed | Transaction | Terminal | Not permitted for this transaction. Send a full reversal. |
208010# | Chargeback amount exceeds payment amount | Transaction | Terminal | Arithmetic. Retrying the same amount always fails. |
205005# | Card token invalid or not found | Token | Terminal | That token will not become valid. Collect the card again. |
205006# | Card token expired | Token | Terminal | That token will not become valid. Collect the card again. |
205007# | Card token not accessible | Token | Not classified | Cause not stated. See questions.md Q4. |
100000# | Previous payment not completed | Validation | Transient | Wait for the earlier payment to reach a final state, then retry. |
decline_reason field for DECLINED transactions. These are human-readable strings from the issuer or risk engine, not codes. Common examples: "Insufficient funds", "Card expired", "Do not honor".Where to go next#
Symptoms that do not carry a code, such as a request that gets no response at all, are on Troubleshooting. The sandbox scenarios that produce specific declines are on Testing.