--- title: "Split payments at capture" description: "Learn how to split a payment at the time of capture." url: "https://docs.adyen.com/platforms/online-payments/split-transactions/split-payments-at-capture" source_url: "https://docs.adyen.com/platforms/online-payments/split-transactions/split-payments-at-capture.md" canonical: "https://docs.adyen.com/platforms/online-payments/split-transactions/split-payments-at-capture" last_modified: "2023-02-16T17:23:00+01:00" language: "en" --- # Split payments at capture Learn how to split a payment at the time of capture. [View source](/platforms/online-payments/split-transactions/split-payments-at-capture.md) When you process split payments for your users, the split amounts are not always known or decided at the time of authorization. For example: * When a payment is pre-authorized with the intention of an [authorization adjustment](/online-payments/adjust-authorisation/) later. * When the payment is processed using a payment method that does not support automatic capture. * Order flows where the payment is captured manually when the order is shipped. In such cases, you can provide the split instructions in a [/payments/{paymentPspReference}/captures](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures) request instead. You can also override the split instructions you provided in the payment request if you send different split instructions in your capture request. However, we recommend to always include split instructions in your payment request, even when you intend to update these instructions in your capture request. ## Requirements Take into account the following requirements, limitations, and preparations to capture payments. | Requirement | Description | | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **[API credentials](/development-resources/api-credentials/)** | You must have credentials for the following API:- [Checkout API](https://docs.adyen.com/api-explorer/Checkout/latest/overview) | | **[Webhooks](/development-resources/webhooks)** | Ensure that your server can receive and accept [standard webhooks](/development-resources/webhooks). Subscribe to any of the following webhooks:- [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) - [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) | | **Limitations** | Splitting at capture is subject to certain [limitations](#limitations). | | **Setup steps** | Before you start, you must [enable manual capture](/online-payments/capture#enable-manual-capture). | ## Limitations To split payments when you manually capture them, take into account the following points: * As mentioned in the introduction, we recommend to [always include split instructions in your payment request](/platforms/in-person-payments/split-transactions/split-payments-at-authorization), even when you intend to update these instructions in your capture request. This ensures that funds are booked correctly for payment methods that do not support delayed capture. * Splitting payments at capture is only possible for payment methods that support [separate captures](/online-payments/capture). * When the capture amount differs from the original authorization amount, you must provide split instructions in your capture request. If you do not provide split instructions for such captures, then all funds are booked to your liable balance account. * The split types **Surcharge** and **Tip** are not supported when you split a payment at capture. ## Split a payment at the time of capture To split a payment at the time of capture: 1. From the payment response or the [AUTHORISATION](https://docs.adyen.com/api-explorer/Webhooks/latest/post/AUTHORISATION) webhook, get the `pspReference` of the authorization you want to capture. 2. To capture and split a payment at the same time, send a POST [/payments/{paymentPspReference}/captures](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures) request, where `paymentPspReference` is the `pspReference` of the authorization you want to capture. In the body, include the [splits](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-splits) array. For each item in the array, specify the following fields: | Parameter | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [account](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-splits-account) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The account that will receive (or be charged) the split amount. This is the `balanceAccountId` of one of your user's balance accounts. You do not need to specify this field when `type` is **Commission**. | | [amount.value](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-amount-value) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The value of the split amount. You do not need to specify this field for transaction fees, since they are not known at the time of payment. | | [type](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-type) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | Defines the part of the payment you want to book to the specified `account`. Possible values:- **BalanceAccount**: books the sale amount to the specified balance account. - **Commission**: books the commission to your [liable balance account](/platforms/account-structure-resources). - **Remainder**: books the amount left over after a [currency conversion](/platforms/online-payments/currency-conversion) to the specified balance account. - You can also book different types of the transaction fees to different balance accounts. - **TopUp**: books the [top-up amount](/platforms/top-up-balance-account/on-demand-top-ups) paid by your user to the specified balance account. This split type is not supported for a [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions) request. | | [amount.currency](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-amount-currency) | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | Required for currency conversion The currency of the split amount. | | [reference](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-reference) | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | Required if `type` is **BalanceAccount** Your unique identifier for the specific transaction split. | | [description](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments/\(paymentPspReference\)/captures#request-description) | | Your description for that specific transaction split, which is returned in our reporting. | Here is an example of how to split the payment amount at the time of capture, when a customer pays for goods worth USDĀ 80.00: * USD 76.00 is booked to your user's balance account as payment for the goods. * USD 4.00 is booked to your liable balance account as your platform's commission. * All transaction fees are booked against your user's balance account, deducted from the sale amount. **Split funds at time of capture** #### curl ```bash curl https://checkout-test.adyen.com/v72/payments/HGGKZCD6J3RZNN82/captures \ -H 'x-api-key: ADYEN_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "amount": { "value": 8000, "currency": "USD" }, "reference": "YOUR_REFERENCE_NUMBER", "splits": [ { "amount": { "value": 7600 }, "type": "BalanceAccount", "account": "BA00000000000000000000001", "reference": "Your reference for the sale amount", "description": "Your description for the sale amount" }, { "amount": { "value": 400 }, "type": "Commission", "reference": "Your reference for your commission", "description": "Your description for your commission" }, { "type": "PaymentFee", "account": "BA00000000000000000000001", "reference": "Your reference for the payment fee", "description": "Your description for the payment fee" } ] }' ``` #### Java ```java // Adyen Java API Library v40.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.checkout.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.checkout.*; // For the LIVE environment, also include your liveEndpointUrlPrefix. Client client = new Client("ADYEN_API_KEY", Environment.TEST); // Create the request object(s) SplitAmount splitAmount1 = new SplitAmount() .value(7600L); SplitAmount splitAmount2 = new SplitAmount() .value(400L); Amount amount = new Amount() .currency("USD") .value(8000L); Split split1 = new Split() .reference("Your reference for the sale amount") .amount(splitAmount1) .description("Your description for the sale amount") .type(Split.TypeEnum.BALANCEACCOUNT) .account("BA00000000000000000000001"); Split split2 = new Split() .reference("Your reference for your commission") .amount(splitAmount2) .description("Your description for your commission") .type(Split.TypeEnum.COMMISSION); Split split3 = new Split() .reference("Your reference for the payment fee") .description("Your description for the payment fee") .type(Split.TypeEnum.PAYMENTFEE) .account("BA00000000000000000000001"); PaymentCaptureRequest paymentCaptureRequest = new PaymentCaptureRequest() .reference("YOUR_REFERENCE_NUMBER") .amount(amount) .splits(Arrays.asList(split1, split2, split3)) .merchantAccount("YOUR_MERCHANT_ACCOUNT"); // Send the request ModificationsApi service = new ModificationsApi(client); PaymentCaptureResponse response = service.captureAuthorisedPayment("paymentPspReference", paymentCaptureRequest, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php setXApiKey("ADYEN_API_KEY"); // For the LIVE environment, also include your liveEndpointUrlPrefix. $client->setEnvironment(Environment::TEST); // Create the request object(s) $splitAmount1 = new SplitAmount(); $splitAmount1 ->setValue(7600); $splitAmount2 = new SplitAmount(); $splitAmount2 ->setValue(400); $amount = new Amount(); $amount ->setCurrency("USD") ->setValue(8000); $split1 = new Split(); $split1 ->setReference("Your reference for the sale amount") ->setAmount($splitAmount1) ->setDescription("Your description for the sale amount") ->setType("BalanceAccount") ->setAccount("BA00000000000000000000001"); $split2 = new Split(); $split2 ->setReference("Your reference for your commission") ->setAmount($splitAmount2) ->setDescription("Your description for your commission") ->setType("Commission"); $split3 = new Split(); $split3 ->setReference("Your reference for the payment fee") ->setDescription("Your description for the payment fee") ->setType("PaymentFee") ->setAccount("BA00000000000000000000001"); $paymentCaptureRequest = new PaymentCaptureRequest(); $paymentCaptureRequest ->setReference("YOUR_REFERENCE_NUMBER") ->setAmount($amount) ->setSplits(array($split1, $split2, $split3)) ->setMerchantAccount("YOUR_MERCHANT_ACCOUNT"); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new ModificationsApi($client); $response = $service->captureAuthorisedPayment('paymentPspReference', $paymentCaptureRequest, $requestOptions); ``` #### C\# ```cs // Adyen .NET API Library v32.2.1 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Checkout; using Adyen.Service.Checkout; // For the LIVE environment, also include your liveEndpointUrlPrefix. var config = new Config() { XApiKey = "ADYEN_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) SplitAmount splitAmount1 = new SplitAmount { Value = 7600 }; SplitAmount splitAmount2 = new SplitAmount { Value = 400 }; Amount amount = new Amount { Currency = "USD", Value = 8000 }; Split split1 = new Split { Reference = "Your reference for the sale amount", Amount = splitAmount1, Description = "Your description for the sale amount", Type = Split.TypeEnum.BalanceAccount, Account = "BA00000000000000000000001" }; Split split2 = new Split { Reference = "Your reference for your commission", Amount = splitAmount2, Description = "Your description for your commission", Type = Split.TypeEnum.Commission }; Split split3 = new Split { Reference = "Your reference for the payment fee", Description = "Your description for the payment fee", Type = Split.TypeEnum.PaymentFee, Account = "BA00000000000000000000001" }; PaymentCaptureRequest paymentCaptureRequest = new PaymentCaptureRequest { Reference = "YOUR_REFERENCE_NUMBER", Amount = amount, Splits = new List{ split1, split2, split3 }, MerchantAccount = "YOUR_MERCHANT_ACCOUNT" }; // Send the request var service = new ModificationsService(client); var response = service.CaptureAuthorisedPayment("paymentPspReference", paymentCaptureRequest, requestOptions: new RequestOptions { IdempotencyKey = "UUID"}); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.0.0 const { Client, CheckoutAPI } = require('@adyen/api-library'); // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const paymentCaptureRequest = { merchantAccount: "YOUR_MERCHANT_ACCOUNT", amount: { value: 8000, currency: "EUR" }, reference: "YOUR_REFERENCE_NUMBER", splits: [ { amount: { value: 7600 }, type: "BalanceAccount", account: "BA00000000000000000000001", reference: "Your reference for the sale amount", description: "Your description for the sale amount" }, { amount: { value: 400 }, type: "Commission", reference: "Your reference for your commission", description: "Your description for your commission." }, { type: "PaymentFee", account: "BA00000000000000000000001", reference: "Your reference for the payment fee", description: "Your description for the payment fee" } ] } // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.ModificationsApi.captureAuthorisedPayment("paymentPspReference", paymentCaptureRequest, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v21.1.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/checkout" ) // For the LIVE environment, also include your liveEndpointUrlPrefix. client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) splitAmount1 := checkout.SplitAmount{ Value: 7600, } splitAmount2 := checkout.SplitAmount{ Value: 400, } amount := checkout.Amount{ Currency: "USD", Value: 8000, } split1 := checkout.Split{ Reference: common.PtrString("Your reference for the sale amount"), Amount: &splitAmount1, Description: common.PtrString("Your description for the sale amount"), Type: "BalanceAccount", Account: common.PtrString("BA00000000000000000000001"), } split2 := checkout.Split{ Reference: common.PtrString("Your reference for your commission"), Amount: &splitAmount2, Description: common.PtrString("Your description for your commission"), Type: "Commission", } split3 := checkout.Split{ Reference: common.PtrString("Your reference for the payment fee"), Description: common.PtrString("Your description for the payment fee"), Type: "PaymentFee", Account: common.PtrString("BA00000000000000000000001"), } paymentCaptureRequest := checkout.PaymentCaptureRequest{ Reference: common.PtrString("YOUR_REFERENCE_NUMBER"), Amount: amount, Splits: []checkout.Split{ split1, split2, split3, }, MerchantAccount: "YOUR_MERCHANT_ACCOUNT", } // Send the request service := client.Checkout() req := service.ModificationsApi.CaptureAuthorisedPaymentInput("paymentPspReference").IdempotencyKey("UUID").PaymentCaptureRequest(paymentCaptureRequest) res, httpRes, err := service.ModificationsApi.CaptureAuthorisedPayment(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v14.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_API_KEY" # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "amount": { "value": 8000, "currency": "USD" }, "reference": "YOUR_REFERENCE_NUMBER", "splits": [ { "amount": { "value": 7600 }, "type": "BalanceAccount", "account": "BA00000000000000000000001", "reference": "Your reference for the sale amount", "description": "Your description for the sale amount" }, { "amount": { "value": 400 }, "type": "Commission", "reference": "Your reference for your commission", "description": "Your description for your commission" }, { "type": "PaymentFee", "account": "BA00000000000000000000001", "reference": "Your reference for the payment fee", "description": "Your description for the payment fee" } ] } # Send the request result = adyen.checkout.modifications_api.capture_authorised_payment(request=json_request, paymentPspReference="paymentPspReference", idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v11.0.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_API_KEY' # For the LIVE environment, also include your liveEndpointUrlPrefix. adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :merchantAccount => 'YOUR_MERCHANT_ACCOUNT', :amount => { :value => 8000, :currency => 'USD' }, :reference => 'YOUR_REFERENCE_NUMBER', :splits => [ { :amount => { :value => 7600 }, :type => 'BalanceAccount', :account => 'BA00000000000000000000001', :reference => 'Your reference for the sale amount', :description => 'Your description for the sale amount' }, { :amount => { :value => 400 }, :type => 'Commission', :reference => 'Your reference for your commission', :description => 'Your description for your commission' }, { :type => 'PaymentFee', :account => 'BA00000000000000000000001', :reference => 'Your reference for the payment fee', :description => 'Your description for the payment fee' } ] } # Send the request result = adyen.checkout.modifications_api.capture_authorised_payment(request_body, 'paymentPspReference', headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.0.0 import { Client, CheckoutAPI, Types } from "@adyen/api-library"; // For the LIVE environment, also include your liveEndpointUrlPrefix. const config = new Config({ apiKey: "ADYEN_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const splitAmount1: Types.checkout.SplitAmount = { value: 7600 }; const splitAmount2: Types.checkout.SplitAmount = { value: 400 }; const amount: Types.checkout.Amount = { currency: "USD", value: 8000 }; const split1: Types.checkout.Split = { reference: "Your reference for the sale amount", amount: splitAmount1, description: "Your description for the sale amount", type: Types.checkout.Split.TypeEnum.BalanceAccount, account: "BA00000000000000000000001" }; const split2: Types.checkout.Split = { reference: "Your reference for your commission", amount: splitAmount2, description: "Your description for your commission", type: Types.checkout.Split.TypeEnum.Commission }; const split3: Types.checkout.Split = { reference: "Your reference for the payment fee", description: "Your description for the payment fee", type: Types.checkout.Split.TypeEnum.PaymentFee, account: "BA00000000000000000000001" }; const paymentCaptureRequest: Types.checkout.PaymentCaptureRequest = { reference: "YOUR_REFERENCE_NUMBER", amount: amount, splits: [split1, split2, split3], merchantAccount: "YOUR_MERCHANT_ACCOUNT" }; // Send the request const checkoutAPI = new CheckoutAPI(client); const response = checkoutAPI.ModificationsApi.captureAuthorisedPayment("paymentPspReference", paymentCaptureRequest, { idempotencyKey: "UUID" }); ``` 3. In the capture response, note the following: * `paymentPspReference`: The PSP reference of the authorization. * `pspReference`: The PSP reference associated with this capture request. This is different from the PSP reference of the authorization. * `status`: **received** **Capture response** ```json { "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "paymentPspReference": "CWBC43ZX2VTFWR82", "pspReference": "PPKFQ89R6QRXGN82", "reference": "YOUR_REFERENCE_NUMBER", "status": "received", "amount": { "currency": "USD", "value": 8000 }, "splits": [ { "account": "BA00000000000000000000001", "amount": { "currency": "USD", "value": 7600 }, "description": "Your description for the sale amount", "reference": "Your reference for the sale amount", "type": "BalanceAccount" }, { "amount": { "currency": "USD", "value": 400 }, "description": "Your description for your commission", "reference": "Your reference for your commission", "type": "Commission" }, { "account": "BA00000000000000000000001", "description": "Your description for the payment fee", "reference": "Your reference for the payment fee", "type": "PaymentFee" } ] } ``` 4. Listen to the [CAPTURE webhook](/online-payments/capture#capture-webhook) to learn the outcome of the request. ### Troubleshooting The API request validates only the format of the split instructions, **not** the balance accounts specified in the request. This means that even if the transaction is successful, it is possible that the funds are not credited to/deducted from the specified balance account. If the balance account does not exist, or it is linked to an account holder with a **closed** [status](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/accountHolders#responses-200-status), the full transaction and its fees are booked to your platform's liable balance account. To correct the balances, you can [transfer the funds](/platforms/internal-fund-transfers) between the balance accounts in your platform. ## Track fund movements To track the status of the funds transfers initiated by a capture request: 1. Listen to the following webhooks: * [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview): Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook to inform your server that funds will be credited to balance accounts, and [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhooks after every status change. * [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview): Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook to inform your server that funds have been credited to a balance account. 2. Acknowledge the webhooks. We send these webhooks for every split item in the payment. 3. In the payload of the [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook, note that: * The `event` array includes all previous transfer events. * The `sequenceNumber` defines the number of webhooks sent for the transfer, including the current one. ### Example Your server receives webhooks for each split of the capture amount. The following examples are based on a [standard split payment](#split-capture) use case. In this case, your server receives webhooks for each balance account involved, and each split of the payment amount. ### Tab: Payment You can identify payment-related transfer webhooks for the amount booked to your user by the following values: | Parameter | Description | Value | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | | [category](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-category) | Specifies the category of the transfer. | **platformPayment** | | [direction](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-direction) | The direction of the transfer based on the balance account. | **incoming** | | [type](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-type) | Specifies the type of the transfer. | **capture** | | [platformPaymentType](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-platformPaymentType) | Specifies the nature of each transfer on the balance platform. This parameter helps categorize transfers so you can reconcile transactions at a later time using the [Balance Platform Accounting Report](/platforms/reports-and-fees/balance-platform-accounting-report/). | **BalanceAccount** | | [pspPaymentReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-pspPaymentReference) | The [PSP reference](/get-started-with-adyen/adyen-glossary#psp-reference) of the associated payment. | **CWBC43ZX2VTFWR82** | | [modificationPspReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-modificationPspReference) | The PSP reference of the payment modification, in this case the capture. | **PPKFQ89R6QRXGN82** | ** ### 1. Incoming transfer received When a transfer request is received to credit funds to your user's balance account, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **incoming**. The webhook provides information about the transfer, such as the payment and split references and which user and balance account is credited with the funds. **Transfer received** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 7600 }, "balanceAccount": { "description": "Your description for the balance account", "id": "BA00000000000000000000001", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": 7600 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "SKRL00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 7600 } ], "status": "received", "type": "accounting" } ], "id": "JN4227222422265", "reason": "approved", "reference": "Your reference for the sale amount", "sequenceNumber": 1, "status": "received", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Incoming transfer authorized When the transfer request is authorized, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **authorised**. **Transfer authorised** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 7600 }, "balanceAccount": { "description": "Your description for the balance account", "id": "BA00000000000000000000001", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": 0, "reserved": 7600 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "SKRL00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 7600 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "SKRL00000000000000000000000002", "mutations": [ { "currency": "USD", "received": -7600, "reserved": 7600 } ], "status": "authorised", "type": "accounting" } ], "id": "JN4227222422265", "reason": "approved", "reference": "Your reference for the sale amount", "sequenceNumber": 2, "status": "authorised", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Incoming transfer captured When the funds are credited to your user's balance account, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **captured** and the `transactionId`. **Transfer captured** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 7600 }, "balanceAccount": { "description": "Your description for the balance account", "id": "BA00000000000000000000001", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "balance": 7600, "currency": "USD", "received": 0, "reserved": 0 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "SKRL00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 7600 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "SKRL00000000000000000000000002", "mutations": [ { "currency": "USD", "received": -7600, "reserved": 7600 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:20+02:00", "id": "SKRL00000000000000000000000003", "mutations": [ { "balance": 7600, "currency": "USD", "received": 0, "reserved": -7600 } ], "status": "captured", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "2023-03-01T00:00:00+02:00" } ], "id": "JN4227222422265", "reason": "approved", "reference": "Your reference for the sale amount", "sequenceNumber": 3, "status": "captured", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 4. Transaction booked When the funds are credited, Adyen also sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook, which includes information about the related transaction. **Transaction created** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": 7600, "currency": "USD" }, "status": "booked", "transfer": { "id": "JN4227222422265", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "reference": "Your reference for the sale amount" }, "valueDate": "2023-03-01T00:00:00+02:00", "bookingDate": "2025-10-20T13:30:20+02:00", "creationDate": "2025-10-20T13:30:05+02:00", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description for the account holder", "reference": "Your reference for the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description for the balance account", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" }, "type": "balancePlatform.transaction.created", "environment": "test" } ``` ### Tab: Transaction fees You can identify payment-related transfer webhooks for the transaction fees by the following values: | Parameter | Description | Value | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | | [category](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-category) | Specifies the category of the transfer. | **platformPayment** | | [direction](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-direction) | The direction of the transfer based on the balance account. | **outgoing** | | [type](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-type) | Specifies the type of the transfer. | **capture** | | [platformPaymentType](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-platformPaymentType) | Specifies the nature of each transfer on the balance platform. This parameter helps categorize transfers so you can reconcile transactions at a later time using the [Balance Platform Accounting Report](/platforms/reports-and-fees/balance-platform-accounting-report/). | **PaymentFee** | | [pspPaymentReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-pspPaymentReference) | The [PSP reference](/get-started-with-adyen/adyen-glossary#psp-reference) of the associated payment. | **CWBC43ZX2VTFWR82** | | [modificationPspReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-modificationPspReference) | The PSP reference of the payment modification, in this case the capture. | **PPKFQ89R6QRXGN82** | ** ### 1. Outgoing transfer received Once the transaction fees are calculated, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `direction` **outgoing** to announce that funds will be deducted from your user's second balance account. **Received transfer request for transaction fees** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 344 }, "balanceAccount": { "description": "Your description for the second balance account", "id": "BA00000000000000000000002", "reference": "Your reference for the second balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": -344 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the payment fee", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" } ], "id": "4GD3R84BMWTKIWBL", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 1, "status": "received", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Outgoing transfer authorized When the transfer request for the transaction fees is authorized, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **authorised**. **Authorised transfer request** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 344 }, "balanceAccount": { "description": "Your description for the second balance account", "id": "BA00000000000000000000002", "reference": "Your reference for the second balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": 0, "reserved": -344 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the payment fee", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 344, "reserved": -344 } ], "status": "authorised", "type": "accounting" } ], "id": "4GD3R84BMWTKIWBL", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 2, "status": "authorised", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Outgoing transfer captured When the funds are deducted from your user's balance account, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **captured** and the `transactionId`. **Captured transfer request** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 344 }, "balanceAccount": { "description": "Your description for the second balance account", "id": "BA00000000000000000000002", "reference": "Your reference for the second balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "balance": -344, "currency": "USD", "received": 0, "reserved": 0 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the payment fee", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 344, "reserved": -344 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "RFDN00000000000000000000000003", "mutations": [ { "balance": -344, "currency": "USD", "received": 0, "reserved": 344 } ], "status": "captured", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "2023-02-14T00:00:00+01:00" } ], "id": "4GD3R84BMWTKIWBL", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 3, "status": "captured", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 4. Transaction booked When the funds are deducted, Adyen also sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook, which includes information about the related transaction. **Transaction created** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": -344, "currency": "USD" }, "status": "booked", "transfer": { "id": "4GD3R84BMWTKIWBL", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "reference": "Your reference for the payment fee" }, "valueDate": "2023-02-14T00:00:00+01:00", "bookingDate": "2025-10-20T13:30:18+02:00", "creationDate": "2025-10-20T13:30:05+02:00", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description for the account holder", "reference": "Your reference for the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description for the balance account", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" }, "type": "balancePlatform.transaction.created", "environment": "test" } ``` ### Tab: Commission You can identify payment-related transfer webhooks for your commission by the following values: | Parameter | Description | Value | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | | [category](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-category) | Specifies the category of the transfer. | **platformPayment** | | [direction](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-direction) | The direction of the transfer based on the balance account. | **incoming** | | [type](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-type) | Specifies the type of the transfer. | **capture** | | [platformPaymentType](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-platformPaymentType) | Specifies the nature of each transfer on the balance platform. This parameter helps categorize transfers so you can reconcile transactions at a later time using the [Balance Platform Accounting Report](/platforms/reports-and-fees/balance-platform-accounting-report/). | **Commission** | | [pspPaymentReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-pspPaymentReference) | The [PSP reference](/get-started-with-adyen/adyen-glossary#psp-reference) of the associated payment. | **CWBC43ZX2VTFWR82** | | [modificationPspReference](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-categoryData-PlatformPayment-modificationPspReference) | The PSP reference of the payment modification, in this case the capture. | **PPKFQ89R6QRXGN82** | ** ### 1. Incoming transfer received When a transfer request is received to credit your liable account with the commission fee for a payment, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **incoming**. The webhook provides information about the transfer, such as the payment and split references.When a transfer request is received to credit your liable account with the commission fee for a payment, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **incoming**. The webhook provides information about the transfer, such as the payment and split references. **Received commission** ```json { "data": { "accountHolder": { "description": "Your description your liable account holder", "id": "AH00000000000000000000002", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 400 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000000003", "reference": "Your reference for your liable balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": 400 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "ZVTF00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 400 } ], "originalAmount": { "currency": "USD", "value": 400 }, "status": "received", "type": "accounting" } ], "id": "6HBKR52BUWKKDWAM", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 1, "status": "received", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Incoming transfer authorized When the transfer is authorised, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **authorised**. **Authorised commission** ```json { "data": { "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000000001", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 400 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000000003", "reference": "Your reference for your liable balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "currency": "USD", "received": 0, "reserved": 400 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "ZVTF00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 400 } ], "originalAmount": { "currency": "USD", "value": 400 }, "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "ZVTF00000000000000000000000002", "mutations": [ { "currency": "USD", "received": -400, "reserved": 400 } ], "status": "authorised", "type": "accounting" } ], "id": "6HBKR52BUWKKDWAM", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 2, "status": "authorised", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Incoming transfer captured When the funds are credited to your liable account, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **captured** and the `transactionId`. **Captured commission** ```json { "data": { "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 400 }, "balanceAccount": { "description": "Your description for your liable account", "id": "BA00000000000000000000002", "reference": "Your reference for the your liable account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "balance": 400, "currency": "USD", "received": 0, "reserved": 0 } ], "category": "platformPayment", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "incoming", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "ZVTF00000000000000000000000001", "mutations": [ { "currency": "USD", "received": 400 } ], "originalAmount": { "currency": "USD", "value": 400 }, "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "ZVTF00000000000000000000000002", "mutations": [ { "currency": "USD", "received": -400, "reserved": 400 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:20+02:00", "id": "ZVTF00000000000000000000000003", "mutations": [ { "balance": 400, "currency": "USD", "received": 0, "reserved": -400 } ], "originalAmount": { "currency": "USD", "value": 400 }, "status": "captured", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "T00:00:00+02:00" } ], "id": "6HBKR52BUWKKDWAM", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 3, "status": "captured", "type": "capture" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 4. Transaction booked When the funds are credited, Adyen also sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook, which includes information about the related transaction. **Transaction created** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": -400, "currency": "USD" }, "status": "booked", "transfer": { "id": "6HBKR52BUWKKDWAM", "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "reference": "Your reference for your commission" }, "valueDate": "2023-02-14T00:00:00+01:00", "bookingDate": "2025-10-20T13:30:20+02:00", "creationDate": "2025-10-20T13:30:05+02:00", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description for the account holder", "reference": "Your reference for the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description for the balance account", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" }, "type": "balancePlatform.transaction.created", "environment": "test" } ``` ## Additional split instructions In addition to the [standard use cases](#splits), you can also book the following split types to your user's balance account: * [Transaction fees](#different-types-of-transaction-fees) * [Leftover amount after currency conversion (remainder)](#remainder-after-currency-conversion) * [Chargebacks](#potential-chargebacks-and-costs) * [Top-ups](#top-ups) ### Different types of transaction fees The split `type` **PaymentFee** books the total amount of all your transaction fees to the specified balance account. However, you can also choose to split the total transaction fee amount, and book different kinds of fees to different balance accounts. For more information about the transaction fee types, and how to book them to different balance accounts, see [Transaction fees](/platforms/online-payments/transaction-fees). ### Remainder after currency conversion When you process payments on behalf of your users, you can convert the currency of those payments. Due to the constantly fluctuating exchange rates, you may have a leftover amount after currency conversion, called a **Remainder**. You can book this remainder to the balance account of your choice. For more information about currency conversion and booking the remainder, see [Currency conversion](/platforms/online-payments/currency-conversion). ### Potential chargebacks and costs When payments of your users are charged back, you can choose how to book the disputed amount to the balance accounts in your platform. For more information, see [Chargebacks and disputes](/platforms/online-payments/split-transactions/split-chargebacks/). ### Top-ups A payment made by your user to increase the balance in their balance account is called a top-up. You can book this top-up to your user's balance account. For more information about booking the top-up, see [Top-ups](/platforms/top-up-balance-account/on-demand-top-ups). ## Best practices We strongly recommend sending a `reference` for all sets of split instructions in your [/payments](https://docs.adyen.com/api-explorer/Checkout/latest/post/payments#request-splits) or [/sessions](https://docs.adyen.com/api-explorer/Checkout/latest/post/sessions#request-splits) request. You can use the reference to reconcile the split amounts in the transaction overview and in the reports. Without a reference, the split amounts are aggregated in a single entry and you will be unable to reconcile the transactions. If you do not know the split amounts at the time of payment, you can [provide split instructions at capture](/platforms/online-payments/split-transactions/split-payments-at-capture) instead. Split instructions provided at capture override any split instructions provided with the initial payment request. However, we recommend that you provide the split instructions at the time of payment, rather than at capture. Because some payment methods do not support delayed captures, the funds may not be booked correctly unless the split instructions are provided in the payment request. Only send split instructions in the capture request if you want to update the amount, for example, for partial captures or overcaptures. ## See also * [Handle transaction fees](/platforms/online-payments/transaction-fees) * [Convert the currency of a transaction](/platforms/online-payments/currency-conversion) * [Split payments automatically](/platforms/automatic-split-configuration)