Setting up Mollie
Updated on 2026-05-12
In addition to Stripe, since 12 May 2026 we also support Mollie as a card-payment gateway. Mollie is especially attractive for NL operators because iDEAL is bundled at no extra Stripe-style fee, and Mollie's per-transaction rates for European local methods are typically cheaper for the average €100–€500 B&B booking.
⚠️ One gateway at a time. Per property you choose either Stripe or Mollie — not both. Bancontact may stay alongside either of them. The Filament form hides the other gateway as soon as one is active, and a defensive second check at the database layer rejects any attempt to enable both with a clear error.
When to pick Mollie over Stripe?
| Situation | Better | Why | |---|---|---| | Mostly NL guests | Mollie | iDEAL included, ~€0.29 per transaction vs. 1.4 % at Stripe | | Mostly BE guests | No difference | You configure Bancontact separately anyway; card fees are close | | International guests, Amex / Apple Pay | Stripe | Mollie supports Apple Pay but Stripe's Amex coverage and mobile Apple-Pay flow is slightly smoother | | You already have a Mollie account for your old website | Mollie | One dashboard for PMS + existing shop, one CODA import | | Recurring (future Auto-Pay) | Stripe | Stripe SCA + Mandates are more mature than Mollie's first-payment flow |
No wrong choice: you can switch later — turn one gateway off, fill in the other, and /pay swaps over immediately for new bookings.
Create a Mollie account
- Go to mollie.com/dashboard/signup and create a merchant account.
- Provide your KvK / VAT number (NL/BE/DE accounts are activated within one business day).
- In the dashboard activate the methods you want to offer — at minimum credit card and iDEAL for most B&Bs.
- Open Developers → API keys and copy the Live API key (starts with
live_). For testing first try the Test API key (test_).
Configure in BedFlow
- In Filament open the property that will use Mollie (Properties → choose property → Edit).
- Scroll to the section Payments (Stripe or Mollie + Bancontact) and open the Mollie tab.
- Toggle Mollie active for this property on.
- Paste your Mollie API key (
live_…ortest_…). - Leave Profile ID blank unless you use an Organization access token (in which case it appears on your Mollie dashboard under Profile).
- Click Save.
💡 If you fill in a test key,
/pay/{invoice}will hit Mollie's test environment — no real transactions. Don't forget to swap the live key in at go-live.
Register the webhook URL at Mollie
Unlike Stripe, Mollie doesn't register a webhook in its dashboard — the webhook URL is passed per payment in the create call. You don't need to register anything in the Mollie dashboard. We pass this URL on every payment creation:
https://bedflow.eu/webhooks/mollie
What happens:
- Mollie POSTs
{id: tr_xxx}as soon as the guest is done. - We fan out over all properties with
mollie_enabled = true, pick the first one whose key successfully fetches the payment object, and use those credentials for verification. - On
status = "paid"the invoice is marked paid, a Telegram notification is sent, the wellness calendar is updated when applicable, and the booking-confirmation email is triggered.
No webhook secret needed — Mollie's security model is possession of the API key: whoever can fetch the payment may know its status.
What does the guest see?
On /pay/{invoice-id} a blue Mollie button appears next to Bancontact (if enabled): "Pay with credit card or iDEAL via Mollie". Clicking sends the guest to Mollie's own hosted checkout (mollie.com/checkout/select-method/...) where they can choose iDEAL, Bancontact, credit card, Apple Pay or SEPA. After paying they return automatically to /pay/{invoice-id}/success.
Reconciliation in Yuki / your accounting
Every successful Mollie payment is stored as payment_reference = "mollie:tr_xxx" on the invoice plus in payment_refs for per-payment CODA matching. The Mollie payout (once a day or once a week depending on your dashboard setting) typically lands on your bank account 1-2 business days later and includes the Mollie payment IDs of the batch in the description. Yuki / your accounting can use the Mollie export per payment to trace back to the correct invoice via the mollie:tr_xxx reference.
Switching from Stripe to Mollie (or back)
- In Properties → Payments turn the current gateway off (toggle off and save).
- The other gateway section reappears; toggle it on and fill in credentials.
- Save. New
/paypages will use the new gateway from now on. - Open, unpaid payment links keep working as long as the old gateway still has credentials. Only when you actually remove the old API key do those old links break.
We have not yet seen lost payments due to a too-early switch — Mollie and Stripe typically keep checkout URLs valid for 24-72 hours — but it is good practice to make the switch at a quiet moment (Sunday evening) and keep the old gateway around for 1-2 days.
Common errors
| Error on /pay | What it means |
|---|---|
| "Mollie niet geconfigureerd voor deze property" | Toggle is off or API key is blank |
| "The amount.value should be a string with two decimals" | Amount under €1.00 — Mollie refuses smaller transactions (not a concern in normal flows; only relevant for partial wellness payments) |
| "Invalid API key" | Test key in production, or typo. Check that the key starts with live_ in production |
| Telegram: "Mollie Checkout failed" | Generic API error — usually on Mollie's end. Check status.mollie.com |