Process payments

Once your merchants are connected and onboarded, you can start creating payments on their behalf. The core flow is the same for both Platforms and Marketplaces: create a paymentsend the shopper to the hosted checkouthandle the result via webhook.

Which access token to use

This is a common source of confusion between the two models:

  • Connect for Platforms: payments are owned by the connected merchant, not your platform. Create the payment using the connected merchant's access_token as the Bearer token. The payment appears on their account, their name goes on the buyer's bank statement and they carry the liability.
  • Connect for Marketplaces: payments are owned by your platform. Create the payment using your own platform's access token or API key. Connected sellers are paid on routing (after the fact), not by commision on the payment itself.

Creating payment

Use the Payments API to create payments. Always specify the profileId for the account that owns the payment: the connected merchant's profile for Platforms or your platform's profile for Marketplaces.

curl -X POST https://api.mollie.com/v2/payments \
  -H "Authorization: Bearer <access_token>" \
  -d "amount[currency]=EUR" \
  -d "amount[value]=10.00" \
  -d "description=Order #12345" \
  -d "redirectUrl=https://example.com/order/12345" \
  -d "webhookUrl=https://example.com/webhooks/mollie" \
  -d "profileId=pfl_xxxxxxx"

Mollie returns a payment object with an id, status of open and _links.checkout.href URL. Redirect the shopper to this link to complete the payment.

For a full walkthrough of the payment creation flow, see Accepting payments.

Handling payment status

Never trust the redirect back to your redirectUrl to confirm payment success: the shopper may close the browser before completing the payment or manipulate the URL in some way. Instead, use Webhooks.

When a payment status changes, Mollie sends a POST request to your webhookUrl containing only the payment id. You then need to fetch the full payment object from the API, check its status and update your system accordingly.

paid → fulfill the order
failed / expired / canceled → indicate the result to the customer

See Webhooks for implementation details and retry behavior.

Refunds

Create refunds through the Refunds API against a specific payment ID.
For Platforms, the refund is deducted from the connected merchant's balance; application fees are non-refundable.
For Marketplaces with split payments, routing reversals are required alongside the refund. The routing guides in this section cover those details.

For chargebacks, see Chargebacks.



Did this page help you?