Splitting payments with Mollie Connect

Note

This feature is currently in closed beta. Please contact our partner management team if you are interested in testing this functionality with us.

Warning

The split payments feature is not available for third-party payments methods (gift cards, Paypal, etc.) or captures (Klarna slice it, Klarna pay later, etc.)

With Split payments you can distribute and split payments between your platform and your connected merchant accounts.

When using this functionality, your platform will remain the ‘owner’ of the payment. The Mollie fees you negotiated are charged on your account directly, and will not be visible to your connected accounts. The chargeback liability also remains on your account.

Splitting payments can also be useful if you want to control the timing and frequency of your users’ settlements from Mollie.

For simpler use cases, we offer Application fees.

Getting started: Connecting an account

To start connecting accounts to process payments for, please contact your Mollie partner manager. They can enable Split payments on your account.

Once your account is setup properly, any new merchants you onboard via your app will automatically get linked to your account.

Routing part of a payment to a connected account

Now that you have an account connected to yours, you can start sending parts of each payment to their balance. This can be done by specifying the payment routing when creating a payment.

In the example below, we will route €7,50 of a €10,00 payment to the connected account org_23456.

On our own account, we will receive the remainder of €2,50 minus any payment fees charged by Mollie.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
curl -X POST https://api.mollie.com/v2/payments \
    -H "Authorization: Bearer access_vR6naacwfSpfaT5CUwNTdV5KsVPJTNjURkgBPdvW" \
    -d "amount[currency]=EUR" \
    -d "amount[value]=10.00" \
    -d "description=My first routed payment" \
    -d "redirectUrl=https://webshop.example.org/order/12345/" \
    -d "webhookUrl=https://webshop.example.org/payments/webhook/" \
    -d "routing[0][amount][currency]=EUR" \
    -d "routing[0][amount][value]=7.50" \
    -d "routing[0][destination][type]=organization" \
    -d "routing[0][destination][organizationId]=org_23456"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
HTTP/1.1 201 Created
Content-Type: application/hal+json; charset=utf-8

{
    "resource": "payment",
    "id": "tr_7UhSN1zuXS",
    "amount": {
        "value": "10.00",
        "currency": "EUR"
    },
    "description": "My first routed payment",
    "status": "open",
    "redirectUrl": "https://webshop.example.org/order/12345/",
    "webhookUrl": "https://webshop.example.org/payments/webhook/",
    "routing": [
        {
            "resource": "route",
            "id": "rt_k6cjd01h",
            "amount": {
                "value": "2.50",
                "currency": "EUR"
            },
            "destination": {
                "type": "organization",
                "organizationId": "me"
            }
        },
        {
            "resource": "route",
            "id": "rt_9dk4al1n",
            "amount": {
                "value": "7.50",
                "currency": "EUR"
            },
            "destination": {
                "type": "organization",
                "organizationId": "org_23456"
            }
        }
    ]
    "...": { }
}

As soon as the payment is completed, the €7,50 will become available on the balance of the connected account, and the €2,50 will become available on the balance of your platform account.

Delaying settlement of a split payment

The settlement of a routed payment can be delayed on payment level, by specifying a releaseDate on a route when creating a payment.

For example, the funds for the following payment will only become available on the balance of the connected account on 1 January 2025:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
curl -X POST https://api.mollie.com/v2/payments \
    -H "Authorization: Bearer access_vR6naacwfSpfaT5CUwNTdV5KsVPJTNjURkgBPdvW" \
    -d "amount[currency]=EUR" \
    -d "amount[value]=10.00" \
    -d "description=My first delayed payment" \
    -d "redirectUrl=https://webshop.example.org/order/12345/" \
    -d "webhookUrl=https://webshop.example.org/payments/webhook/" \
    -d "routing[0][amount][currency]=EUR" \
    -d "routing[0][amount][value]=7.50" \
    -d "routing[0][destination][type]=organization" \
    -d "routing[0][destination][organizationId]=org_23456" \
    -d "routing[0][releaseDate]=2025-01-01"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
HTTP/1.1 201 Created
Content-Type: application/hal+json; charset=utf-8

{
    "resource": "payment",
    "id": "tr_2qkhcMzypH",
    "amount": {
        "value": "10.00",
        "currency": "EUR"
    },
    "description": "My first routed payment",
    "status": "open",
    "redirectUrl": "https://webshop.example.org/order/12345/",
    "webhookUrl": "https://webshop.example.org/payments/webhook/",
    "routing": [
        {
            "resource": "route",
            "id": "rt_k6cjd01h",
            "amount": {
                "value": "2.50",
                "currency": "EUR"
            },
            "destination": {
                "type": "organization",
                "organizationId": "me"
            }
        },
        {
            "resource": "route",
            "id": "rt_9dk4al1n",
            "amount": {
                "value": "7.50",
                "currency": "EUR"
            },
            "destination": {
                "type": "organization",
                "organizationId": "org_23456"
            },
            "releaseDate": "2025-01-01"
        }
    ]
    "...": { }
}

It is possible to update the release date of a transaction before it reaches the connected account’s available balance, as long as the payment has already been paid by the consumer, by simply updating the payment route object:

1
2
3
curl -X POST https://api.mollie.com/v2/payments/tr_2qkhcMzypH/routes/rt_9dk4al1n \
    -H "Authorization: Bearer access_vR6naacwfSpfaT5CUwNTdV5KsVPJTNjURkgBPdvW" \
    -d "releaseDate=2026-01-01"
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
HTTP/1.1 200 OK
Content-Type: application/hal+json; charset=utf-8

{
    "resource": "route",
    "id": "rt_9dk4al1n",
    "amount": {
        "value": "7.50",
        "currency": "EUR"
    },
    "destination": {
        "type": "organization",
        "organizationId": "org_23456"
    },
    "releaseDate": "2026-01-01"
}

The release date can be up to two years from the day of the payment’s creation. For test payments, this limit is 10 days.