This is the abbreviated version of the full payment decline reference. Use it to quickly look up a decline code or processor message and see what to do next. It's grouped by the action needed, which is usually what you're trying to figure out first.
How to use this: search by the processor code (e.g. R01, 705, 51) or by a phrase from the raw decline message (e.g. "do not honor," "CVV," "insufficient funds") to find the matching row.
🚫 Not the member's fix — handle these yourself
Members are never emailed or reminded about these. If a member "wasn't chased" for an unpaid invoice, check here first — telling them to replace a working card would be the wrong move.
Category | Codes | What happened | What to do |
merchant_configuration | 17, 29, 209, 814, 1000, 1007, 4013 | Setup problem on your gym's Stax processor account — nothing wrong with the member's card. | Contact Stax support with the invoice number to fix provisioning, then retry. |
merchant_amount_limit | 4019 | Charge is over your account's per-transaction limit. | Ask Stax to raise the limit, or split the invoice. |
merchant_data_error | 190, 801, 802 | Required info (usually first/last name) missing from the member's record. | Fill in the missing field on the member's profile, then retry. |
account_holder_deceased | R14, R15 | Bank confirmed the account holder is deceased. | Don't retry or re-enable reminders. Cancel the membership/invoices and write off the balance per your policy. |
✅ Pay it — payment method is fine
Category | Codes | What happened | What to do |
ach_insufficient_funds | R01, R09 | Bank account balance too low. | Member adds funds or pays by card instead. |
insufficient_funds | 51 (leading) | Card lacked available balance/credit. | Member adds funds, frees up credit, or uses another card. |
three_d_secure | — | Card needs extra (3-D Secure) verification an automatic charge can't complete. | Member pays the invoice themselves so they can complete the verification step. |
processor_error | 96, 91/96 (leading) | Temporary network/processor glitch — not the card's fault. | Member retries; if it keeps failing, escalate to support. |
awaiting_payment | — | Invoice simply hasn't been paid yet. | Member pays, or tells you if it was already paid another way. |
💳 New payment method needed — stored card/account is unusable
Category | Codes | What happened | What to do |
ach_account_closed | R02 | Bank account on file is closed. | Member adds a new bank account or card. |
ach_invalid_account | R03, R04, R17, 702 | Account number doesn't match or doesn't exist. | Member re-enters the correct ACH account number. |
ach_invalid_routing | R13, 140, 701 | Routing number isn't a valid, routable ABA number. | Member re-enters the correct 9-digit ACH routing number. |
ach_non_transaction_account | R20 | Account type (e.g. savings) can't be debited electronically. | Member switches to a checking account or a card. |
ach_account_type | 703, 704 | Account type/ownership (checking/savings, personal/business) wasn't set correctly. | Member re-adds the account with the correct type. |
ach_bank_changed | R12 | Member's bank branch was sold/merged; old routing number is dead. | Member gets current routing/account numbers from their bank. |
account_closed | 14 | Card/account on file is closed. | Member adds a new card or account. |
cvv_mismatch | — | Security code (CVV) didn't match. | Member re-enters the card with the correct CVV. |
avs_mismatch | — | Billing address/ZIP didn't match what the bank has. | Member re-enters the card with the correct billing address. |
billing_address_invalid | 705, 706 | City/ZIP format not accepted by the payment network. | Member corrects formatting (letters only for city; 5- or 9-digit ZIP). |
expired_card | 54 (leading) | Card is expired. | Member adds their replacement card. |
lost_or_stolen | 41, 43 (leading) | Bank flagged the card lost, stolen, or restricted. | Member uses a different card. |
invalid_card | — | Card number rejected as invalid (typo or reissued card). | Member re-enters carefully or uses a different card. |
call_issuer | 01, 02 (leading) | Bank wants to approve first — usually a routine fraud check. | Fastest fix: different card. Or member calls the number on the back of the card. |
limit_exceeded | 61, 65 (leading) | Charge exceeds a spending/withdrawal limit. | Member uses a different card, or calls the bank to raise the limit. |
transaction_not_allowed | 57, 58, 62 (leading) | This card type doesn't allow this kind of charge (prepaid, corporate, inactive, etc.). | Member activates the card or uses a different one. |
do_not_honor | 05 (leading) | Generic bank decline with no reason given. | Fastest fix: different card. Or member calls their bank. |
pin_tries_exceeded | — | Too many incorrect PIN attempts locked the card. | Member uses a different card or resets their PIN with the bank. |
issuer_blocked_category | — | Card issuer blocks payments to gyms (common on HSA/FSA/corporate cards). | Member uses a personal card instead. |
suspected_fraud | — | Bank's fraud filter blocked the charge. | Fastest fix: different card. Or member calls the bank to confirm the charge is genuine. |
recurring_stopped | — | Bank has a standing block on recurring charges from your gym. | Member uses a different card, or calls the bank to lift the block. |
verification_error | — | Saved card/account failed validation. | Member re-enters it from scratch, matching name and address exactly. |
no_payment_method | — | Nothing on file to charge. | Member adds a payment method. |
unknown (fallback) | — | Payment failed with no reason passed along by the bank. | Member tries a different card/account, or confirms the current one is valid and unblocked. |
📞 Call their bank — only the bank can clear it
Category | Codes | What happened | What to do |
ach_authorization_revoked | R05, R07, R08, R10, R29 | Bank stopped the debit (stop payment, revoked authorization, or ACH debit block). | Member calls their bank to authorize your gym as a payee. |
ach_account_frozen | R16 | Bank account is frozen or restricted. | Member calls the bank; use another payment method in the meantime. |
ach_returned | R06, R11 | Bank payment initially went through but was later returned. | Member calls the bank to find out why before retrying. |
🏋️ Contact the gym — don't just retry
Category | Codes | What happened | What to do |
velocity_limit | — | Same card charged too many times in quick succession (anti-double-charge safeguard). | Check the statement for a duplicate charge first; if still blocked, you'll need to get it released. |
duplicate | 4001 | Looked like a repeat of a charge that already succeeded. | Confirm on the statement; clear the invoice if it was already paid. |
risk_decline | 996 | Provider's fraud engine held the charge for review. | Don't let the member keep retrying — you need to get it released, or have them add another payment method. |
Reminder cadence: Members are emailed at 1, 3, 7, and 14 days past due, then never again for that invoice — except for the "Not the member's fix" group above, where reminders are suppressed entirely.
A code not listed here? Send the raw decline message to the team — it means the lookup table needs a new entry.