Core Concepts
Decline Codes
Savby maps every Stripe decline code to a precise recovery strategy. Below is the complete reference for all 22+ supported codes, grouped by the action Savby takes.
Retriable
Savby schedules automatic charge retries at optimal intervals.
| Code | Description | Default schedule |
|---|---|---|
| insufficient_funds | Card holder doesn't have enough funds to cover the charge. | 24 h → 72 h → 7 d |
| card_declined | Generic decline — the issuer didn't provide a reason. | 4 h → 8 h → 24 h |
| processing_error | An error occurred while processing the card. | 1 h → 2 h → 24 h |
| do_not_honor | Issuer generic decline, often temporary. | 24 h → 48 h → 24 h |
| try_again_later | Issuer is temporarily blocking the transaction. | 6 h → 12 h → 24 h |
| service_not_allowed | Service type is blocked for this card. | 48 h → 72 h → 24 h |
| transaction_not_allowed | Transaction type not permitted for this card. | 24 h → 48 h → 24 h |
Notify only
Retrying will not help — the customer must update their payment method.
| Code | Description | Action |
|---|---|---|
| expired_card | The card has passed its expiry date. | Email customer with payment update link |
| incorrect_cvc | The CVC code does not match. | Email customer with payment update link |
| incorrect_zip | ZIP code verification failed. | Email customer with payment update link |
| incorrect_number | The card number is incorrect. | Email customer with payment update link |
| invalid_cvc | The CVC code is not valid. | Email customer with payment update link |
| invalid_expiry_month | The expiry month is invalid. | Email customer with payment update link |
| invalid_expiry_year | The expiry year is invalid. | Email customer with payment update link |
| card_not_supported | The card doesn't support this type of purchase. | Email customer with payment update link |
| currency_not_supported | The card doesn't support the payment currency. | Email customer with payment update link |
Manual follow-up
High-risk codes where automated recovery is inappropriate.
| Code | Description | Action |
|---|---|---|
| lost_card | The card has been reported lost. | Flag for manual follow-up |
| stolen_card | The card has been reported stolen. | Flag for manual follow-up |
| pickup_card | The issuer is requesting the card be retrieved. | Flag for manual follow-up |
| restricted_card | The card has been restricted by the issuer. | Flag for manual follow-up |
| fraudulent | Transaction suspected of fraud. | Flag for manual follow-up |
| blocked | Transaction blocked for compliance reasons. | Flag for manual follow-up |
Unknown decline codes
If Stripe returns a decline code that is not in Savby's mapping table, Savby falls back to a safe 24-hour retry. This ensures no payment failure is silently ignored.