Skip to main content

Refunds and disputed payments

A complete guide to refunding a client — from partial refunds and the Stripe Dashboard to handling disputed payments raised with the client's bank.

This article walks through every situation where a client asks for their money back and what you, as the studio, can do about it. With recurring memberships, refunds work a little differently than with one-off payments, because of prorated charges, credit balances, and the connection to Stripe.

Three ways a client can "get their money back"

Method

Who triggers it

Where the money goes

Refund to the card

The studio (via the Stripe Dashboard)

Back to the client's original payment card

Credit balance (rare)

Stripe (only in certain prorated cases)

An internal credit in Stripe, applied to future payments

Disputed payment with the bank

The client, with their bank

Back to the client's account (through the bank's process)

Each path has its own rules, its own impact on your bookkeeping, and its own effect on your reputation with Stripe.

Note: A credit balance is rare with recurring memberships. When a client switches to a cheaper variant with the same period length, the price drop is scheduled for the end of the current period and no credit is created. The client simply uses up what they've already paid for, and from the next renewal they pay the new (lower) price. A credit only arises from the less common operations described below (for example, changing the period length, or refunding as a credit).

1. Refund to the card

When to do it

  • The client has stopped coming and wants a refund for the unused period.

  • There's been a misunderstanding (the client thought they'd already cancelled, but Stripe still charged them).

  • To head off a dispute with the bank (the client is threatening to open a disputed payment with their bank; it's better to refund proactively).

  • The client paid by mistake (for example, a duplicate account or a purchase from a different profile).

How to do it

For recurring memberships, Zenamu doesn't offer its own Refund button when you cancel immediately. You issue the refund directly in the Stripe Dashboard:

  1. Sign in to the Stripe Dashboard (dashboard.stripe.com).

  2. Search for the client by email (the Customers section).

  3. Open their profile → the Invoices tab → find the specific invoice (the renewal payment you want to refund).

  4. Click Refund in the top-right corner.

  5. Choose the amount:

    • Full refund: refunds the entire invoice amount.

    • Partial refund: enter a specific amount (for example, for the unused days).

  6. Select a reason (for your records) and confirm.

Stripe usually returns the money to the client's card within 5–10 business days (it depends on the bank). If you have it enabled in Stripe, the client also typically receives an automatic confirmation email from Stripe.

How Zenamu reacts to a refund made via the Stripe Dashboard:

  1. Stripe sends Zenamu a notification about the refund.

  2. A full refund internally triggers an automatic cancellation of the membership (the "Recurring membership cancelled" event), not a separate refund record. A partial refund triggers no automatic cancellation. You can see the status of the refund itself on the document: a credit note appears in the order detail, and in the Stripe Dashboard under the Refunds section.

  3. Zenamu issues a credit note for the original invoice, either internally (CZ/SK studios, available in the Pohoda/ISDOC export) or through an external service (Hungary: Számlázz.hu / Billingo).

  4. Full refund (an amount equal to the original payment): Zenamu automatically cancels the membership in both Zenamu and Stripe. The client loses access immediately and no further manual steps are needed.

  5. Partial refund (for example, half the amount, a refund for unused days): Zenamu keeps the membership active, the client keeps attending, and the recurring payments keep running. If you want to end access as well as issue the partial refund, you also need to click Cancel immediately in the Zenamu admin.

For tax implications (such as whether a refund is still possible after a year under your local VAT rules), check with your accountant. Zenamu issues the document based on what you do in the Stripe Dashboard.

Refund limits

  • Time limit: Stripe allows refunds up to 180 days after the original charge. After that, you can't refund the money through Stripe (you'll have to handle it another way).

  • Maximum amount: You can't refund more than the client paid.

  • Multiple refunds: You can refund a single payment in parts (for example, twice for half each), as long as the total doesn't exceed the original amount.

What happens to the membership after a refund

It depends on whether it's a full or a partial refund:

  • Full refund (an amount equal to the original payment): Zenamu automatically cancels the membership and unsubscribes the client in both Stripe and locally. The client loses access immediately.

  • Partial refund: Zenamu keeps the membership active. If you want to end access along with the partial refund, you also need to click Cancel immediately in the client's membership detail.

Important — a common scenario: If you want to refund a client for just a few unused days (a partial refund) and end their access at the same time, the refund alone won't do it. Zenamu only triggers an automatic cancellation for a full refund. So always double-check the membership status in the admin.

What happens to the accounting document

Zenamu issues a credit note automatically, as long as the original payment was real (an amount > 0). How it's issued depends on the studio's setup:

  • CZ / SK studios: an internal credit note in your own number series, available in the export for your accountant (Pohoda XML, ISDOC 6.0.2).

  • Hungarian studios with a Számlázz.hu or Billingo integration: the credit note is issued automatically through the external service for the original invoice.

Exception: for purchases with a zero amount (for example, a first period fully covered by a credit or a 100% discount code), no credit note is issued. There's nothing to credit, because no accounting transaction took place.

2. Credit balance

A credit balance is an internal credit on the client's Stripe account, not money in the client's bank account. It only arises in certain situations:

  • Switching to a variant with a different period length (for example, from monthly to yearly). The cycle restarts and Stripe calculates a prorated credit for the unused part of the original period. This is usually applied directly on the new invoice, but in rare cases part of it may remain as a balance on the account.

  • A manual refund issued as a credit, when the studio doesn't refund the payment to the card but leaves it as a credit to be applied to a future purchase.

What a credit balance does NOT generate:

  • Upgrading to a more expensive variant (same interval, higher price): Stripe only charges the prorated difference, the cycle stays the same, and no credit is created.

  • A scheduled price drop (same interval, lower price): no immediate effect; the new price only applies from the next renewal.

  • A bulk price drop with the Keep existing members at the original price option: the new price only applies to future purchases; existing members are unchanged.

  • A bulk price drop with the Apply to all members option: the new price only applies from the next regular renewal; no credit is created.

How the credit is applied

At the next renewal payment, Stripe automatically deducts the credit from the full price:

  • If the credit covers the full price, the client pays nothing (but the membership stays active).

  • If the credit covers only part, the remainder is charged to the card.

  • The credit is applied gradually until it runs out.

The client wants to "cash out" the credit to their card — what to do

A credit balance can't be automatically converted into a refund. If the client asks for the money on their card instead of a credit (for example, their membership is ending and they'd lose the credit):

  1. Open the client's profile in the Stripe Dashboard → the Balance tab (you'll see the current credit).

  2. Manually refund an amount from one of the earlier invoices, matching the size of the credit; this offsets the credit. You'll find the Refund button on every paid invoice.

  3. If Stripe won't allow the refund (for example, after 180 days), offer the client an alternative: a discount on their next purchase, in-app credits, or make-up sessions directly in Zenamu.

Important: A credit balance is tied to the client's specific Stripe account (and therefore to one specific studio). If the client moves to a different studio, the credit can't travel with them. It stays with the original studio and is used up from future payments there (or it simply goes unused).

3. Disputed payment with the bank

A disputed payment is when a client asks their bank to reverse a payment, without going through the studio. It's a serious situation with consequences.

What happens behind the scenes

  1. The client files a complaint with their bank (usually online, in their banking app).

  2. Stripe receives a dispute notification from the bank and immediately:

    • Freezes the disputed amount in your Stripe account (you can't use it).

    • Charges a dispute fee (on the order of 15 USD / 15 EUR, converted according to your Stripe pricing; you'll find the current amount at stripe.com/pricing).

    • Opens a case with a deadline (usually 7 days) for your response.

  3. Zenamu does NOT notify you about a disputed payment automatically. You have to track it manually in the Stripe Dashboard.

What the studio needs to do

  1. Regularly check the Disputes section in the Stripe Dashboard (at least once a week). Stripe will also send you an email when a new dispute comes in, so set up notifications.

  2. For a new disputed payment, decide how to respond:

    • Accept: the disputed amount goes to the client for good, and Stripe charges you the dispute fee. Use this when the client is in the right (for example, a charge that wasn't justified), or when you intend to refund the client anyway; accepting saves you time and further admin.

    • Challenge it: send Stripe your evidence (a description of the service, emails, the booking history, a screenshot of the payment form with the client's consent). Stripe passes it on to the bank, and the bank decides.

  3. If you lose the dispute (the bank rules in the client's favor), you lose the money for good, along with the fee.

  4. If you win, the frozen amount is returned to your Stripe account. Stripe always keeps the dispute fee, even when you win.

What Zenamu won't do on its own

  • It won't automatically cancel the client's membership after a disputed payment.

  • It won't create a credit note in your accounting.

  • It won't tell you, by email or in the app, that a disputed payment has occurred.

This matters: if a client opens a dispute with their bank and wins, they'll still have an active membership in Zenamu (the membership stays active in Stripe) until you cancel it manually. Even though the client gets their money back through the bank, they can still book classes. After a lost dispute, the studio has to actively cancel the membership itself.

Recommendation: As soon as you spot a disputed payment, immediately cancel the client's membership in Zenamu (the Cancel immediately option, without a refund; the bank will return the money to the client). That stops the client from getting both their money and access to the service.

How to prevent disputed payments

Disputed payments cost you money (the fee) and your reputation with Stripe (too high a dispute rate leads to your account being blocked). To prevent them:

  • Clear descriptions in Zenamu: the client knows exactly what they're buying (the variant, the price, the billing period) and gives clear consent to the recurring payment.

  • Email reminders. Zenamu usually sends a reminder about 7 days before renewal (for short periods, don't rely on it). Stripe may also send its own reminders, depending on your Stripe account settings. So the client shouldn't be caught off guard by the payment.

  • Easy cancellation: the client can cancel their membership anytime, both from their profile and from the Stripe customer portal. If the client can't find where to cancel, always help them out (you cancel the membership from their profile).

  • Respond to complaints quickly: if a client writes "Stripe charged me out of nowhere," look into it within 24 hours and offer a refund. That heads off a dispute.

  • The statement descriptor: your Stripe account has a field for the payment description that the client sees on their bank statement. If the description is just some anonymous text, the client won't recognize where the payment came from and may open a dispute. Set it to your studio's name (for example, "Yoga Studio Prague").

When a refund is the best choice

Situation

Recommended path

The client stopped coming and doesn't answer emails, but has been paying for 6 months

Full refund of the last invoice + cancel immediately (as a precaution)

The client complains about a specific payment and apologizes for the mix-up

Full refund of that invoice + cancellation (if they want it)

The client didn't use half the month and wants a refund

Partial (prorated) refund via the Stripe Dashboard

The client opened a dispute with their bank

Don't ignore it; respond in Stripe, or accept it

The client had a problem in Zenamu (for example, couldn't book because of a technical error)

Full refund + an apology + make it up to them with credits or make-up sessions

The studio charged by mistake (for example, forgot to pause the client)

Full refund + an apology + make-up (credits or make-up sessions)

Frequently asked questions

Can I refund a client several months after the payment? Yes, up to 180 days after the original charge. After that, Stripe won't allow a refund. If the client wants their money back after more than 180 days, you'll have to handle it another way (for example, by offering a discount on their next purchase).

The client tells me they didn't get the money. How do I check? Open the specific invoice in the Stripe Dashboard → the Refunds section → you'll see the status: Succeeded, Pending, or Failed. If it succeeded, the money has been sent and the client should have it within 10 days. If it's pending, you're waiting on the bank. If it failed, Stripe will email you and you'll need to try the refund again.

The client pays with Apple Pay or Google Pay — does a refund work? Yes, the same as with a regular card. The refund goes to the original payment method (Apple Pay and Google Pay use the same card as the original payment).

The client paid but never showed up. Can I refund everything? Yes, but consider whether the client was waiting on some kind of activation from your side. If it was a technical error, give a full refund and an apology. If the client simply didn't show up, refund according to your cancellation policy.

The client opened a dispute with their bank, but I refunded them in the meantime. What now? Send Stripe the refund information (as evidence for the dispute case). The bank usually closes the dispute in your favor (the client already has their money). Note that Stripe still charges you the fee for opening the dispute (around 15 USD), and that isn't refunded.

Can I refund a payment that was covered by a credit? If the client paid from a credit (zero from the card), there was formally no movement of money, so there's nothing to refund. You can return the credit to the client, but that's done manually in the Stripe Dashboard.

Will a refund affect any of my monthly limits? No. Zenamu has no monthly limit on the number of orders or payments. The plan limits apply to bookings, courses, and workshops, not to membership orders. A refund only switches the original order to the cancelled status (and issues a credit note for it); it has no other effect on your plan.

The client opened a dispute with their bank, but I want to refund them voluntarily — can I? Once a dispute is open, a voluntary refund no longer cancels it: the bank returns the money to the client, and Stripe charges the dispute fee either way. At that point, the simplest thing is to accept the dispute in Stripe (the Accept option): the client gets their money from the bank, and you save the time you'd otherwise spend gathering evidence. If you want to refund the client as a precaution, do it before they open a dispute with the bank; that's how you avoid the dispute, and the fee.

Related articles

Did this answer your question?