Skip to main content

What a decline is

A decline is one settlement provider saying it will not submit a price quote for a payment. It is not an error and it does not arrive as one: declines are counted in the decline_summary that the payment status and quote request status responses carry on a 200. An entry carries a docs_url pointing at its reason on this page, which is absent rather than empty when no page is published. The two say different things. The payment status endpoint counts the providers that declined that payment. The quote request status endpoint counts the ones that declined the batch it was priced in.
A decline is not a failed payment. Several providers can decline while another settles the payment normally. A payment that failed carries its own error code, and that code’s entry on Error codes is the instruction to act on. The classification here describes one provider’s answer, not the payment’s outcome.
The reason set grows whenever a provider gains a cause worth naming, so treat an unrecognised reason as OTHER rather than rejecting the response. This list is generated from the decline catalog the providers report against, and is regenerated whenever that catalog changes, so it cannot fall behind the reasons you actually receive.

Reference

What would change it is what would have to change for that provider to quote. It describes the decline only, never the payment:
  • CONTACT_SUPPORT: the reason is opaque from outside, so raising it with support is the only route.
  • NOT_RETRYABLE_FIX_REQUEST: something in the request has to change before this provider will quote.
  • RETRY_AFTER_DELAY: something other than the request has to change, so the same request may quote later.

AGENT_NOT_READY

Retry classification RETRY_AFTER_DELAY.
The settler had not finished registering when the request arrived.

AUCTION_CLOSED

Retry classification RETRY_AFTER_DELAY.
The quote collection or award window had already closed when the settler evaluated the request.

AWARD_WINDOW_TOO_SHORT

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The window left to produce a quote was below the settler’s minimum.

DEADLINE_TOO_SHORT

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The time left to fulfill this payment was below the settler’s minimum for this corridor.

DRAINING

Retry classification RETRY_AFTER_DELAY.
The settler is draining in-flight work and is not accepting new payments.

INSUFFICIENT_LIQUIDITY

Retry classification RETRY_AFTER_DELAY.
The settler could not fund the payout on the destination chain.

INTERNAL

Retry classification RETRY_AFTER_DELAY.
The settler hit an unexpected error while evaluating the request.

NO_SETTLEMENT_HORIZON

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The request carried no usable fulfillment deadline, so the settler had no refund path.

OTHER

Retry classification CONTACT_SUPPORT. This reason covers more than one condition, so the message differs between responses. Branch on the reason, never on the text.
A settler declined for a reason of its own.
A settler declined for a reason this gateway does not recognise.
A settler declined without naming a reason.

QUOTE_GENERATION_FAILED

Retry classification RETRY_AFTER_DELAY.
The settler could not produce a valid quote for this request.

QUOTE_INVALID

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The request the settler was asked to quote on failed validation.

UNSUPPORTED_DESTINATION_ASSET

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The settler does not serve the requested destination asset.

UNTRUSTED_VERIFIER

Retry classification NOT_RETRYABLE_FIX_REQUEST.
The request named a fulfillment verifier the settler does not trust, or named none at all.