Payments getting declined, stuck, or disappearing? This guide covers failure diagnosis across Stripe, Square, ACH, and peer-to-peer rails โ with specific fix steps for each.
| Code | Meaning | Action |
|---|---|---|
card_declined | Generic decline โ bank refused | Ask customer to call bank or use different card |
insufficient_funds | Balance too low | Offer payment plan or retry later |
do_not_honor | Bank blocked โ often fraud flag | Customer must call bank to authorize |
expired_card | Card expiration date passed | Collect new card details |
incorrect_cvc | CVV mismatch | Re-enter CVV โ 3 failures may lock card |
fraudulent | Stripe Radar flagged this charge | Review Radar rule that triggered, whitelist if legitimate |
authentication_required | 3D Secure required by bank | Enable payment_intent with 3DS โ don't charge without it |
| Code | Meaning | Retryable? | Action |
|---|---|---|---|
| R01 | Insufficient funds | Yes | Retry after 3โ5 days |
| R02 | Account closed | No | Collect new bank info |
| R03 | No account / unable to locate | No | Verify routing + account number |
| R04 | Invalid account number | No | Collect correct account number |
| R07 | Authorization revoked by customer | No | Stop charging โ customer opted out |
| R10 | Customer advises not authorized | No | Dispute โ gather your authorization record |
| R29 | Corporate customer advises not authorized | No | Stop charging โ escalate to finance |
error.code, error.decline_code, and error.charge each tell a different part of the story.Text PJ the processor and error. Most payment rail issues are diagnosed in one session โ no retainer required.