API Reference
Decline Code Reference Complete reference of payment decline codes across Stripe, Braintree, and generic processors — with categories, descriptions, and recommended actions.
This page provides a comprehensive reference of all decline codes that LostChurn maps across supported payment processors. Each code is classified into one of four decline categories that determine the recovery strategy.
Category Recovery Strategy Expected Recovery Rate Soft Retry Silent automatic retries at optimized times 30-40% Hard Customer Dunning campaigns prompting customer action 10-20% Terminal No retry -- mark as unrecoverable 0% Unknown Treated as Hard Customer (conservative default) 10-15%
Code Description Subcategory Max Retries Cooldown insufficient_fundsInsufficient funds in the account Balance 4 48h processing_errorProcessing error at the issuer Issuer Temporary 3 24h try_again_laterIssuer temporarily unable to process Issuer Temporary 3 12h card_velocity_exceededToo many transactions in short period Rate Limit 2 72h generic_declineDeclined without specific reason Generic 3 48h do_not_honorIssuer declined without reason Generic 3 48h issuer_not_availableIssuer system temporarily unavailable Issuer Temporary 3 12h reenter_transactionIssuer requests re-entry Issuer Temporary 2 6h withdrawal_count_limit_exceededExceeded withdrawal count limit Rate Limit 2 72h service_not_allowedCard type not accepted for service Generic 2 48h transaction_not_allowedTransaction type not permitted Generic 2 48h not_permittedTransaction not permitted to cardholder Generic 2 48h offline_pin_requiredOffline PIN verification required Issuer Temporary 2 24h online_or_offline_pin_requiredPIN verification required Issuer Temporary 2 24h no_action_takenIssuer could not process Generic 2 48h revocation_of_all_authorizationsAll authorizations revoked Generic 1 72h approve_with_idCan be approved with identification Generic 2 24h
Code Description Subcategory Customer Action expired_cardCard has expired Card Expired Update payment method incorrect_cvcCVC number is incorrect Card Data Re-enter card details incorrect_numberCard number is incorrect Card Data Re-enter card details incorrect_zipZIP/postal code is incorrect Card Data Re-enter card details invalid_cvcCVC is invalid Card Data Re-enter card details invalid_numberCard number is invalid Card Data Re-enter card details invalid_expiry_monthExpiry month is invalid Card Data Re-enter card details invalid_expiry_yearExpiry year is invalid Card Data Re-enter card details authentication_required3D Secure authentication required SCA / 3D Secure Complete authentication call_issuerCustomer must contact card issuer Verification Contact bank card_not_supportedCard does not support this purchase type Card Type Use a different card currency_not_supportedCard does not support this currency Card Type Use a different card do_not_try_againIssuer has permanently blocked transaction Issuer Block Contact bank or update card new_account_information_availableCard renewed with new details Card Updated Update payment method restricted_cardCard restricted by issuer Issuer Block Contact bank stop_payment_orderCardholder requested stop on payment Issuer Block Contact merchant security_violationSecurity violation detected Security Contact bank card_declinedGeneral card decline Generic Contact bank or update card invalid_accountAccount is invalid Generic Update payment method live_mode_test_cardTest card used in live mode Card Data Use a real card pin_try_exceededPIN entry attempts exceeded Security Contact bank testmode_declineDecline in test mode Card Data Use test-approved card
Code Description Subcategory Why Terminal fraudulentSuspected fraud Fraud Fraud risk -- never retry merchant_blacklistCard on merchant fraud blacklist Fraud Permanently blocked stolen_cardCard reported stolen Fraud Card deactivated lost_cardCard reported lost Fraud Card deactivated pickup_cardCard ordered confiscated by issuer Fraud Card deactivated revocation_of_authorizationAuthorization permanently revoked Closed Account Cannot charge
Never retry Terminal decline codes. Repeated attempts on cards flagged as stolen or fraudulent can result in fines from card networks and may jeopardize your merchant account.
Braintree uses numeric processor response codes. LostChurn maps these to the same four categories.
Code Description Subcategory Max Retries Cooldown 2001Insufficient funds Balance 4 48h 2002Limit exceeded Rate Limit 2 72h 2003Cardholder activity limit exceeded Rate Limit 2 72h 2038Processor declined Issuer Temporary 3 24h 2046Declined Generic 3 48h 2047Call issuer -- general decline Generic 3 48h 2053Card reported as lost or stolen (soft) Generic 1 72h 2057Issuer or cardholder restriction Generic 2 48h 2059Contact issuer Generic 2 48h 2099General processor error Issuer Temporary 3 12h
Code Description Subcategory Customer Action 2004Expired card Card Expired Update payment method 2005Invalid credit card number Card Data Re-enter card details 2006Invalid expiration date Card Data Re-enter card details 2010Card issuer declined CVV Card Data Re-enter card details 2014Card type not accepted Card Type Use a different card 2024Card type not enabled Card Type Use a different card 2044Decline -- CVV2/CID failure Card Data Re-enter card details 2048Invalid amount Generic Contact merchant 2051Insufficient funds (hard) Generic Add funds or use different card 2074Funding source funding failed Generic Update funding source 2075PayPal business account restricted Generic Contact PayPal
Code Description Subcategory Why Terminal 2000Do not honor Fraud General permanent decline 2007No account Closed Account Account does not exist 2009No such issuer Closed Account Invalid routing 2015Transaction not allowed Fraud Permanently blocked 2041Declined -- fraud detected Fraud Fraud risk 2043Fraud detected -- card reported lost/stolen Fraud Card deactivated 2060Contact gateway Closed Account Gateway-level block 2062Invalid gateway configuration Closed Account Configuration issue
For payment processors not explicitly mapped, LostChurn uses a generic mapping based on common decline patterns.
Pattern Description Subcategory insufficient_fundsInsufficient funds Balance temporary_failureTemporary processing failure Issuer Temporary rate_limitedRate limit exceeded Rate Limit try_againRetry suggested Issuer Temporary processing_errorGeneral processing error Issuer Temporary issuer_unavailableIssuer system down Issuer Temporary
Pattern Description Subcategory expiredCard or account expired Card Expired invalid_cardCard details invalid Card Data invalid_cvcCVC/CVV invalid Card Data authentication_requiredAuthentication needed SCA / 3D Secure card_not_supportedCard type not accepted Card Type restrictedCard or account restricted Issuer Block contact_issuerCustomer must contact bank Verification
Pattern Description Subcategory fraudFraud detected Fraud stolenCard reported stolen Fraud lostCard reported lost Fraud blacklistedCard blacklisted Fraud account_closedAccount permanently closed Closed Account
When a failed payment webhook arrives, LostChurn:
Extracts the raw decline code from the webhook payload.
Looks up the code in the PSP-specific mapping table.
Assigns a category and subcategory that determine the recovery strategy.
Sets retry parameters (max retries, cooldown period) based on the subcategory.
Routes to the appropriate handler -- silent retries for Soft Retry, dunning campaigns for Hard Customer, or immediate terminal marking.
If a code is not found in the mapping table, it defaults to Unknown and is treated as Hard Customer to avoid retrying codes that should not be retried.
LostChurn's decline code mapping is updated regularly as payment processors introduce new codes. If you encounter an unmapped code, it will be classified as Unknown until the mapping is updated. You can report unmapped codes to support@lostchurn.com to expedite mapping.
You can filter payments by decline code or category using the Payments API :
# All payments with insufficient_funds decline
curl "https://api.lostchurn.com/v1/payments?decline_code=insufficient_funds" \
-H "Authorization: Bearer lc_live_your_api_key"
# All payments in the soft_retry category
curl "https://api.lostchurn.com/v1/payments?decline_category=soft_retry" \
-H "Authorization: Bearer lc_live_your_api_key"