---
title: "Subscriptions"
space: "ERPNext"
url: "https://www.prilk.com/docs/erpnext/integrations/payments/mollie/subscriptions"
updated: "2026-05-15"
---

# Subscriptions

Recurring billing — monthly software fees, subscription-box products,
managed services with a fixed monthly retainer. This integration
supports it via Mollie's **mandate** model.

## The mandate model

A **mandate** is a customer's signed consent to be charged at intervals
without entering payment details each time. Once you have a mandate,
you can initiate charges from your side (push); without one, the
customer has to come to your invoice every time (pull).

Two types of mandates:

- **SEPA Direct Debit mandate** — the customer's consent to debit their
  EUR IBAN. Free or near-free per transaction. Used for B2B
  subscriptions in the EU. Carries a refund right (8 weeks) so you
  can't bill someone who didn't actually consent.
- **Credit card mandate** — the customer's card on file, charged on a
  schedule. More expensive but works internationally.

Mandates are stored on the **Customer** record (not Subscription),
which means one mandate can be used across multiple Subscriptions for
the same Customer.

## Getting a mandate from a customer

Two paths:

### Path A — first-payment mandate

Best for SaaS-style flows where the customer is paying their first
invoice anyway.

1. Customer pays their first invoice via Mollie (any method).
2. During checkout, Mollie shows a *"Save this payment method for
   future charges?"* option if the Customer's `mollie_mandate_type`
   is set to *recurring* or *first*.
3. Customer ticks the box and authorises.
4. After payment, the integration stores the Mollie mandate ID
   (`mdt_xxx`) on the Customer.
5. Future invoices to this Customer can be charged automatically.

### Path B — explicit mandate setup

When the first payment is far in the future, or you want the mandate
confirmed before any money moves.

1. Set the Customer's **Mandate Type** to *recurring*.
2. From the Customer form, click **Create Mollie Mandate**.
3. The integration creates a Mollie checkout for a €0 verification
   transaction (or a tiny verification amount, depending on bank
   policy).
4. The customer authorises in Mollie's checkout.
5. Mandate is stored on the Customer. No invoice was generated.

Path B is cleaner for the customer but adds a step. Most Dutch B2B
SaaS uses Path A.

## Auto-charging subscriptions

Once a Customer has a mandate:

1. Create an ERPNext **Subscription** record referencing the Customer
   and the items / plans they're subscribed to.
2. ERPNext generates a Sales Invoice on each renewal date.
3. The integration sees the new Sales Invoice on a Customer with an
   active mandate.
4. It calls Mollie's API to charge the saved payment method.
5. Webhook arrives confirming success.
6. Payment Entry created, Sales Invoice marked Paid.

End-to-end automatic.

## Dunning (failed payments)

When an auto-charge fails — insufficient funds, expired card, revoked
mandate — Mollie retries based on your Mollie dashboard's dunning
policy:

- **Day 1** — first attempt fails.
- **Day 4 / 7 / 14** — automatic retries (configurable in Mollie).
- **After max retries** — Mollie marks the mandate as failed; the
  integration reverts the Customer to *first*-payment mode for the
  next invoice.

ERPNext's view: the Subscription stays open with an unpaid Sales
Invoice. You decide whether to ping the customer, write off, or
chase manually.

## Revoking a mandate

Customers can revoke mandates from their bank's UI (SEPA) or by asking
you. To revoke from ERPNext side:

1. Open the Customer.
2. Click **Revoke Mollie Mandate**.
3. Confirm. The integration calls Mollie's API to invalidate the
   mandate; the mandate ID is removed from the Customer.

Future invoices to this Customer will require a fresh payment via
Path A or B above.

## Common questions

**Can I have multiple mandates per customer?**
The integration tracks one mandate per Customer. If a customer wants
to pay via card for some subscriptions and SEPA DD for others, you'd
need to split them across two Customer records (one Customer per
mandate).

**What if a customer wants to pause their subscription?**
Pause the ERPNext Subscription record. The mandate stays valid; when
you resume, charging works again without re-authorisation.

**Are mandates portable if I migrate to another Mollie account?**
No. Mandates are tied to your Mollie profile; if you move to a new
Mollie account, customers re-authorise.
