Mollie's webhook sends
the payment ID. Nothing else.
You fetch the rest.
Mollie gives European businesses one API for 15+ payment methods. Webhooks are unique: Mollie sends only the payment ID — you fetch the status yourself.
15+
methods
Webhook driven
id-only webhook
0
setup
All return the same webhook. One handler for every method.
Mollie is the dominant payment processor for European businesses, especially in the Netherlands, Belgium, and Germany. It supports iDEAL, SEPA Direct Debit, Bancontact, Belfius, Giropay, eps, and more — all from one integration. One set of API credentials covers every payment method, so your checkout logic doesn't change whether a customer pays by iDEAL or credit card.
Mollie's webhook behavior is different from most gateways and trips up many developers. When a payment status changes, Mollie sends a POST request to your webhookUrl. The body contains exactly one field: id — the payment ID. No status, no amount, no method. Your handler must then call GET /payments/{id} to retrieve the current payment details and act on the status field.
Payment statuses follow a clear path: open → pending → paid. Payments can also end as expired, failed, or canceled. For SEPA Direct Debit and bank transfers, the payment stays in pending for days before resolving. This mock lets you trigger any of the six statuses on demand.
15+ European payment methods. One API.
Different methods, different countries — same integration. Your webhook handler does not change per method.
iDEAL
Netherlands bank transfer
SEPA
Euro bank transfers
Bancontact
Belgium debit
Belfius
Belgian bank
Giropay
German bank transfer
eps
Austrian bank transfer
Vipps
Norwegian mobile pay
UK bank
Faster Payments
Przelewy24
Polish transfers
Credit card
Visa, Mastercard, Amex
Klarna
Buy now, pay later
PayPal
PayPal wallet
Apple Pay
iOS, Safari
Google Pay
Android, Chrome
Vouchers
Eco, Lunch, Gift
All methods return the same webhook. Whether the customer paid by iDEAL, card, or Klarna, your webhook handler receives an id=tr_xxx and you fetch the payment to see the result. You do not need per-method webhook logic.
Mollie webhooks are just an id. Nothing else.
This is Mollie's most surprising design decision. Unlike every other gateway that sends a full JSON payload, Mollie sends a form-encoded body with one field.
What Mollie sends to your webhookUrl
id=tr_mock_xYzAbCd123
That is the entire body. One field. No JSON. No status. No amount.
Mollie intentionally keeps webhook payloads minimal to avoid sending sensitive data in delivery that might be logged. The ID is all you need to look up the payment.
What you do after receiving it
Receive the webhook
Parse req.body.id from the form-encoded body. Respond 200 immediately.
Fetch the payment
Call GET /payments/{id} to get the actual status, amount, and metadata.
Check status === 'paid'
Only fulfill if status is paid. Any other status — do nothing yet.
Payment status flow
A card payment typically goes open → paid. Async methods (iDEAL, SEPA) often go open → pending → paid.
openCreatedpendingAwaiting transferpaidSettledexpiredLink expiredfailedDeclinedcanceledCustomer canceled Only paid means money moved. Every other final status (expired, failed, canceled) means no charge occurred.
Integration code
curl -X POST https://mockgateway.com/api/base/mollie/v2/payments \
-H "Authorization: Bearer YOUR_MOCK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": {
"value": "49.99",
"currency": "EUR"
},
"description": "Acme Pro subscription — Oct 2025",
"redirectUrl": "https://yourapp.com/checkout/return",
"webhookUrl": "https://yourapp.com/webhooks/mollie",
"method": "ideal",
"locale": "nl_NL",
"metadata": { "order_id": "ORD-MOL-0042" }
}'Request parameters
Sent to POST /api/base/mollie/v2/payments
| Parameter | Type | Required | Description |
|---|---|---|---|
amount.value | string | required | Amount as string (e.g. 10.00) e.g. 10.00 |
amount.currency | string | required | ISO 4217 currency e.g. EUR |
description | string | required | Payment description e.g. Order #12345 |
redirectUrl | string | optional | Redirect URL after payment |
webhookUrl | string | optional | Webhook URL for status updates |
Response fields
| Field | Type | Description |
|---|---|---|
id | string | Mollie payment ID |
status | enum | Payment status |
created_at | datetime |
Questions about Mollie
Other gateway templates
Looking for a different provider?