DOCS

Mollie

Mollie is a European payment processor supported by Fundations Pro. It provides iDEAL, Bancontact, credit card, and a range of other payment methods popular in the Netherlands, Belgium, Germany, and other European markets.

> Requires: Fundations Pro

Mollie settings screen

Why use Mollie

Mollie is well-suited to Dutch and Belgian fundraisers. iDEAL is the most-used online payment method in the Netherlands, and Bancontact is the equivalent in Belgium. Mollie supports both, along with credit card, SEPA, and several other European methods, under a single API key.

What it does

When a donor submits the donation form with a Mollie payment method selected:

  1. Fundations calls the Mollie Payments API to create a payment and receives a checkout URL.
  2. The donor is redirected to Mollie’s hosted payment page.
  3. On return to your site, Fundations fetches the current payment status from Mollie. If still pending, it waits for the webhook.
  4. Mollie sends a webhook notification to POST /wp-json/get-fund/v1/mollie-webhook when the payment status changes.
  5. On a paid status, the donation is marked as paid, stats are updated, and a confirmation email is sent.
  6. cancelled, expired, and failed statuses update the donation accordingly.

The payment methods shown to donors on the donation form come from the Mollie API and are cached for 24 hours. If you add or remove a payment method in your Mollie dashboard, clear the get_fund_mollie_methods transient to force a refresh.

Currency

Mollie uses the currency set in Fundations settings (get_fund_wizard_currency). This defaults to EUR. All donations are submitted to Mollie in this currency. Set it to match your Mollie account’s settlement currency before going live.

How to set it up

  1. Create a Mollie account at mollie.com and complete business verification.
  2. In the Mollie dashboard, go to Developers, then API Keys.
  3. Copy your Live API Key (starts with live_) and your Test API Key (starts with test_).
  4. In WordPress, go to Fundations, then Settings, then the Mollie tab.
  5. Paste both keys into the corresponding fields.
  6. Set the mode to Test while verifying, then switch to Live when ready.
  7. Save the settings.
  8. The webhook URL is registered automatically. No manual configuration in Mollie is required for webhooks; Mollie reads the webhook URL from each payment request.
Mollie api key fields

Settings reference

SettingDescription
Test modeWhen enabled, uses the test API key and Mollie test environment
Test API KeyStarts with test_
Live API KeyStarts with live_

The currency used for all Mollie payments is controlled by the global Fundations currency setting, not a Mollie-specific setting.

Capabilities and limitations

Mollie supports iDEAL, Bancontact, credit card, and any other method active in your Mollie account. The donation form shows only the methods your account has enabled, since Mollie returns available methods based on your account configuration. Test mode covers full end-to-end testing without real money.

There are a few things Mollie does not support in this integration. Recurring donations exist in the codebase but are disabled (GET_FUND_RECURRING_ENABLED = false). Do not rely on them. Currency is global and set once in Fundations settings; it cannot be changed per donation. The 24-hour cache on payment methods can only be bypassed by manually clearing the transient.

Troubleshooting

Payment methods not appearing on the donation form

The list of available methods is cached as a transient for 24 hours. If you recently changed your Mollie account configuration, delete the get_fund_mollie_methods transient from the WordPress options table, or use WP-CLI: wp transient delete get_fund_mollie_methods.

Webhook not received

Verify that your site is reachable from the public internet and that nothing blocks POST requests to /wp-json/get-fund/v1/mollie-webhook. The correct URL uses a hyphen, not a slash: /mollie-webhook, not /mollie/webhook. Check Mollie’s dashboard under the payment details to see if webhook delivery was attempted.

Donation stays pending after donor returns

If the payment is still pending when the donor returns, Fundations fetches the current status directly from Mollie. If the fetch returns pending, the donation waits for the webhook. If no webhook arrives within Mollie’s retry window, the donation stays pending. Check that the webhook URL is publicly reachable.

Duplicate webhook requests

Fundations applies a 60-second lock per payment ID using a transient (mollie_webhook_lock_{id}). If Mollie retries within that window, the duplicate is ignored. This is expected behavior.

Wrong currency error from Mollie

Mollie rejects payments in currencies not enabled for your account. Check that the Fundations currency setting matches a currency your Mollie account accepts.

Developer reference

Hooks

HookTypeWhen firedParameters
get_fund_donation_paidActionAfter payment marked paid (webhook or return)$donation_id (int)
get_fund_donation_status_transitionActionOn paid, cancelled, or failed$donation_id (int), $new_status (string), $old_status (string)
get_fund_donation_completedActionAfter get_fund_donation_paid$donation_id (int), $data (array)

The $data array in get_fund_donation_completed contains: amount, action_id, donor_name, donor_email.

Filters

FilterDescriptionSince
get_fund_mollie_payment_methodsCalled by the FREE donation form renderer to get available methods. PRO returns the live list from Mollie API (or an empty array on error).1.0.0
get_fund_donation_redirect_urlFilters the return URL included in the Mollie payment request. Parameters: $return_url (string), $donation_id (int).1.1.0

REST endpoint

POST /wp-json/get-fund/v1/mollie-webhook

No authentication. Handles payment status updates from Mollie. A 60-second idempotency lock per payment ID prevents duplicate processing. Handled statuses: paid, canceled, expired, failed.

Relevant options

Option keyTypeNotes
get_fund_mollie_test_modeboolDefaults to true
get_fund_mollie_test_api_keystring
get_fund_mollie_live_api_keystring
get_fund_wizard_currencystringUsed as Mollie payment currency; defaults to EUR
get_fund_donation_thank_you_pageintWP page ID used as the return URL base

Payment methods cache

Available methods are stored in transient get_fund_mollie_methods with a 24-hour expiry. To clear it:

delete_transient( 'get_fund_mollie_methods' );

or via WP-CLI:

wp transient delete get_fund_mollie_methods