> For the complete documentation index, see [llms.txt](https://docs.flycode.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flycode.com/docs/introduction/what-causes-payment-failures-and-involuntary-churn.md).

# What causes failed payments and involuntary churn?

The causes of failed subscription payments: insufficient funds, generic declines, outdated card credentials and issuer risk rules, and why most are recoverable.

There’s no single cause of this problem that can be isolated. In fact, there are dozens of reasons (insufficient funds, fraud, generic declines, AVS, SCA, invalid card, etc.), and solutions to each failure need to be applied individually. Let’s look at a few examples:

1. **Batch Processing and Fixed-Interval Retries.** The majority of subscription payments and retries are processed in bulk during off-hours. If your customers are based in multiple time zones, this can increase payment failures and reduce the success rate of retries. Remember when you had to notify your bank when you were traveling? The concept is the same, a 3am charge is more likely to get flagged as fraud than a 9am charge.
2. **Outdated Card Credentials or Invalid Card Numbers:** These are frustrating because you think you have to ask your customers to do something, surprisingly there are many cases when you don’t. When you lose a credit card and replace it, do you ever wonder how Netflix still manages to charge you? It’s all thanks to Card Account Updater and Network Tokenization: if you don’t have it implemented, it’s an easy win.
3. **Customers with Insufficient Funds:** Timing is a critical factor, especially with these types of errors. If they don’t have funds, don’t force it. When retry attempts are spread out or targeted around periods of the month when cash inflow is expected, success rates will go up.
4. **Payments that are incorrectly classified as fraud:** This can cause financial losses, as well as a negative impact on customer experience. It is important to prevent those legitimate payments from failing.

When you’re on the receiving end, teams generally believe that failed payments are not only a black box, but the cost of doing business. Some believe that when a payment fails a new card is required so they rely on sending emails or making phone calls to resolve them.

<br>

## Related

* [Causes & Risks](https://help.flycode.com/understanding-involuntary-churn/causes-and-risks) in the Help Center
* [Decline Codes Explained](https://help.flycode.com/decline-codes-explained)
* [Subscription payment decline codes guide for Stripe](https://docs.flycode.com/docs/subscription-payment-decline-codes-guide-for-stripe)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.flycode.com/docs/introduction/what-causes-payment-failures-and-involuntary-churn.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
