Skip to content
Gaurav TiwariDocs

Set Up Mollie Payments

Updated November 7, 2026

Buyers in the Netherlands expect iDEAL, buyers in Belgium expect Bancontact, and everyone else wants a card, PayPal or their own bank button. Adding those one plugin at a time leaves you with a crowded checkout and subscriptions that only renew on cards.

The Mollie module sends buyers to Mollie’s hosted checkout with every method switched on in your Mollie account, with an optional method picker at checkout. Subscriptions save a card, PayPal or SEPA Direct Debit mandate and renew automatically. Every payment update is read back from Mollie before an order changes.

Turn On the Gateway

  1. Switch on the Mollie module under Stackless → Dashboard.
  2. Go to WooCommerce → Settings → Payments → Mollie (Stackless).
  3. Tick Enable (Accept payments with Mollie).

Stackless → Settings → Mollie only shows a link to that screen. Mollie stays off the checkout until the selected mode has an API key.

Add Your API Keys

Use the Open Mollie API keys button on the settings screen, or open Developers → API keys in your Mollie Dashboard. Copy the live key (live_) and the test key (test_) of your website profile, then fill in:

  • Test mode: on by default. No real money moves, and test payments take euros only.
  • Live API key
  • Test API key

When you save, Stackless checks each key with Mollie and shows any error. A key in the wrong field, such as a live key under Test API key, shows an error too. You can also set the keys as wp-config.php constants, which win over saved settings and hide their fields: STACKLESS_MOLLIE_LIVE_API_KEY and STACKLESS_MOLLIE_TEST_API_KEY.

Why There Is No Webhook to Add

You don’t register a webhook in Mollie. Stackless sends this URL with every payment, and Mollie calls it whenever that payment changes: https://yoursite.com/wp-json/stackless/v1/mollie/webhook.

Mollie’s payment webhooks carry only a payment id, with no signature. So Stackless trusts nothing in the request:

  • It reads the payment from the Mollie API with your own key, trying the order’s mode first and then the other one. Only Mollie’s answer changes an order.
  • An id Mollie doesn’t know is ignored, and so is a payment whose details name another site.
  • Each state of a payment, meaning its status plus the amounts refunded and charged back, is applied once. Repeat calls change nothing.

The buyer’s return from Mollie is checked the same way, so most orders are settled before the webhook arrives. The webhook matters for buyers who close the tab, renewals, refunds and chargebacks. Your site needs to be reachable from the internet for it to arrive.

Choose Methods and the Picker

  • Title: default “Card, iDEAL, Bancontact or PayPal”. Description: default “You’ll finish paying on Mollie’s secure checkout.”
  • Methods to offer: leave it empty to offer every method switched on in Mollie for the order’s currency and amount, or pick a shorter list. Subscriptions only see methods that can save a mandate.
  • Method choice: “Let buyers pick the method at checkout, then go straight to it” (default) or “Let buyers pick on Mollie’s page”.
  • Saved payment methods: on by default. Lets signed-in customers save cards, PayPal and bank mandates for later. Subscription orders always save the method.

With the picker at checkout, buyers see a Payment method dropdown with the methods Mollie offers for that cart, starting with “Choose on the next page”. Picking one sends them straight to that method on Mollie. The list is cached for six hours, so a method you switch on in Mollie can take that long to show.

What Buyers See

  • Placing the order sends the buyer to Mollie’s checkout in your site’s language, with their name, email and billing address passed along. After paying, they come back to the order received page.
  • Cancelling on Mollie’s page, or letting it expire, brings them back to the order payment page to try again. Placing the order again reuses a payment that’s still open.
  • Signed-in customers can pick a saved method and pay without leaving your site.
  • A payment Mollie reports as still processing puts the order on hold until Mollie confirms it.
  • Pay-later methods such as Klarna are only authorized. The order goes on hold with a note to capture the payment in Mollie.
  • A payment for a different amount or currency than the order puts it on hold with a note to check it.
  • Test mode adds “Test mode: no real payment will be taken.”

Mollie works on the classic and block checkout and on the order payment page. It shows for the currencies Mollie accepts, such as EUR, GBP, USD, CHF, PLN and SEK, and hides itself for others. In test mode it shows for euros only.

Subscriptions on Mollie

A subscription checkout is a first payment on a Mollie customer, which leaves a mandate for later charges. Only methods that can create a mandate are offered, and the checkout says the method is saved with Mollie for future payments.

Paid at checkout withSaved asRenews in
Card, Apple Pay or Google PayCard mandateAny currency Mollie takes
PayPalPayPal mandateAny currency Mollie takes
iDEAL, Bancontact, Belfius, EPS, KBC/CBC, MyBank or Pay by BankSEPA Direct Debit mandateEuros only

On the due date, Stackless creates the renewal order and charges the mandate without the customer present. Card charges usually come back paid straight away. SEPA Direct Debit settles a few days after the charge, so that renewal order stays pending with a note. Any charge Mollie hasn’t confirmed yet leaves the order pending until the webhook settles it.

  • If Mollie can’t be reached, the charge is retried up to 3 more times, 15, 30 and 45 minutes apart.
  • A declined charge marks the renewal order Failed with Mollie’s reason, and your retry schedule takes over. Renewals, Failed Payments and Retries covers what happens next.
  • A free trial with nothing to pay today still saves the method. When the payment can only use a card or PayPal, for example because the buyer picked one at checkout, Mollie takes a 0.00 payment. Otherwise it takes one cent, the smallest amount in the currency, which Stackless refunds once Mollie confirms the mandate.
  • Customers can change a subscription’s payment method from My Account.

Saved Methods

  • Customers can add a method from My Account → Payment methods. It’s a first payment of 0.00 or one cent, refunded once the method is saved.
  • Saved methods also pay for Post-Purchase Offers.
  • Removing a saved method in My Account revokes the mandate at Mollie, so it can’t be charged again.
  • Test and live mandates are kept apart, so a test mandate never shows in live mode.

Refunds and Chargebacks

Refund from the WooCommerce order screen, in full or in part. The refund is made in Mollie, and the order gets a note with the Mollie refund id. Refunds made in the Mollie Dashboard are recorded on the order when Mollie reports the payment, and a refund Mollie can’t complete adds a note. A chargeback puts the order on hold with a note showing the amount.

Billing Health

Mollie reports to Billing Health: a missing API key for the selected mode, test mode, charges on saved methods still pending after two weeks, and webhook calls that failed recently. Mollie retries a failed call for about a day.

Limits

  • SEPA Direct Debit renewals settle a few days after the charge, and bank mandates renew in euros only.
  • Test mode takes euros only, so Mollie hides itself for other currencies while test mode is on.
  • Pay-later methods leave the order on hold until you capture the payment in Mollie.
  • Methods that can’t create a mandate, such as Klarna or bank transfer, can’t pay for subscriptions.
  • If Mollie doesn’t return a usable mandate, the order is still paid, and its renewals are invoiced instead of charged.
  • A copy of your store, such as a staging site, never charges saved payment methods.
  • Turn on Debug log to write Mollie activity to WooCommerce → Status → Logs (stackless-mollie_gateway). Keys are never logged.

For Developers

stackless_mollie_gateway_currencies narrows the currency list Mollie shows for:

add_filter('stackless_mollie_gateway_currencies', function ($currencies) {
    return ['EUR', 'GBP'];
});

stackless_mollie_gateway_webhook runs after each webhook is applied, with the payment as Mollie returned it and the mode. Copy templates/mollie_gateway/payment-fields.php to yourtheme/stackless/mollie_gateway/payment-fields.php to change the checkout fields.

Share

Was this helpful?

Still stuck? Open a support ticket