Skip to main content
A transaction’s error_code value can be null (for successful transactions) or one of the following for failed and declined transactions.

Error codes and payment service responses

The error_code is a normalized category. Each connector maps the codes it receives from the payment service to one of the values on this page, so several different reasons from a payment service can share one error_code. For example, a decline because the card exceeded a spending limit and a decline because the account has too little money can both appear as insufficient_funds. To see the exact reason, for example to decide when to retry a payment, read the fields that carry the payment service’s own response. These fields are available on the transaction in the API and in the dashboard. Not every payment service returns every field, so any of these fields can be null.

Merchant advice codes

Gr4vy passes the merchant_advice_code through as the payment service returns it. It isn’t normalized or mapped to another value. A transaction that returns a merchant advice code isn’t retried with another connection. When a stored card is declined with merchant advice code 01, the real-time account updater can check for updated card details. See the account updater for more information.

Core failures

The system can decline or fail a transaction itself rather than a connector or payment service rejecting the transaction. When this happens, one of the following error codes can be set as the error_code value.

Connector declines

When a payment service declines or fails the transaction the following error_code values can be set based on the response received from the payment service. The original values received from the payment service are available in the payment service response fields of a transaction record.
The amount column in the tables below specifies the amount that can be used to simulate the error_code when using the Card simulator connector.
The Retriable? column in the tables below only applies when the payment service returns no ISO 8583 response code. When an ISO response code is present, that code determines whether the transaction is retried, and the retriable ISO response codes list supersedes this column. A transaction is also never retried when the payment service explicitly marks the attempt as non-retriable, or when the response contains a merchant_advice_code.

Connector failures

Connector capture / void / refund / payout tests