declined status on the synchronous response and fires a payment.refused webhook. Both carry a refusalCode object that tells you why the payment failed and what to do next.
The refusalCode object
Only
reasonCode and recoveryAction are safe to build logic on. originalReasonCode / originalReason are passthrough diagnostics and their format is not stable across providers.recoveryAction
Therius classifies every refusal into one of four recovery actions so your checkout can respond without hard-coding a decision for all 60+ codes.
retry
The decline may clear on a second attempt — a malformed or mistimed message, a system malfunction, or a generic issuer response (including “Do not honor”). Retrying the same card once is reasonable. Always cap retries at a small fixed number — do not loop.
switch_method
Retrying this card will not help (insufficient funds, expired card, restricted card), but a different payment method might succeed. Prompt the shopper to try another card or an alternative method.
terminal
A hard block — pickup/lost/stolen card, closed account, suspected fraud, or a revocation order. Do not offer a retry or an alternate method. Show a neutral failure message and stop.
update_data
Retrying as is will fail until something the shopper entered is corrected, such as a tax ID, a Pix key, a bank account or a name. Ask the shopper to fix the data, then submit again. Used by alternative payment methods.
reasonCode is reported as switch_method — the safe default, since blindly retrying an unclassified decline risks card-scheme excessive-attempt penalties.
Automatic re-routing
Most soft declines are retried by Therius before you ever see them — smart routing cascades the payment to the next connection in the route. The decline you receive on the response is therefore the outcome after Therius has already exhausted the alternatives in that route. Hard declines (terminal above, plus a few others such as incorrect PIN and CVV failures) are returned immediately and are never re-routed, because retrying them on another acquirer would only add scheme violations.
Subscriptions and dunning
For subscription renewals, Therius applies the same classification internally: aterminal decline stops the dunning sequence immediately (the subscription goes to suspended and fires subscription.suspended), rather than wasting the remaining retry attempts on a card the issuer will never approve.
Refusal code reference
The normalizedreasonCode values Therius can return, with their meaning and default recoveryAction.
}
Alternative payment method codes
Refusals for alternative payment methods carry anAPM_* reasonCode. The prefix is reserved: an APM_* value is never a card code. An alternative method refusal that Therius cannot classify is reported as APM_DECLINED, and a technical failure as APM_TECHNICAL_ERROR. The provider’s own code stays available in originalReasonCode.
Expired and canceled payments
When an alternative method payment ends asexpired or canceled because the payer did not pay or walked away, the payment carries APM_EXPIRED or APM_PAYER_CANCELED, and GET /payment/inquiry returns a refusalCode for it with recoveryAction: retry. A cancel you request through the API carries no reason.

