Unsuccessful Subscription Rebills

Overview of the subscription.charge.failed webhook

When a subscription.charge.failed event is triggered, FastSpring sends a webhook payload with details about the rebill failure. The payload contains the failure reason, which is most commonly due to an expired or declined payment method.

If webhook expansion is enabled, the payload includes full account and product objects. Otherwise, the payload includes only the corresponding IDs.

This page includes:

  • A full sample payload showing a populated subscription.charge.failed webhook
  • A detailed table listing every payload property, including name, type, and description
  • Notes on when each field is included, omitted, or dependent on specific update types

Browse the table sections below or use the quick links to jump to a specific group of fields.

Tip: Not all fields are always included. Refer to the Payload properties table to understand when a field appears.

Webhook payload example (expansion enabled)

When a subscription.charge.failed event is triggered, the webhook sends the following JSON payload:

{
    "reason": "EXPIRED_CARD",
    "account": {
      "id": "abCdE1FGH2Hij3KLMnOpqR",
      "account": "abCdE1FGH2Hij3KLMnOpqR",
      "contact": {
        "first": "Jane",
        "last": "Doe",
        "email": "[email protected]",
        "company": "Company Inc.",
        "phone": "5555555",
        "subscribed": true
      },
      "address": {
        "address line 1": "123 Business Rd",
        "address line 2": "Floor 4",
        "city": "Metropolis",
        "country": "US",
        "postal code": "12345",
        "region": "US-NY",
        "region custom": null,
        "company": "Company Inc."
      },
      "language": "en",
      "country": "US",
      "lookup": {
        "global": "lookup-001"
      },
      "url": "https://company.onfastspring.com/account"
    },
    "subscription": {
      "id": "1abc2DE_FGhIjKLm3NoPQR",
      "quote": null,
      "subscription": "1abc2DE_FGhIjKLm3NoPQR",
      "active": true,
      "state": "trial",
      "isSubscriptionEligibleForPauseByBuyer": false,
      "isPauseScheduled": false,
      "changed": 1749236508799,
      "changedValue": 1749236508799,
      "changedInSeconds": 1749236508,
      "changedDisplay": "6/6/25",
      "changedDisplayISO8601": "2025-06-06",
      "changedDisplayEmailEnhancements": "Jun 06, 2025",
      "changedDisplayEmailEnhancementsWithTime": "Jun 06, 2025 07:01:48 PM",
      "paymentMethodAction": "none",
      "live": false,
      "currency": "USD",
      "declineReason": null,
      "account": "abCdE1FGH2Hij3KLMnOpqR",
      "product": "furious-falcon",
      "sku": "SKU-FF-102",
      "display": "Furious Falcon",
      "quantity": 1,
      "adhoc": false,
      "autoRenew": true,
      "price": 14.95,
      "priceDisplay": "$14.95",
      "priceInPayoutCurrency": 14.95,
      "priceInPayoutCurrencyDisplay": "$14.95",
      "discount": 0,
      "discountDisplay": "$0.00",
      "discountInPayoutCurrency": 0,
      "discountInPayoutCurrencyDisplay": "$0.00",
      "subtotal": 14.95,
      "subtotalDisplay": "$14.95",
      "subtotalInPayoutCurrency": 14.95,
      "subtotalInPayoutCurrencyDisplay": "$14.95",
      "next": 1749340800000,
      "nextValue": 1749340800000,
      "nextInSeconds": 1749340800,
      "nextDisplay": "6/8/25",
      "nextDisplayISO8601": "2025-06-08",
      "end": null,
      "endValue": null,
      "endInSeconds": null,
      "endDisplay": null,
      "endDisplayISO8601": null,
      "canceledDate": null,
      "canceledDateValue": null,
      "canceledDateInSeconds": null,
      "canceledDateDisplay": null,
      "canceledDateDisplayISO8601": null,
      "deactivationDate": 1749945600000,
      "deactivationDateValue": 1749945600000,
      "deactivationDateInSeconds": 1749945600,
      "deactivationDateDisplay": "6/15/25",
      "deactivationDateDisplayISO8601": "2025-06-15",
      "sequence": 1,
      "periods": null,
      "remainingPeriods": null,
      "begin": 1749236450805,
      "beginValue": 1749236450805,
      "beginInSeconds": 1749236450,
      "beginDisplay": "6/6/25",
      "beginDisplayISO8601": "2025-06-06",
      "beginDisplayEmailEnhancements": "Jun 06, 2025",
      "beginDisplayEmailEnhancementsWithTime": "Jun 06, 2025 07:00:50 PM",
      "nextDisplayEmailEnhancements": "Jun 08, 2025",
      "nextDisplayEmailEnhancementsWithTime": "Jun 08, 2025 12:00:00 AM",
      "intervalUnit": "month",
      "intervalUnitAbbreviation": "mo",
      "intervalLength": 1,
      "intervalLengthGtOne": false,
      "nextChargeCurrency": "USD",
      "nextChargeDate": 1749340800000,
      "nextChargeDateValue": 1749340800000,
      "nextChargeDateInSeconds": 1749340800,
      "nextChargeDateDisplay": "6/8/25",
      "nextChargeDateDisplayISO8601": "2025-06-08",
      "nextChargePreTax": 13.84,
      "nextChargePreTaxDisplay": "$13.84",
      "nextChargePreTaxInPayoutCurrency": 13.84,
      "nextChargePreTaxInPayoutCurrencyDisplay": "$13.84",
      "nextChargeTotal": 14.95,
      "nextChargeTotalDisplay": "$14.95",
      "nextChargeTotalInPayoutCurrency": 14.95,
      "nextChargeTotalInPayoutCurrencyDisplay": "$14.95",
      "cancellationSetting": {
        "cancellation": "AFTER_PAYMENT_FAILURE",
        "intervalUnit": "week",
        "intervalLength": 1
      },
      "fulfillments": {
        "instructions": "<p>Thank you for subscribing to Example Subscription Monthly. Please download the installer file using the button or link found on this page. Your license key is also displayed here.</p>"
      },
      "instructions": [
        {
          "type": "trial",
          "trialType": "PAID",
          "isNotTrial": false,
          "periodStartDate": 1749340800000,
          "periodStartDateValue": 1749340800000,
          "periodStartDateInSeconds": 1749340800,
          "periodStartDateDisplay": "6/8/25",
          "periodStartDateDisplayISO8601": "2025-06-08",
          "periodEndDate": 1749254400000,
          "periodEndDateValue": 1749254400000,
          "periodEndDateInSeconds": 1749254400,
          "periodEndDateDisplay": "6/7/25",
          "periodEndDateDisplayISO8601": "2025-06-07",
          "discountDurationUnit": "day",
          "discountDurationLength": 1,
          "discountPercent": 100,
          "discountPercentValue": 100,
          "discountPercentDisplay": "100%",
          "unitDiscount": 14.95,
          "unitDiscountDisplay": "$14.95",
          "unitDiscountInPayoutCurrency": 14.95,
          "unitDiscountInPayoutCurrencyDisplay": "$14.95",
          "discountTotal": 14.95,
          "discountTotalDisplay": "$14.95",
          "discountTotalInPayoutCurrency": 14.95,
          "discountTotalInPayoutCurrencyDisplay": "$14.95",
          "total": 0,
          "totalDisplay": "$0.00",
          "totalInPayoutCurrency": 0,
          "totalInPayoutCurrencyDisplay": "$0.00",
          "totalWithTaxes": 14.95,
          "totalWithTaxesDisplay": "$14.95",
          "totalWithTaxesInPayoutCurrency": 14.95,
          "totalWithTaxesInPayoutCurrencyDisplay": "$14.95",
          "price": 14.95,
          "priceDisplay": "$14.95",
          "priceInPayoutCurrency": 14.95,
          "priceInPayoutCurrencyDisplay": "$14.95",
          "priceTotal": 14.95,
          "priceTotalDisplay": "$14.95",
          "priceTotalInPayoutCurrency": 14.95,
          "priceTotalInPayoutCurrencyDisplay": "$14.95",
          "unitPrice": 0,
          "unitPriceDisplay": "$0.00",
          "unitPriceInPayoutCurrency": 0,
          "unitPriceInPayoutCurrencyDisplay": "$0.00"
        },
        {
          "product": "furious-falcon",
          "type": "regular",
          "isNotTrial": true,
          "periodStartDate": 1749340800000,
          "periodStartDateValue": 1749340800000,
          "periodStartDateInSeconds": 1749340800,
          "periodStartDateDisplay": "6/8/25",
          "periodStartDateDisplayISO8601": "2025-06-08",
          "periodEndDate": null,
          "periodEndDateValue": null,
          "periodEndDateInSeconds": null,
          "periodEndDateDisplay": null,
          "periodEndDateDisplayISO8601": null,
          "intervalUnit": "month",
          "intervalLength": 1,
          "discountPercent": 0,
          "discountPercentValue": 0,
          "discountPercentDisplay": "0%",
          "discountTotal": 0,
          "discountTotalDisplay": "$0.00",
          "discountTotalInPayoutCurrency": 0,
          "discountTotalInPayoutCurrencyDisplay": "$0.00",
          "unitDiscount": 0,
          "unitDiscountDisplay": "$0.00",
          "unitDiscountInPayoutCurrency": 0,
          "unitDiscountInPayoutCurrencyDisplay": "$0.00",
          "price": 14.95,
          "priceDisplay": "$14.95",
          "priceInPayoutCurrency": 14.95,
          "priceInPayoutCurrencyDisplay": "$14.95",
          "priceTotal": 14.95,
          "priceTotalDisplay": "$14.95",
          "priceTotalInPayoutCurrency": 14.95,
          "priceTotalInPayoutCurrencyDisplay": "$14.95",
          "unitPrice": 14.95,
          "unitPriceDisplay": "$14.95",
          "unitPriceInPayoutCurrency": 14.95,
          "unitPriceInPayoutCurrencyDisplay": "$14.95",
          "total": 14.95,
          "totalDisplay": "$14.95",
          "totalInPayoutCurrency": 14.95,
          "totalInPayoutCurrencyDisplay": "$14.95",
          "totalWithTaxes": 14.95,
          "totalWithTaxesDisplay": "$14.95",
          "totalWithTaxesInPayoutCurrency": 14.95,
          "totalWithTaxesInPayoutCurrencyDisplay": "$14.95"
        }
      ],
      "initialOrderId": "S6XqptRvRJmzS1qceZKcNA",
      "initialOrderReference": "ABC1234567-8910-11121"
    }
  }

Navigate this webhook

The subscription.charge.failed webhook payload includes dozens of fields. Use the cards below to jump to a specific section of the property reference.

Payload properties

All fields below are included in the subscription.charge.failed webhook payload. Fields are grouped into categories for easier navigation.

Name Type Description
Event Metadata
reasonstringFailure reason code for the charge, such as `EXPIRED_CARD`. See Reason codes for the full list and suggested actions.
Account Object
accountobjectCustomer account object containing ID, contact information, language, country, and account lookup values
account.idstringFastSpring-generated customer account ID
account.accountstringDuplicate of `account.id` for backward compatibility
account.contact.firststringFirst name of the customer
account.contact.laststringLast name of the customer
account.contact.emailstringEmail address of the customer
account.contact.companystringCompany name of the customer when provided
account.contact.phonestringPhone number of the customer when provided
account.contact.subscribedbooleanWhether the account contact is subscribed to updates
account.address.address line 1stringPrimary street address line
account.address.address line 2stringSecondary street address line
account.address.citystringCity of the account address
account.address.countrystringTwo-letter ISO country code for the address
account.address.postal codestringPostal or ZIP code of the address
account.address.regionstringRegion or state of the address
account.address.region customstringCustom region when not standard
account.address.companystringCompany associated with the address
account.languagestringTwo-letter ISO code for the customer’s preferred language
account.countrystringTwo-letter ISO country code for the customer
account.lookup.globalstringGlobally unique public ID used to look up the account in customer-facing portals
account.urlstringCustomer-facing account management URL
Subscription Object
subscription.idstringUnique identifier for the subscription
subscription.quotestringAssociated quote ID if created from a quote
subscription.subscriptionstringDuplicate of `subscription.id` for backward compatibility
subscription.activebooleanWhether the subscription is currently active
subscription.statestringCurrent state such as `trial`, `active`, `overdue`, `deactivated`, or `canceled`
subscription.isSubscriptionEligibleForPauseByBuyerbooleanWhether the buyer can pause the subscription from their account
subscription.isPauseScheduledbooleanWhether a pause has been scheduled to take effect on the next rebill
paymentMethodActionstringWhether the payment method changed, such as `updated` or `none`
subscription.livebooleanWhether the subscription was created in live mode
subscription.currencystringThree-letter ISO currency code for the subscription
subscription.declineReasonstringReason for payment decline when applicable
subscription.accountstringAccount ID associated with the subscription
subscription.productstringProduct ID associated with the subscription
subscription.skustringSKU of the subscription product
subscription.displaystringCustomer-facing display name of the subscription
subscription.quantityintegerQuantity of the subscription product
subscription.adhocbooleanWhether the subscription is manually billed outside standard flows
subscription.autoRenewbooleanWhether the subscription automatically renews
Pricing
subscription.pricenumberAmount charged per billing period in transaction currency
subscription.priceDisplaystringFormatted display of `price`
subscription.priceInPayoutCurrencynumberSubscription price in payout currency
subscription.priceInPayoutCurrencyDisplaystringFormatted display of `priceInPayoutCurrency`
subscription.discountnumberTotal discount applied to the subscription in transaction currency
subscription.discountDisplaystringFormatted display of `discount`
subscription.discountInPayoutCurrencynumberDiscount amount in payout currency
subscription.discountInPayoutCurrencyDisplaystringFormatted display of `discountInPayoutCurrency`
subscription.subtotalnumberSubtotal amount before taxes
subscription.subtotalDisplaystringFormatted display of `subtotal`
subscription.subtotalInPayoutCurrencynumberSubtotal amount in payout currency
subscription.subtotalInPayoutCurrencyDisplaystringFormatted display of `subtotalInPayoutCurrency`
Rebill and Expiration
subscription.nextintegerTimestamp in milliseconds for the next scheduled billing
subscription.nextValueintegerDuplicate of `next` for backward compatibility
subscription.nextInSecondsintegerTimestamp in seconds for the next scheduled billing
subscription.nextDisplaystringFormatted display of the next scheduled billing date
subscription.nextDisplayISO8601stringNext scheduled billing date in ISO 8601 format
subscription.endintegerTimestamp in milliseconds when the subscription ends, if scheduled
subscription.endValueintegerDuplicate of `end` for backward compatibility
subscription.endInSecondsintegerTimestamp in seconds when the subscription ends, if scheduled
subscription.endDisplaystringFormatted display of the subscription end date
subscription.endDisplayISO8601stringSubscription end date in ISO 8601 format
Cancellation and Deactivation
subscription.canceledDateintegerTimestamp in milliseconds when the subscription was canceled, if applicable
subscription.canceledDateValueintegerDuplicate of `canceledDate` for backward compatibility
subscription.canceledDateInSecondsintegerTimestamp in seconds when the subscription was canceled
subscription.canceledDateDisplaystringFormatted display of `canceledDate`
subscription.canceledDateDisplayISO8601stringCancellation date in ISO 8601 format
subscription.deactivationDateintegerTimestamp in milliseconds when the subscription deactivates, if applicable
subscription.deactivationDateValueintegerDuplicate of `deactivationDate` for backward compatibility
subscription.deactivationDateInSecondsintegerTimestamp in seconds when the subscription deactivates
subscription.deactivationDateDisplaystringFormatted display of `deactivationDate`
subscription.deactivationDateDisplayISO8601stringDeactivation date in ISO 8601 format
Billing Schedule
subscription.sequenceintegerSequence number of the current billing period
subscription.periodsintegerTotal number of billing periods for the subscription
subscription.remainingPeriodsintegerNumber of billing periods remaining
subscription.beginintegerTimestamp in milliseconds when the subscription began
subscription.beginValueintegerDuplicate of `begin` for backward compatibility
subscription.beginInSecondsintegerTimestamp in seconds when the subscription began
subscription.beginDisplaystringFormatted display of the subscription start date
subscription.beginDisplayISO8601stringStart date in ISO 8601 format
subscription.beginDisplayEmailEnhancementsstringUser-friendly subscription start date for email display
subscription.beginDisplayEmailEnhancementsWithTimestringUser-friendly subscription start date and time for email display
nextDisplayEmailEnhancementsstringUser-friendly next charge date for email display
nextDisplayEmailEnhancementsWithTimestringUser-friendly next charge date and time for email display
subscription.intervalUnitstringUnit of time between billing periods such as `month`
subscription.intervalUnitAbbreviationstringAbbreviated unit of time between billing periods such as `mo`
subscription.intervalLengthintegerNumber of `intervalUnit`s between charges
subscription.intervalLengthGtOnebooleanWhether `intervalLength` is greater than one
Next Charge Details
nextChargeCurrencystringThree-letter ISO currency code for the next scheduled charge
nextChargeDateintegerTimestamp in milliseconds of the next scheduled charge
nextChargeDateValueintegerDuplicate of `nextChargeDate` for backward compatibility
nextChargeDateInSecondsintegerTimestamp in seconds of the next scheduled charge
nextChargeDateDisplaystringFormatted display of the next scheduled charge date
nextChargeDateDisplayISO8601stringNext scheduled charge date in ISO 8601 format
nextChargePreTaxnumberPre-tax amount for the next charge in transaction currency
nextChargePreTaxDisplaystringFormatted display of `nextChargePreTax`
nextChargePreTaxInPayoutCurrencynumberPre-tax charge amount in payout currency
nextChargePreTaxInPayoutCurrencyDisplaystringFormatted display of `nextChargePreTaxInPayoutCurrency`
nextChargeTotalnumberTotal charge amount including tax when applicable
nextChargeTotalDisplaystringFormatted display of `nextChargeTotal`
nextChargeTotalInPayoutCurrencynumberTotal charge amount in payout currency
nextChargeTotalInPayoutCurrencyDisplaystringFormatted display of `nextChargeTotalInPayoutCurrency`
Cancellation Settings
cancellationSetting.cancellationstringCancellation trigger such as `AFTER_PAYMENT_FAILURE` or `AFTER_LAST_NOTIFICATION`
cancellationSetting.intervalUnitstringTime unit used with `intervalLength` to determine when cancellation occurs
cancellationSetting.intervalLengthintegerNumber of `intervalUnit`s to wait before cancellation
Fulfillment Object
fulfillmentsobjectContainer for fulfillment data associated with the subscription
fulfillments.instructionsstringHTML content with delivery instructions such as download links or license keys
Instructions Array
instructionsarrayArray of billing instruction objects for each subscription period
instructions.productstringProduct ID for the billing instruction period (only present on regular instructions)
instructions.typestringType of billing instruction such as `trial` or `regular`
instructions.trialTypestringTrial type such as `PAID`, `FREE_WITH_PAYMENT`, or `FREE_WITHOUT_PAYMENT`; present only on trial instructions
instructions.isNotTrialbooleanWhether the instruction is not part of a trial period
instructions.periodStartDateintegerTimestamp in milliseconds for the start of the billing period
instructions.periodStartDateValueintegerDuplicate of `periodStartDate` for backward compatibility
instructions.periodStartDateInSecondsintegerTimestamp in seconds for the start of the billing period
instructions.periodStartDateDisplaystringFormatted display of `periodStartDate`
instructions.periodStartDateDisplayISO8601stringStart date in ISO 8601 format
instructions.periodEndDateintegerTimestamp in milliseconds for the end of the billing period, if known
instructions.periodEndDateValueintegerDuplicate of `periodEndDate` for backward compatibility
instructions.periodEndDateInSecondsintegerTimestamp in seconds for the end of the billing period, if known
instructions.periodEndDateDisplaystringFormatted display of `periodEndDate`
instructions.periodEndDateDisplayISO8601stringEnd date in ISO 8601 format
instructions.discountDurationUnitstringUnit of time over which the discount applies, present only on trial instructions
instructions.discountDurationLengthintegerLength of the discount duration in `discountDurationUnit`s, present only on trial instructions
instructions.discountPercentintegerPercentage discount applied during the period
instructions.discountPercentValueintegerDuplicate of `discountPercent` for backward compatibility
instructions.discountPercentDisplaystringFormatted display of `discountPercent`
instructions.unitDiscountnumberPer-unit discount amount in transaction currency
instructions.unitDiscountDisplaystringFormatted display of `unitDiscount`
instructions.unitDiscountInPayoutCurrencynumberPer-unit discount amount in payout currency
instructions.unitDiscountInPayoutCurrencyDisplaystringFormatted display of `unitDiscountInPayoutCurrency`
instructions.discountTotalnumberTotal discount applied during the period in transaction currency
instructions.discountTotalDisplaystringFormatted display of `discountTotal`
instructions.discountTotalInPayoutCurrencynumberTotal discount in payout currency
instructions.discountTotalInPayoutCurrencyDisplaystringFormatted display of `discountTotalInPayoutCurrency`
instructions.totalnumberTotal amount due for the period in transaction currency
instructions.totalDisplaystringFormatted display of `total`
instructions.totalInPayoutCurrencynumberTotal amount in payout currency
instructions.totalInPayoutCurrencyDisplaystringFormatted display of `totalInPayoutCurrency`
instructions.totalWithTaxesnumberTotal charge amount including taxes in transaction currency
instructions.totalWithTaxesDisplaystringFormatted display of `totalWithTaxes`
instructions.totalWithTaxesInPayoutCurrencynumberTotal including taxes in payout currency
instructions.totalWithTaxesInPayoutCurrencyDisplaystringFormatted display of `totalWithTaxesInPayoutCurrency`
instructions.pricenumberList price before discounts in transaction currency
instructions.priceDisplaystringFormatted display of `price`
instructions.priceInPayoutCurrencynumberList price in payout currency
instructions.priceInPayoutCurrencyDisplaystringFormatted display of `priceInPayoutCurrency`
instructions.priceTotalnumberTotal list price before discounts in transaction currency
instructions.priceTotalDisplaystringFormatted display of `priceTotal`
instructions.priceTotalInPayoutCurrencynumberTotal list price before discounts in payout currency
instructions.priceTotalInPayoutCurrencyDisplaystringFormatted display of `priceTotalInPayoutCurrency`
instructions.unitPricenumberUnit price after discounts in transaction currency
instructions.unitPriceDisplaystringFormatted display of `unitPrice`
instructions.unitPriceInPayoutCurrencynumberUnit price after discounts in payout currency
instructions.unitPriceInPayoutCurrencyDisplaystringFormatted display of `unitPriceInPayoutCurrency`
subscription.initialOrderIdstringInitial order ID that created the subscription
subscription.initialOrderReferencestringInitial order reference identifier for the subscription

Reason codes

The reason field in a subscription.charge.failed webhook reports why the charge failed. Codes are grouped below by category — open a section for the full list, suggested action, and whether FastSpring will retry automatically.

Soft declines (4 codes)

FastSpring retries these automatically per your dunning configuration. The buyer may also need to update their payment method.

CodeMeaningSuggested Action
DECLINED_SOFTGeneral soft decline from the issuer.FastSpring retries automatically. Prompt the buyer to update their payment method if retries fail.
INCOMPLETE_PAYMENTPayment process was not completed.FastSpring retries automatically. No buyer action required.
INSUFFICIENT_FUNDSNot enough funds in the account.FastSpring retries automatically. Prompt the buyer to update their payment method.
VOICE_AUTHIssuer requires voice authorization to proceed.Ask the buyer to contact their bank.
Hard declines (6 codes)

These will not resolve on retry. Prompt the buyer to update their payment method or contact their bank.

CodeMeaningSuggested Action
DECEASEDAccount holder is deceased.No automated action.
DECLINEDHard decline from the issuer.Ask the buyer to use a different payment method or contact their bank.
DISPUTEDPayment is in active dispute.No automated action. Contact FastSpring support if needed.
EXPIRED_CARDCard has expired.Ask the buyer to update their card.
RESTRICTEDCard or account is restricted.Ask the buyer to contact their bank.
UNSUPPORTED_COUNTRYCountry is not supported for this payment method.Contact FastSpring support.
Payment method issues (4 codes)

Something specific is wrong with the payment details. Prompt the buyer to re-enter or verify their information. These will not resolve on retry.

CodeMeaningSuggested Action
API_INVALID_IBANIBAN is invalid.Ask the buyer to verify their IBAN.
CC_ADDRESS_VERIFICATIONBilling address verification (AVS) failed.Ask the buyer to verify their billing address.
CC_CVVCVV / security code mismatch.Ask the buyer to re-enter their card details.
INVALID_TOKENPayment token is invalid or expired.Ask the buyer to re-enter their payment details.
Bank / ACH errors (2 codes)

These apply to ACH and bank account payment methods only. They will not resolve on retry.

CodeMeaningSuggested Action
ACH_INVALID_ACCOUNT_NUMBERInvalid ACH account number.Ask the buyer to verify their account number.
ACH_INVALID_ROUTING_NUMBERInvalid ACH routing number.Ask the buyer to verify their routing number.
Technical / temporary errors (9 codes)

System or communication issues. Most are retried automatically; API_INVALID_REQUEST_DATA and API_REFUND_FAILED indicate problems that require FastSpring support.

CodeMeaningSuggested Action
API_BANK_ACCOUNT_LOGIN_ERRORBank account login failed (open-banking flows).FastSpring retries automatically. Ask the buyer to re-authenticate with their bank if retries fail.
API_GENERIC_ERRORGeneric API error from the payment provider.FastSpring retries automatically. No buyer action required.
API_INVALID_REQUEST_DATAInvalid data in the payment request.Contact FastSpring support. Usually indicates an integration issue.
API_REFUND_FAILEDRefund attempt failed.Contact FastSpring support.
API_TRANSACTION_DECLINEDTransaction declined via the payment API.FastSpring retries automatically. If retries fail, ask the buyer to use a different payment method.
CONNECTIONCommunication error with the payment processor.FastSpring retries automatically. No buyer action required.
INTERNAL_ERRORInternal processing error.FastSpring retries automatically. No buyer action required.
TIMEOUTPayment request timed out.FastSpring retries automatically. No buyer action required.
UNKNOWNDecline reason could not be determined.FastSpring retries automatically. Treat as a soft decline.
Risk & security (2 codes)

Transaction was blocked by FastSpring or processor risk controls. These will not resolve on retry.

CodeMeaningSuggested Action
PROC_RISKBlocked by the payment processor's risk controls.Ask the buyer to use a different payment method, or contact FastSpring support.
RISKBlocked by FastSpring's risk controls.Ask the buyer to use a different payment method, or contact FastSpring support.

Forward compatibility: Treat any unrecognized reason value as a soft decline — FastSpring will continue dunning per your configuration. New codes may be added without breaking changes.