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

Returned in error.context.details[].code on HTTP 400:

CodeMessage
DECLINED_BY_BANK_SUSPECTED_FRAUDTransaction was declined by the bank
BANK_REVIEWTransaction is under review by the bank. Please try again after 24 hours.
DECLINED_SUSPECTED_FRAUDAccount was declined.
UNDER_REVIEWAccount is under review. Please try again after 24 hours.
TRANSACTION_REVIEWAccount 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:

CodeMessage
DECLINED_SUSPECTED_FRAUDAccount was declined.
UNDER_REVIEWAccount 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:

CodeMessage
UNDER_REVIEWAccount is under review.
DECLINED_SUSPECTED_FRAUDAccount 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.