ERPNext

ERPNext

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

Subscriptions

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.

Last updated 3 months ago
Was this helpful?
Thanks!