Search

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 account holders.

With every payment, capture, or refund on Adyen for Platforms, you can split the funds between any number of accounts in your platform, including your liable account. For example, when a customer pays on your platform, you can split the funds so that a portion goes to your liable account as platform fee, and the sale amount goes to the account holder's account.

You can provide split information through API requests, or if your integration processes payments through stores, you can also create a split configuration to automatically split payments.

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 sales manager to confirm.

Providing split information through API requests

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

You can provide split information:

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

  • account: The accountCode of the account where the split amount will be sent.
  • amount.value: The split amount.
  • type: When sending the amount to any other account in your platform, set the type to MarketPlace. Other types such as Commission or VAT sends the split amount to your liable account.
  • reference: Your unique identifier for the split. While this field is only required in the API if type is MarketPlace, we strongly recommend that you send 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.

For example, when a customer pays for goods on your platform for 400.00 USD, you can split the payment such that:

  • 300.00 USD goes to the seller's account as payment for the goods. You'll send the payment to the account of the seller account holder with accountCode 8516026831348764.
  • 100.00 USD goes to your liable account as your platform's commission.
Structure of a splits array
{
  "splits":[
    {
         "amount":{
             "value":30000
         },
         "type":"MarketPlace",
         "account":"8516026831348764",
         "reference":"QXhlbFN0b2x0ZW5iZXJnCg"
      },
      {
         "amount":{
             "value":10000
         },
         "type":"Commission",
         "reference":"THVjYXNCbGVkc29lCg"
      }
   ]
}

Validating split information

Adyen frontend systems only validate the format of the split data. The accounts provided in split data will not be validated by the frontend.

If you provide split data with an account that does not exist, or an account belonging to an account holder with a Closed status, the full amount of the transaction will be sent to the liable account regardless of the original split data.

You will receive a PAYMENT_FAILURE notification of the failed split. You can use Fund transfer to correct any account balances.

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 what the total split will look like for your account holders at the time of a payment, you can skip providing any split data at payment and instead provide split data at capture. Split data provided at capture overrides any split data provided with the initial payment request.

Below is an example of a /payments request with a split data. To make test payments, refer to Test card numbers.

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/v67/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":30000
         },
         "type":"MarketPlace",
         "account":"8516026831348764",
         "reference":"QXhlbFN0b2x0ZW5iZXJnCg"
      },
      {
         "amount":{
             "value":10000
         },
         "type":"Commission",
         "reference":"THVjYXNCbGVkc29lCg"
      }
   ]
}'

Payment statuses

Once a payment has reached the SentForSettle state, the transaction will show up in the account as a PENDING_CREDIT transaction. Once Adyen has received the funds for the payment, the transaction will be updated to CREDITED and the funds will be available to pay out on the account.

You can always look at the transaction associated with all accounts on a account holder using /accountHolderTransactionList call.

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 account.

Split funds at capture
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v67/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":"MarketPlace",
         "account":"151272963",
         "reference":"Partial capture #1"
      },
      {
         "amount":{
             "value":200
         },
         "type":"MarketPlace",
         "account":"181472818",
         "reference":"Partial capture #2"
      }
    ]
}'

Split a refund

When splitting a refund, you can use the original split data at the time of payment authorization or capture, or provide a different split data.

Using the original split data

To split the refund using the original split data in the payment or capture, do not send split data when making a refund.

The absence of the split data in a /payments/{paymentPspReference}/refunds request indicates that you would like to use the split data provided at the time of payment authorization or capture.

Here is an example refund request without providing split data.

Split a refund using the original split data
# Set your X-API-KEY with the API key from the Customer Area.
curl https://checkout-test.adyen.com/v67/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",
   "modificationAmount":{
      "value":599,
      "currency":"USD"
   }
}'

Using a different split data

If you want to make a partial refund or split the refund differently from the original split data in the payment or capture, then include split data when making a refund.

When refunding, you can only use accounts that were part of the original split and you must use the same reference you used in the original split. 

For example, let's split a 10 USD payment with 2 USD going to your liable account and 8 USD going to account 12345. If you provide a split reference of splitId_1 for the payment, then on the refund, you will need to use the same split reference of splitId_1.

Here is the example payment of 10 USD with 2 USD going to your liable account and 8 USD to account 12345.

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/v67/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":"MarketPlace",
         "account":"12345",
         "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 account and 5 USD from account 12345.

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/v67/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",
   "modificationAmount":{
      "value":1000,
      "currency":"USD"
   },
   "splits":[
      {
         "amount":{
             "value":500
         },
         "type":"Commission",
         "reference":"splitId_1_commission"
      },
      {
         "amount":{
             "value":500
         },
         "type":"MarketPlace",
         "account":"12345",
         "{hint:This is the same reference used in the split payment}reference{/hint}":"splitId_1"
      }
   ]
}'

Chargeback and disputes

You are responsible for all disputes and dispute management. This includes providing first line support to your sub-merchants and the customers of your platform, clearly communicating your contact details on your website or app, and managing all disputes between your customers and your sub-merchants.

Split chargebacks

Chargebacks, by default, deduct according to original split data. If you want to configure your platform to deduct entirely from your liable account instead, reach out to our Support Team.

Where a chargeback reversal amount does not match the payment amount, funds are deducted entirely from your liable account. You can use Fund transfer to correct any account balances.

Next steps