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 payment → send the shopper to the hosted checkout → handle 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_tokenas 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 customerSee 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.
Updated 18 minutes ago