# Why did Stripe charge a customer after they cancelled?

> A customer cancelled but Stripe still charged them. Why the subscription kept running or billed a final amount, how to check it, and how to refund.

Canonical: https://app369.com/fix/stripe-customer-charged-after-cancelling/
Last updated: 2026-11-12

A customer says they cancelled, then an email from Stripe says they paid again. Now they want their money back and they may file a dispute. Stripe only stops billing when the subscription is cancelled in Stripe, and even then a final charge can go out. Here is what Stripe’s docs say, in their words, what to check, or hand it over at a fixed price.

**Rather hand it over?** [App Fix Ticket](https://app369.com/fixed-price/flutter-firebase-bug-fix/): One reproducible bug in an existing mobile or web app, diagnosed and fixed.

[Pay $450 for a Diagnosis](https://buy.stripe.com/dRmdRa7K4bWz8CWdwagw003) [**Ask a question first**](https://app369.com/contact/?offer=offer1-diagnosis&amp;ask=1)

Full refund if Simon can’t take it on once he sees your project, or if you cancel before work starts. [Refund terms](https://app369.com/terms-of-service/#refunds).

- ![](https://app369.com/.netlify/images?w=28&amp;fm=webp&amp;url=%2Fimages%2Fszymon.jpg)Simon does the work himself
- [5.0 from 127 Fiverr reviews, checked Oct 30, 2026](https://app369.com/reviews/)

**Short answer**

Open the customer in the Stripe Dashboard and check three things: that the subscription itself shows as canceled, that the customer has no second active subscription, and whether the charge is a final invoice for prorations or pending invoice items. If the cancel only happened inside your app, Stripe never heard about it. Refund the payment from the Payments page, then fix the cancel flow so it cancels in Stripe.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **Why the customer was charged, and the fix**

1. 01 ### **The app cancelled, but Stripe never did** An app can mark the account as cancelled in its own database and hide the paid features. If the code never cancels the subscription in Stripe, Stripe keeps billing on schedule. Simon checks the cancel button’s code path end to end and confirms the subscription status in Stripe changes.
2. 02 ### **The customer has a second subscription**
  > “Your customer has another active subscription” [**Stripe, Cancel subscriptions**](https://docs.stripe.com/billing/subscriptions/cancel) A customer who signed up twice, or upgraded by starting a new plan, can have two subscriptions. Cancelling one leaves the other billing. Check the customer’s Subscriptions list in the Dashboard. Stripe also says pending invoice items can still be billed while another subscription is active.
3. 03 ### **A final invoice picked up leftover charges**
  > “The subscription cancellation includes a final invoice” [**Stripe, Cancel subscriptions**](https://docs.stripe.com/billing/subscriptions/cancel) Cancelling normally stops new invoices. But if the cancellation includes a final invoice, or the customer has another active subscription, one-off items still waiting to be billed (pending invoice items) can be charged. To stop pending items being billed, delete them.
4. 04 ### **Cancelled at period end, with prorations still waiting**
  > “If you set the subscription to cancel at period end, any pending prorations are left in place and still collected at the end of the period.” [**Stripe, Cancel subscriptions**](https://docs.stripe.com/billing/subscriptions/cancel) Cancelling at the end of the period lets the customer keep what they already paid for. But prorations already created, for example from a plan change earlier in the period, are still charged when that period ends.
5. 05 ### **A future cancel date created a prorated charge**
  > “Setting a future cancel_at date can shorten a renewal period and create a proration debit.” [**Stripe, Prorations**](https://docs.stripe.com/billing/subscriptions/prorations) Setting the subscription to end on a chosen date, rather than at the end of the period, changes the length of the last period, and Stripe can bill for that part as a proration.

Checked against the vendor’s docs on November 12, 2026: [Stripe docs: Cancel subscriptions](https://docs.stripe.com/billing/subscriptions/cancel); [Stripe docs: Prorations](https://docs.stripe.com/billing/subscriptions/prorations); [Stripe docs: Refunds](https://docs.stripe.com/refunds).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [$950**Stripe Billing Fix and Setup**Subscriptions, webhooks, customer portal and failed payments set up or fixed, tested in Stripe test mode.**See scope and start**](https://app369.com/fixed-price/stripe-billing-setup/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Stripe customer charged twice**](https://app369.com/fix/stripe-customer-charged-twice/) · [**Stripe subscription canceled, but access is wrong**](https://app369.com/fix/stripe-subscription-canceled-access-wrong/) · [**Stripe dispute or chargeback**](https://app369.com/fix/stripe-dispute-chargeback/) · [**Stripe customers not getting receipts**](https://app369.com/fix/stripe-customers-not-getting-receipts/)

Questions

## **More on this error**

<details>

<summary>**How do I refund the customer? **+</summary>

Find the payment on the Payments page, click the overflow menu to the right of it and select Refund payment. Stripe issues a full refund by default, and you can enter a smaller amount for a partial refund. Stripe says its processing fees from the original payment aren’t returned.

</details>

<details>

<summary>**Should a cancel take effect now or at the end of the period? **+</summary>

Stripe cancels immediately by default. Cancelling at the end of the billing period lets the customer use the time they already paid for. Pending prorations are still collected at the end of that period, and after that Stripe generates no more invoices for the subscription. A second active subscription keeps billing separately.

</details>

<details>

<summary>**Can I refund when I cancel in the Dashboard? **+</summary>

Yes. Stripe lets you refund a prorated amount, refund the last payment in full or give no refund. If you set a custom cancel date, the Dashboard doesn’t offer a refund, so refund the payment separately.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)