FrancodesystemsFran<code>systems
PaymentsCustom integration

Holded Mollie integration

Mollie payments turned into Holded invoices, multi-currency and multi-method with zero friction.

HoldedHolded
MollieMollie

Implementation time · 4-8 días laborables

Diagnosis

The problem

Mollie has its own dashboard to view payments, but the accounting invoicing stays in Holded and nobody syncs the two. The admin team downloads Mollie's monthly CSV and fights reconciliation by hand. Partial refunds and chargebacks (which arrive weeks later) throw the accounting cash position out of balance. And if you sell across several EU countries, VAT by customer country gets estimated by eye.

Proposal

The solution

Mollie is the default European gateway for many DTC stores and B2B SaaS. Every successful Mollie payment (Visa, SEPA, iDeal, Bancontact, Klarna via Mollie) generates the matching invoice in Holded with its customer, its VAT and its payment method. Refunds trigger credit notes. Chargebacks set the correct accounting status.

Scope

What we automate

  • Mollie payment to Holded invoice with the correct customer and VAT based on country and tax ID
  • Mollie refund (full or partial) to an adjusted Holded credit note
  • Chargeback notified by Mollie to a corrected accounting status plus an alert to the team
  • Multi-currency: EUR/USD/GBP payments recorded at the day's exchange rate
  • Multi-method: SEPA Direct Debit, iDeal, Bancontact, Apple/Google Pay differentiated in the description
  • Recurring Mollie subscriptions to a periodic Holded invoice with its own series
Architecture

How we build it

Mollie webhooks (payment.paid, payment.refunded, chargeback.created) in an idempotent queue. HMAC signature validated on every request. Holded REST API to create contacts, invoices and credit notes. Retries with backoff for up to 24 h if Holded is down. Structured logging for auditing.

flow.ts
webhook mollie.event
queue.enqueue(jobId)
worker.handle() // idempotent
holded.api.call() // retries with backoff
log.emit({ status: 'ok' })
FAQ

Frequently asked questions

Does it support One-Off Sequence (SEPA)?

Yes. Both recurring and one-off SEPA payments are mapped to Holded, distinguishing the payment method. Useful for European B2B SaaS that charge by SEPA.

What about EU VAT by country with OSS / IOSS?

We detect the buyer's country and apply the correct rule: OSS for EU B2C above 10,000 EUR accumulated, IOSS for B2C under 150 EUR, 0% B2B with an intra-community VAT number validated in VIES.

How do you handle chargebacks?

When Mollie notifies a chargeback (via webhook), we generate a reversal entry in Holded and send an alert to the team. Reconciliation with the bank stays clean. If the chargeback is resolved in your favour, another webhook reverses the reversal.

What use case is it ideal for?

DTC stores with European customers, European B2B SaaS charging via SEPA, marketplaces with multi-method payments. If you only sell in Spain and only accept cards, Redsys or Stripe may fit better on fees.

Shall we talk about your Mollie integration?

A 30-minute call, no strings. You leave with scope and a price.