status: DECLINED, the response carries a declineReason object that explains why.
code is for your integration; message is for the cardholder.codeis a machine-readable identifier intended for your backend logic - branching on it to route the cardholder to a top-up screen, prompt for a PIN re-entry, surface a “card blocked” support flow, and so on. Do not render the code string itself to end users.messageis human-readable English copy safe to display directly to the cardholder as a sensible default. You can also write your own copy keyed offcodewhenever you want fuller control over UX.
declineReason.code by what your integration or the cardholder can do about it. For lifecycle context (when a decline is recorded, what webhook fires) see Decline at authorization.
Cardholder can self-resolve
The cardholder can take an action and retry.Network-mandated limits
The transaction exceeded a limit enforced by the platform. Trying a smaller amount or waiting for the limit window to reset usually resolves it.Merchant or transaction restriction
The card cannot be used for this particular transaction. The cardholder should use a different payment method or merchant; retrying the same flow will not help.Spending policy controls
The transaction was blocked by a spend policy you configured. The declined transaction also carries apolicy reference naming the exact policy responsible, so you can tell which rule fired. Retrying the same transaction will not help until the limit window resets or the policy is changed.
Requires support or program action
The card or account is in a state that the cardholder cannot resolve themselves - your team needs to act, or the cardholder needs to contact support.Security
Catch-all
If you need the underlying reason for a specific transaction that came back as
INTERNAL_ERROR, contact Reap support with the transaction ID.
In External authorization projects, INTERNAL_ERROR is also what the cardholder sees when your authorization endpoint does not respond in time or returns an invalid response. Reap fails closed and records the underlying cause on its side.