Payments and payouts

Payments

Access: Bank > Mollie > Payments

Payments represent the transactions made by your customers via Mollie (credit card, iDEAL, Bancontact, SEPA bank transfer, etc.).

Payment list

The list page displays all payments synchronized from Mollie with:

  • Mollie ID (tr_xxxx) - Clickable link to the detail card
  • Amount and currency
  • Fees charged by Mollie on the transaction
  • Method used
  • Payment status
  • Creation date

Mollie payment list with ID, amount, method and status columns

Available actions:

  • Synchronize - Fetches recent payments from the Mollie API
  • New - Creates a new payment (if rights allow)
  • Filtering by status, method, date, amount

Mollie fees

Mollie does not communicate the fees at payment time: they are only known once the transaction has been settled on your Mollie balance, which can take from a few minutes to several days depending on the payment method. The Fees column therefore remains at zero as long as Mollie has not settled the transaction.

Fees are fetched from the Mollie balance transactions:

  • on each Synchronize from the payment list,
  • on each Refresh from Mollie from a payment card,
  • automatically by the scheduled task MollieCheckPay, which catches up settled payments since the previous run.

Two limits to know:

  • in test mode, the balances API returns nothing: fees always remain at zero;
  • the API key used must have access to balances, otherwise fees cannot be read (the detail is logged in the Dolibarr logs).

If the MOLLIE_ADD_FEES constant is set to PAYMENT (addition of a debit line for each fee related to a collection), the corresponding fee entry is added to the bank account. It is only created when the fee amount is actually known, never with a zero amount.

When a payment is refused

The module refuses to start a payment in the following cases. The customer sees an on-screen message and the reason is logged in the Dolibarr logs.

Situation Reason
Invoice already settled Nothing is owed anymore, credit notes and down payments included
Draft, canceled or abandoned invoice Only a validated invoice can receive a payment
Order already invoiced It is the invoice that must be paid
Order not validated or canceled The object is not ready to be paid
Dolibarr not accessible over HTTPS Mollie could not notify the payment
Zero amount There is nothing to collect

The collected amount is always computed from the paid object (invoice remaining amount, order total, configured down payment). It is never read from the browser request.

Resuming an abandoned payment

If a customer leaves the Mollie payment page without completing it, they can come back and pay later from the same link:

  • if the Mollie payment session is still open, the customer is redirected to that same payment page;
  • if it is expired, failed or canceled, a new payment is created and replaces the previous attempt;
  • if it is already paid or being processed, no second payment is started and a message invites the customer to contact you.

Payment pending confirmation

Some methods are not confirmed immediately: a bank transfer remains pending until the money arrives, an installment payment remains authorized until its capture.

In these cases, the customer sees a "Payment being confirmed" page, neither success nor failure, and no error message is sent. The payment is recorded in Dolibarr as soon as Mollie confirms it, by webhook or by the scheduled task.

Payment results in the invoice agenda

Each Mollie payment result leaves an automatic event in the Events tab of the invoice, with the same codes Dolibarr uses for Stripe. Other modules (reminders, subscription management) can thus read these traces without knowing Mollie.

Code When Detail recorded
AC_PAYMENT_MOLLIE_OK The payment is collected and recorded on the invoice Date of collection at Mollie
AC_PAYMENT_MOLLIE_KO The payment is refused, or a chargeback takes the money back Mollie status, refusal code and message, refusal date
AC_MOLLIE_BANK_RECORD_FAILED The payment succeeded at Mollie but its payment and bank line could not be written in Dolibarr Error returned by Dolibarr

What counts as a refusal:

  • a payment with failed status at Mollie, always: the card or the bank refused;
  • for an automatic direct debit (recurring payment on a mandate, without the customer), an expired or canceled payment also counts: nothing else will make it succeed;
  • a customer who leaves the payment page or clicks Cancel refused nothing: no event is set, they can come back and pay from the same link.

The refusal detail is readable in the event, in the form failed - insufficient_funds - The card has insufficient funds for a card or failed - AM04 - Insufficient funds for a SEPA direct debit.

One event per payment: Mollie sometimes sends the same notification several times, and the module also learns the result from the customer's return page, the scheduled task or the refresh button. The module only sets the event once per Mollie payment. A new attempt refused the next day is a new payment: it leaves its own event.

Orders: the AC_PAYMENT_MOLLIE_* codes are only set on invoices. The successful payment of an order creates its invoice, which receives the event. The refusal of an order payment sets nothing, the order not having an invoice yet.

Bank line cannot be written: if the Mollie bank account in the configuration is missing or invalid, the AC_MOLLIE_BANK_RECORD_FAILED event signals the money collected at Mollie but absent from Dolibarr. Fix the configuration: the payment is recorded at the next Mollie notification, which resends it for 26 hours, or by the scheduled task which replays failed notifications.

The old AC_MOLLIE_PAYMENT_OK code remains visible on invoices paid previously. It is now only set on donations.

Invoices in foreign currency

If the multi-currency module is active and the invoice is denominated in a currency other than your company's, the customer is debited the amount in the invoice currency, in that currency. The payment is recorded in Dolibarr with the invoice's exchange rate.

A payment received in a currency that does not match the object, or for an amount different from the one announced at the start, is refused and logged.

Payment statuses

Status Description
Draft Payment created, awaiting action
Authorized Payment authorized by the bank, awaiting capture
Paid Payment received and confirmed
In progress Capture sent, processing underway
Disputed The customer disputed the payment
Expired The payment has expired (deadline exceeded)
Failed The payment failed
Refused The payment was refused by the bank
Pending capture Awaiting capture by the bank
Canceled The payment was canceled

Payment card

The payment detail card displays:

  • General information: amount, currency, method, description
  • Dates: creation, expiry, payment
  • Link to the associated Dolibarr third party
  • Link to the related Dolibarr invoice (if applicable)

Mollie payment detail card with general information and available actions

Actions available on the card:

  • Refresh from Mollie - Updates the information from the API
  • Cancel - Cancels a pending payment (if the API allows it)
  • Capture - Starts the capture of an authorized payment
  • Release authorization - Releases an uncaptured payment authorization
  • Refund - Refunds all or part of the payment
  • Delete - Deletes the local record (draft only)

Bank transfer details

When a payment uses the bank transfer method (banktransfer), the card displays additional information:

  • Transfer reference - Unique reference the customer must indicate when making the transfer
  • Recipient account IBAN - IBAN of the Mollie account the customer must transfer to
  • BIC code - BIC code of the recipient bank
  • Recipient bank - Name of the bank

The flow is as follows:

  1. The customer chooses "bank transfer" during payment
  2. Mollie provides an IBAN and a unique transfer reference
  3. The customer makes the transfer from their bank indicating the reference
  4. Mollie automatically matches the transfer using the reference
  5. A webhook is sent and the status changes to Paid

The default delay to receive the transfer is 12 business days + 2 processing days. Past this delay, the payment automatically expires. The payment is mapped to the Dolibarr payment method VIR (bank transfer).

Tabs of the payment card

  • Card - Payment details
  • Refunds - List of associated refunds (see Refunds)
  • Chargebacks - Chargebacks linked to this payment (see Chargebacks)
  • Captures - Captures made (see Captures)

Event registrations and booths

The module supports online payment of event registrations and booth reservations from the Dolibarr Event organization module.

The flow is the Dolibarr core one: from the public registration page, the participant arrives on the payment page, where the Mollie button appears just like for an invoice.

Once the payment is confirmed:

  1. The payment is recorded on the registration invoice, on the Mollie bank account, like any other payment of the module
  2. The participant moves to Validated status, with the amount paid and the registration date
  3. For a booth, the reservation moves to Suggested status
  4. The confirmation email of the Event organization module is sent, if configured

Replaying the notification or reloading the return page does not validate twice: an already validated participant and an already suggested booth are left as they are.

Member dues

The module supports online payment of dues from the Dolibarr Members module. From a member's payment link, they arrive on the payment page where the Mollie button appears, with the choice of payment method (card, iDEAL, Bancontact, etc.) depending on what is enabled on your Mollie account.

Dues amount

A dues entry does not carry an amount like an invoice would: it is determined server-side, in this order:

  1. the amount of the member type
  2. failing that, the MEMBER_NEWFORM_AMOUNT constant
  3. failing that, the amount of the member's last dues

If the member type allows the member to choose their amount (Editable amount), the entered amount is accepted, provided it respects MEMBER_MIN_AMOUNT. Otherwise, the type's amount applies: a different value sent by the browser is ignored, and a collection that does not match the authorized amount is refused and logged.

If MEMBER_ALLOW_CHANGE_OF_TYPE is enabled, the type chosen on the payment page is applied: the amount and the recorded dues follow this type. An unknown or disabled type is never kept.

What is recorded after payment

  1. The member still in draft is validated
  2. The dues entry is created, for the period following the current one in case of renewal
  3. The complementary entries follow the ADHERENT_BANK_USE setting of the Members module:
    • Direct bank entry: bank line on the Mollie account
    • Invoice and bank entry: third party created if needed, invoice, payment and bank line
    • Invoice only: invoice, without bank entry
    • None: the dues entry only
  4. The membership confirmation email is sent if configured (ADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION or the member type text), and the external user is created if ADHERENT_CREATE_EXTERNAL_USER_LOGIN is enabled

The bank account used is the Mollie module's one. The Dolibarr core only knows the PayBox, PayPal and Stripe accounts here: without this handling, the collection would fail with "bank account not configured".

Replaying the notification or reloading the return page never creates two dues entries for the same Mollie payment.

Payouts

Access: Bank > Mollie > Payouts

Payouts represent the transfers Mollie makes to your bank account. Mollie groups the payments received and transfers them periodically (usually daily or weekly depending on your Mollie configuration).

Payout list

The list page displays:

  • Mollie ID of the payout
  • Amount transferred
  • Date of the transfer
  • Status

Mollie payout list with transferred amounts and dates

Synchronization

Payouts are automatically synchronized via:

  • The Synchronize button on the list page
  • The daily scheduled task MollieCheckPay (see Scheduled tasks)
  • Mollie webhooks (automatic notifications)