New Error codes
As part of ongoing improvements to our error reporting, we have updated the
error codes returned when a request is declined or held. The codes below have
been added. No request or response schemas have changed — only the
possible values of existing error-code fields.
New error codes
Order APIs — POST /v3/orders
POST /v3/ordersReturned in error.context.details[].code on HTTP 400:
| Code | Message |
|---|---|
DECLINED_BY_BANK_SUSPECTED_FRAUD | Transaction was declined by the bank |
BANK_REVIEW | Transaction is under review by the bank. Please try again after 24 hours. |
DECLINED_SUSPECTED_FRAUD | Account was declined. |
UNDER_REVIEW | Account is under review. Please try again after 24 hours. |
TRANSACTION_REVIEW | Account is under review because of crypto monitoring alerts. Please try again after 24 hours. |
BANK_REVIEW, UNDER_REVIEW and TRANSACTION_REVIEW indicate a temporary
hold pending review; DECLINED_BY_BANK_SUSPECTED_FRAUD and
DECLINED_SUSPECTED_FRAUD are terminal declines for that request.
User creation and role-change APIs
POST /v3/users/individual, POST /v3/users/business, POST /v3/senders/*,
POST /v3/recipients/*, and role-change endpoints. Returned in error.code
on HTTP 409:
| Code | Message |
|---|---|
DECLINED_SUSPECTED_FRAUD | Account was declined. |
UNDER_REVIEW | Account is under review. Please try again after 24 hours. |
KYC/KYB submission APIs
POST /v3/kyc/standard, POST /v3/kyc/advanced, POST /v3/kyc/share/*,
POST /v3/kyb/standard, POST /v3/kyb/advanced. Returned in
error.context.details[].code on HTTP 400:
| Code | Message |
|---|---|
UNDER_REVIEW | Account is under review. |
DECLINED_SUSPECTED_FRAUD | Account was declined. |
Order retrieval and webhooks
GET /v3/orders/{id}, order listing, and order-status webhooks may now carry
any of the codes above as failureCode, as well as the following
payment-failure codes (each with the message "Transaction was declined by
the bank"):
| Code |
|---|
BANK_REJECTED |
BANK_AUTHENTICATION_FAILED |
BANK_UNDER_MAINTENANCE |
INSUFFICIENT_FUNDS |
This applies to all order types.
Recommendation
If your integration branches on error codes, add handling for the codes
above. Treat BANK_REVIEW, UNDER_REVIEW and TRANSACTION_REVIEW as
pending states that may resolve, and the DECLINED_* codes as terminal for
the request.