Are you looking for test card numbers?

Would you like to contact support?

Marketpay icon

Processing online payments

Learn how to split transactions with your users.

With every payment, capture, or refund on Adyen for Platforms, you can split the funds between any number of balance accounts in your platform, including your liable balance account. For example, when a customer pays, you can split the funds into two parts. One part is for the platform fee that goes to your liable account, and the other one is for the sale amount that goes to your user's balance account.

To split funds, provide split information through API requests.

Supported payment methods

Adyen for Platforms supports a wide range of payment methods, such as major card brands (Visa, Mastercard, American Express, Discover/Diners), Apple Pay, Google Pay, SEPA, iDEAL, Sofort, and more. Restrictions may apply where Adyen is not in the settlement flow. Reach out to your Adyen contact to confirm.

Providing split information through API requests

You can split funds as many times as you need and into any number of balance accounts in your platform, including your liable balance account.

You can provide split information:

To split funds, you'll need to send the splits array. For each split object in the array, specify the following fields:

Parameter Required Description
account -white_check_mark- The ID of the balance account to which the split amount will be sent.
amount.value -white_check_mark- The value of the split amount.
reference -white_check_mark- Your unique identifier for the split. While this field is only required in the API if type is BalanceAccount, we strongly recommend sending a reference for all other types. You can use the reference to reconcile the split and the associated payment in the transaction overview and in the reports. Without a reference, the amounts are merged and you will be unable to reconcile the split.
type -white_check_mark- Set the type to BalanceAccount when sending the amount to other balance accounts in your platform. Other types such as Commission or VAT sends the split amount to your liable balance account.

Here is an example of how you would split a payment when a customer pays for goods for 400.00 USD.

  • 396.00 USD goes to the seller as payment for the goods. You'll send the payment to the balance account ID BA32272223222B5DFZNBZCX66.
  • 4.00 USD goes to your liable balance account as your platform's commission.
Structure of a splits array
{
  "splits":[
    {
         "amount":{
             "value":39600
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000002",
         "reference":"QXhlbFN0b2x0ZW5iZXJnCg"
      },
      {
         "amount":{
             "value":400
         },
         "type":"Commission",
         "reference":"THVjYXNCbGVkc29lCg"
      }
   ]
}

Validating split information

Adyen front-end systems only validate the format of the split data. The balance accounts provided in split data are not validated by the front end.

Payments, captures, and refunds may succeed, but the funds are not split if the balance account specified in the request does not exist or is linked to an account holder with a Closed status. When this happens, the full amount of the transaction is sent to your platform's liable balance account.

To correct balances, you can transfer funds between balance accounts in your platform.

Split at payment

To split funds at the time of payment, provide split data in your POST /payments request. You can send split data regardless of your PCI compliance level.

If you do not know the split amount at the time of payment, you can skip providing this at payment and provide split data at capture instead. Split data provided at capture overrides any split data provided with the initial payment request.

Below is an example of a payment request with a split data.

Split funds at time of payment
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v69/payments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
  "paymentMethod": {
    "type": "scheme",
    "number": "4111111111111111",
    "cvc": "737",
    "expiryMonth": "03",
    "expiryYear": "2030",
    "holderName": "John Smith"
  },
  "amount": {
    "value": 40000,
    "currency": "USD"
  },
  "reference": "YOUR_ORDER_NUMBER",
  "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
  "returnUrl": "https://your-company.com/...",
  "splits":[
    {
         "amount":{
             "value":39600
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000002",
         "reference":"QXhlbFN0b2x0ZW5iZXJnCg"
      },
      {
         "amount":{
             "value":400
         },
         "type":"Commission",
         "reference":"THVjYXNCbGVkc29lCg"
      }
   ]
}'

Split at capture

Some platforms do not know the final split at point of payment. In this case, you can provide split data with a /payments/paymentPspReference/captures request. Note that you can only split at capture for payment methods that support separate captures. For example, you cannot split at capture for Sofort or iDEAL payments because these don't support separate captures.

Providing split data at capture overrules data from the original payment request. If you don't send split data in the capture request, then we'll use the split data from the payment authorization.

Partial captures require you to supply split data. If you don't provide split data, then all the funds to go to the liable balance account.

Split funds at capture
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v69/payments/{paymentPspReference}/captures \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
    "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
    "amount": {
        "value": 599,
        "currency": "EUR"
    },
    "reference": "YOUR_REFERENCE_NUMBER",
    "splits":[
      {
         "amount":{
             "value":399
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000003",
         "reference":"Partial capture #1"
      },
      {
         "amount":{
             "value":200
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000002",
         "reference":"Partial capture #2"
      }
    ]
}'

Split a refund

We recommend that you always provide split data in refunds so that you are always in control and can support different refund scenarios, such as partial and multiple partial refunds.

Send split data in your refund request to support different refund scenarios, such as a partial and multiple partial refunds.

When sending split data on a refund request, you must:

  • Only use balance accounts that were part of the original split.
  • Use the same reference values from the original split.

For example, let's split a 10 USD payment with 2 USD going to your liable balance account and 8 USD going to account BA32272223222B5DHXHHG73VM. The split data has reference values splitId_1 and splitId_1_commission.

Here is an example/payments request.

Make a payment with split data
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v69/payments \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
   "paymentMethod":{
      "type":"scheme",
      "number":"4400 0000 0000 0008",
      "expiryMonth":"10",
      "expiryYear":"2020",
      "holderName":"John Smith",
      "cvc":"737"
   },
   "amount":{
      "value":1000,
      "currency":"USD"
   },
   "reference":"YOUR_REFERENCE_NUMBER",
   "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
   "returnUrl":"https://your-company.com/...",
   "splits":[
      {
         "amount":{
             "value":200
         },
         "type":"Commission",
         "reference":"splitId_1_commission"
      },
      {
         "amount":{
             "value":800
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000003",
         "reference":"splitId_1"
      }
   ]
}'

This following example would be the refund of that payment if you were going to split the refund with 5 USD from your liable balance account and 5 USD from account BA32272223222B5DHXHHG73VM. The refund must use the same reference values splitId_1 and splitId_1_commission from the original split data in the payment request.

Here is an example /payments/paymentPspReference/refunds request without providing split data.

Split a refund with different data
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v69/payments/{paymentPspReference}/refunds \
-H "x-API-key: YOUR_X-API-KEY" \
-H "content-type: application/json" \
-d '{
   "reference":"YOUR_REFERENCE_NUMBER",
   "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
   "amount":{
      "value":1000,
      "currency":"USD"
   },
   "splits":[
      {
         "amount":{
             "value":500
         },
         "type":"Commission",
         "reference":"splitId_1_commission"
      },
      {
         "amount":{
             "value":500
         },
         "type":"BalanceAccount",
         "account":"BA00000000000000000000003",
         "reference":"splitId_1"
      }
   ]
}'

Chargeback and disputes

You are responsible for all disputes and dispute management, including being the first line of support for your users and the customers of your platform. You must have your contact details on your website or app, and manage all disputes between your customers and your users.

Split chargebacks

Chargebacks, by default, are deducted entirely from your liable balance account.

You can transfer funds between balance accounts in your platform to correct balances.

Next steps