CANCEL FLOWSMOLLIE

How to add a cancel flow to Mollie subscriptions

Mollie gives you an API to cancel and update subscriptions, not a cancel page. How to build a cancel flow on it: reasons, offers, plan changes, a clean cancel.

Published 5 min read

Mollie runs the recurring charges, but the place where a customer decides to leave is your own app. The Subscriptions API gives you the tools to cancel a subscription, change its amount or interval, or move its start date. What it does not give you is a cancel screen. That part is yours to build, and it is where a good cancel flow pays off.

This guide shows what Mollie’s API lets you do when a customer wants to cancel, and how to turn that into a short, honest cancel flow. It sticks to Mollie’s documentation: Cancel subscription, Update subscription, Get subscription, Revoke mandate and the Recurring payments guide (all accessed November 2026). We also checked field descriptions against Mollie’s official Node.js API client.

What Mollie gives you

A Mollie subscription belongs to a customer and charges a fixed amount at an interval, on a mandate. The fields that matter for a cancel flow:

Field Meaning
status pending, active, canceled, suspended or completed. It depends on whether the customer’s mandate is pending, valid or invalid.
amount The constant amount charged on each payment.
interval Time between charges, such as 1 month or 14 days.
nextPaymentDate The next scheduled charge; absent when the subscription has ended.
times, timesRemaining For subscriptions with a fixed number of charges.
canceledAt When it was cancelled.
metadata Your own data, forwarded to each payment the subscription creates.

And the calls:

  • Cancel: DELETE /v2/customers/:customerId/subscriptions/:id. Mollie’s reference says a subscription can be cancelled at any time this way.
  • Update: PATCH on the same resource. The updatable fields are amount, description, interval, startDate, times, mandateId, metadata and webhookUrl. A cancelled subscription cannot be updated.
  • Revoke mandate: DELETE on the customer’s mandate. You can no longer charge that account or card with it, and all connected subscriptions are cancelled.

Note what is not in the list: Mollie’s Subscriptions API has no pause endpoint. Any “pause” offer has to be built from the calls above.

Cancel the subscription, not the mandate

When a customer cancels, cancel the subscription. Revoking the mandate also stops every other subscription on it and means the customer has to go through checkout again if they ever come back. Revoke a mandate only when the customer asks you to stop all charges on that account, or when you have a reason to distrust it.

Also decide what “cancel” means for access. Mollie stops future charges when you cancel; it does not know what the customer has already paid for. Most subscription businesses keep access until the end of the paid period. Store that date yourself, from the last paid payment and the interval.

Designing the flow

A cancel flow has three jobs: find out why the customer is leaving, offer something that fits that reason, and cancel cleanly if they still want to go. Keep it to a few screens.

1. Ask for the reason

One question, one tap. A short list works better than a free-text field:

  • Too expensive
  • Not using it enough
  • Missing a feature
  • Switching to another product
  • Technical problems
  • Temporary need, will come back
  • Other (with an optional text box)

Store the answer in your database and, if useful, in the subscription’s metadata, so it travels with the customer’s record.

2. Make one offer that matches

Each offer must map to something Mollie can actually do:

Reason Offer How on Mollie
Too expensive A lower price for a few months PATCH the amount; schedule a second update to restore it
Not using it enough A cheaper plan or a longer interval PATCH the amount and, if needed, the interval
Temporary need Skip a period Move the next charge with startDate, or cancel and create a new subscription later (test this first, see below)
Missing feature, switching, technical No discount; ask for detail, route to a person Nothing to change on Mollie

Mollie applies a changed amount to all future charges. There is no built-in “discount for 3 months”, so a temporary discount means remembering to update the amount back, or creating the subscription with times and a follow-up one. Tell the customer exactly what they will pay and from when.

For a “skip a period” offer, Mollie’s documentation lists startDate among the fields you can update, but it does not describe in detail how this moves the next charge on an active subscription. Try it in test mode and check nextPaymentDate before offering it to customers. The alternative, cancelling now and creating a new subscription on the same mandate later, is predictable but depends on the mandate still being valid at that point.

3. Cancel, always one click away

The cancel button must be visible on every step, not hidden behind the offer. A customer who says no to the offer should be cancelled with one more click, with a confirmation that states:

  • the subscription is cancelled,
  • the date access ends,
  • that no further payments will be taken.

Consumer rules in several countries push in this direction (see click-to-cancel rules), and so does simple self-interest on Mollie: a customer who cannot find how to cancel a SEPA Direct Debit subscription can ask their bank to reverse the debit. Mollie’s help center says you cannot dispute a SEPA reversal requested within 8 weeks. A reversal costs you more than a clean cancellation.

Wiring it to the API

  1. Load the subscription with Get subscription when the customer opens the flow, so you show the right amount, interval and next charge date.
  2. On “accept offer”, call Update subscription with the new values, then fetch it again and show the result. Record the offer and the reason.
  3. On “cancel”, call Cancel subscription. Use an idempotency key so a double click does not cause problems, and show the confirmation from your stored end date.
  4. Reconcile. Mollie can also end a subscription on its own, for example after failed payments. Check subscription status regularly (or on each payment webhook) so your app and Mollie agree.
  5. Keep a log of each step: reason shown, offer shown, offer accepted or refused, cancellation time. You will want it for support questions and for any bank reversal later.

What to measure

  • Share of customers who start the flow and accept an offer.
  • Share of accepted offers still paying three months later.
  • Reasons by plan, by signup source and by tenure.
  • Reversals after cancellation, which should be close to zero if the flow is clear.

Be careful with the first number. An offer that delays a cancellation by one month is not a save.

Doing this with NoChurn

Mollie keeps the subscription, the mandate and the charges. NoChurn adds the cancel flow itself: reasons, an offer that fits the reason, and a one-click cancel that is always visible, either hosted by NoChurn or built in your own interface with the headless API. For Mollie, accepted offers change the subscription amount and a cancellation ends the subscription, through Mollie’s API. Reasons feed win-back emails at day 30, 60 and 90 and the churn score. See NoChurn + Mollie.

PROMPT

Read https://www.nochurn.sh/llms.txt,
then follow https://www.nochurn.sh/docs/quickstart/
to add NoChurn to this app. Use a test key
(nc_test_…) until I say we go live.

Stop leaking revenue.

  • Free until $300 MRR
  • No card needed
  • Live in 10 minutes
  • Never a cut of what we recover