--- title: "Top up multi pay-in account" description: "Top up the balance of your multi pay-in account with funds from your liable balance account." url: "https://docs.adyen.com/platforms/multi-pay-in/top-up-multi-pay-in" source_url: "https://docs.adyen.com/platforms/multi-pay-in/top-up-multi-pay-in.md" canonical: "https://docs.adyen.com/platforms/multi-pay-in/top-up-multi-pay-in" last_modified: "2026-05-11T16:04:22+02:00" language: "en" --- # Top up multi pay-in account Top up the balance of your multi pay-in account with funds from your liable balance account. For each payment your users receive, your pay-in partner can withhold funds: either directly or to offset the bank costs of the payout. As a result, there can be a discrepancy between the amount settled in your multi pay-in account and the total amount that you want to allocate to your users. In this case, you can top up the balance of your multi pay-in account from your liable balance account by making an internal transfer. ## Requirements Take into account the following requirements for this operation. | Requirement | Description | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **[API credentials](/development-resources/api-credentials/)** | You must have credentials for the [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview). | | **[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) | ## Top up your balance To top up the balance of your multi pay-in account, make a POST [/transfers](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers) request. In the body of the request, specify the following parameters: | Parameter | Required | Description | | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | | [amount](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-amount) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | An object containing the currency and value of the top up. | | [balanceAccountId](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-balanceAccountId) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The unique identifier of your liable balance account. | | [counterparty.balanceAccountId](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-counterparty-balanceAccountId) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The unique identifier of your multi pay-in account. | | [category](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-category) | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | Specifies the category of the transfer. Set to **internal**. | | [description](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-description) | | Your description of the transfer. You can use this to identify the transfer in webhooks and reports. | | [reference](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-reference) | | Your unique reference for the transfer. You can use this to identify the transfer in webhooks and reports. | The following example shows how to top up your multi pay-in account with USDĀ 2.40. The funds are transferred from your liable balance account. **Top up multi pay-in account** #### curl ```bash curl https://balanceplatform-api-test.adyen.com/btl/v4/transfers \ -H 'x-api-key: YOUR_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "amount": { "currency": "USD", "value": 240 }, "balanceAccountId": "BA00000000000000000LIABLE", "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "category" : "internal", "description": "Your description for the transfer", "reference": "Your unique reference for the transfer" }' ``` #### Java ```java // Adyen Java API Library v33.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.transfers.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.model.RequestOptions; import com.adyen.service.transfers.*; Client client = new Client("YOUR_BALANCE_PLATFORM_API_KEY", Environment.TEST); // Create the request object(s) Amount amount = new Amount() .currency("USD") .value(240L); CounterpartyInfoV3 counterpartyInfoV3 = new CounterpartyInfoV3() .balanceAccountId("BA00000000000000000000005"); TransferInfo transferInfo = new TransferInfo() .balanceAccountId("BA00000000000000000LIABLE") .reference("Your unique reference for the transfer") .amount(amount) .counterparty(counterpartyInfoV3) .description("Your description for the transfer") .category(TransferInfo.CategoryEnum.INTERNAL); // Send the request TransfersApi service = new TransfersApi(client); Transfer response = service.transferFunds(transferInfo, new RequestOptions().idempotencyKey("UUID")); ``` #### PHP ```php setXApiKey("YOUR_BALANCE_PLATFORM_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $amount = new Amount(); $amount ->setCurrency("USD") ->setValue(240); $counterpartyInfoV3 = new CounterpartyInfoV3(); $counterpartyInfoV3 ->setBalanceAccountId("BA00000000000000000000005"); $transferInfo = new TransferInfo(); $transferInfo ->setBalanceAccountId("BA00000000000000000LIABLE") ->setReference("Your unique reference for the transfer") ->setAmount($amount) ->setCounterparty($counterpartyInfoV3) ->setDescription("Your description for the transfer") ->setCategory("internal"); $requestOptions['idempotencyKey'] = 'UUID'; // Send the request $service = new TransfersApi($client); $response = $service->transferFunds($transferInfo, $requestOptions); ``` #### C\# ```cs // Adyen .net API Library v27.0.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Transfers; using Adyen.Service.Transfers; var config = new Config() { XApiKey = "YOUR_BALANCE_PLATFORM_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) Amount amount = new Amount { Currency = "USD", Value = 240 }; CounterpartyInfoV3 counterpartyInfoV3 = new CounterpartyInfoV3 { BalanceAccountId = "BA00000000000000000000005" }; TransferInfo transferInfo = new TransferInfo { BalanceAccountId = "BA00000000000000000LIABLE", Reference = "Your unique reference for the transfer", Amount = amount, Counterparty = counterpartyInfoV3, Description = "Your description for the transfer", Category = TransferInfo.CategoryEnum.Internal }; // Send the request var service = new TransfersService(client); var response = service.TransferFunds(transferInfo, requestOptions: new RequestOptions { IdempotencyKey = "UUID"}); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v23.3.0 const { Client, TransfersAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "YOUR_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const transferInfo = { amount: { currency: "USD", value: 240 }, balanceAccountId: "BA00000000000000000LIABLE", counterparty: { balanceAccountId: "BA00000000000000000000005" }, category: "internal", description: "Your description for the transfer", reference: "Your unique reference for the transfer" } // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransfersApi.transferFunds(transferInfo, { idempotencyKey: "UUID" }); ``` #### Go ```go // Adyen Go API Library v16.3.0 import ( "context" "github.com/adyen/adyen-go-api-library/v16/src/common" "github.com/adyen/adyen-go-api-library/v16/src/adyen" "github.com/adyen/adyen-go-api-library/v16/src/transfers" ) client := adyen.NewClient(&common.Config{ ApiKey: "YOUR_BALANCE_PLATFORM_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) amount := transfers.Amount{ Currency: "USD", Value: 240, } counterpartyInfoV3 := transfers.CounterpartyInfoV3{ BalanceAccountId: common.PtrString("BA00000000000000000000005"), } transferInfo := transfers.TransferInfo{ BalanceAccountId: common.PtrString("BA00000000000000000LIABLE"), Reference: common.PtrString("Your unique reference for the transfer"), Amount: amount, Counterparty: counterpartyInfoV3, Description: common.PtrString("Your description for the transfer"), Category: "internal", } // Send the request service := client.Transfers() req := service.TransfersApi.TransferFundsInput().IdempotencyKey("UUID").TransferInfo(transferInfo) res, httpRes, err := service.TransfersApi.TransferFunds(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.3.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "YOUR_BALANCE_PLATFORM_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "amount": { "currency": "USD", "value": 240 }, "balanceAccountId": "BA00000000000000000LIABLE", "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "category": "internal", "description": "Your description for the transfer", "reference": "Your unique reference for the transfer" } # Send the request result = adyen.transfers.transfers_api.transfer_funds(request=json_request, idempotency_key="UUID") ``` #### Ruby ```rb # Adyen Ruby API Library v10.1.1 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'YOUR_BALANCE_PLATFORM_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :amount => { :currency => 'USD', :value => 240 }, :balanceAccountId => 'BA00000000000000000LIABLE', :counterparty => { :balanceAccountId => 'BA00000000000000000000005' }, :category => 'internal', :description => 'Your description for the transfer', :reference => 'Your unique reference for the transfer' } # Send the request result = adyen.transfers.transfers_api.transfer_funds(request_body, headers: { 'Idempotency-Key' => 'UUID' }) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v23.3.0 import { Client, TransfersAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "YOUR_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Create the request object(s) const amount: Types.transfers.Amount = { currency: "USD", value: 240 }; const counterpartyInfoV3: Types.transfers.CounterpartyInfoV3 = { balanceAccountId: "BA00000000000000000000005" }; const transferInfo: Types.transfers.TransferInfo = { balanceAccountId: "BA00000000000000000LIABLE", reference: "Your unique reference for the transfer", amount: amount, counterparty: counterpartyInfoV3, description: "Your description for the transfer", category: Types.transfers.TransferInfo.CategoryEnum.Internal }; // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransfersApi.transferFunds(transferInfo, { idempotencyKey: "UUID" }); ``` In the response, the [status](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#responses-202-status) field shows the whether the top-up was successful (**authorised**). **Top-up authorized** ```json { "creationDate": "2024-09-15T13:52:08+02:00", "id": "48NJIB9TWQJ6L7U7", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 10000 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000LIABLE", "reference": "Your reference for your liable balance account" }, "category" : "internal", "categoryData": { "type": "internal" }, "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "description": "Your description for the transfer", "direction": "outgoing", "reason": "approved", "reference": "Your unique reference for the transfer", "status": "authorised", "type": "internalTransfer" } ``` If the `status` is not **authorised**, check the [type](https://docs.adyen.com/api-explorer/transfers/latest/post/transfers#request-type) field to learn why the request failed. For example, the `reason` for a **refused** `status` can be **notEnoughBalance**. We also send webhooks to notify you of the status of the top-up request. ## Get notified about balance changes After you send a request to transfer funds from your liable balance account to your multi pay-in account, we send the following webhooks to notify you of the status of the transfer or transaction: | Webhook | Description | | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | | [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) | Notifies you of the incoming and outgoing fund transfer. | | [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) | Notifies you of the changes in the status of the transfer. | | [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) | Notifies you when the funds debited from your liable balance account and are credited to your multi pay-in account. | Subscribe to the webhooks you want to receive in your [Customer Area](https://ca-test.adyen.com/). ### Webhooks for an internal transfer You can identify transfer webhooks triggered by a request to top up your multi pay-in account 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. | **internal** | | [direction](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-direction) | Specifies the direction of the transfer. | **outgoing** for your liable balance account **incoming** for your multi pay-in account | | [type](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-type) | Specifies the type of the transfer. | **internalTransfer** | The following examples show the webhooks you receive when you top up your multi pay-in account with USD 2.40 from your liable balance account. ### Tab: Liable balance account When you transfer the funds from your liable balance account to you multi pay-in account, you receive webhooks to notify you of the status of the transfer and balance changes in your liable balance account. These webhooks have the following common parameters and values: | Parameter | Description | Example value | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | `balanceAccount.id` | The unique identifier of the source balance account that sends the funds. This is your liable balance account. | **BA00000000000000000LIABLE** | | `counterpaty.balanceAccountId` | The unique identifier of the target balance account that receives the funds. This is your multi pay-in account. | **BA00000000000000000000005** | | `direction` | The direction of the transfer request. Because the liable balance account sends the funds, it is set to **outgoing**. | **outgoing** | | `type` | The type of the transfer request. | **internalTransfer** | ** ### 1. Transfer received When your liable balance account receives the request to transfer funds to your multi pay-in account, we send you a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `direction` **outgoing** and `status` **received**. **Top-up transfer received** ```json { "data": { "id": "2WT1N05XXY7P9XH9", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000LIABLE" }, "balances": [ { "currency": "USD", "received": -240 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": { "type": "internal" }, "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "outgoing", "description": "Your description for the transfer", "events": [ { "id": "JDRF00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "received", "sequenceNumber": 1 }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Transfer authorized When the top-up request is authorized, we send a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook to inform you that the transfer amount is reserved on your liable balance account. **Top-up transfer authorized** ```json { "data": { "id": "2WT1N05XXY7P9XH9", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000LIABLE" }, "balances": [ { "currency": "USD", "received": 0, "reserved": -240 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": { "type": "internal" }, "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "outgoing", "description": "Your description for the transfer", "events": [ { "id": "JDRF00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "JDRF00000000000000000000000002", "type": "accounting", "status": "authorised", "mutations": [ { "currency": "USD", "received": 240, "reserved": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "authorised", "sequenceNumber": 2 }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 3. Transfer booked When the funds are deducted from your liable balance account, we send you a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **booked** and the `transactionId`. **Top-up transfer booked** ```json { "data": { "id": "2WT1N05XXY7P9XH9", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000LIABLE" }, "balances": [ { "currency": "USD", "received": 0, "reserved": -240 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": { "type": "internal" }, "counterparty": { "balanceAccountId": "BA00000000000000000000005" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "outgoing", "description": "Your description of the transfer", "events": [ { "id": "JDRF00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "JDRF00000000000000000000000002", "type": "accounting", "status": "authorised", "mutations": [ { "currency": "USD", "received": 240, "reserved": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "JDRF00000000000000000000000003", "type": "accounting", "status": "booked", "mutations": [ { "balance": -240, "currency": "USD", "received": 0, "reserved": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "booked", "sequenceNumber": 3, "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 4. Transaction booked When the transfer amount is deducted from your liable balance account, we send you a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with `status` **booked**. **Transaction booked** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": 240, "currency": "USD" }, "status": "booked", "transfer": { "id": "2WT1N05XXY7P9XH9", "reference": "Your reference for the transfer" }, "valueDate": "2024-09-15T13:30:23+02:00", "bookingDate": "2024-09-15T13:30:21+02:00", "creationDate": "2024-09-15T13:30:18+02:00", "accountHolder": { "id": "AH00000000000000000LIABLE", "description": "Your description for your liable account holder", "reference": "Your reference for your liable account holder" }, "balanceAccount": { "id": "BA00000000000000000LIABLE", "description": "Your description for your liable balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" }, "type": "balancePlatform.transaction.created", "environment": "test" } ``` ### Tab: Multi pay-in account When you top up your multi pay-in account form your liable balance account, you receive webhooks to notify you of the status of the fund transfer and balance changes in your multi pay-in account. These webhooks have the following common parameters and values: | Parameter | Description | Value/example | | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | `balanceAccount.id` | The unique identifier of the target balance account that receives the funds. This is your multi pay-in account. | **BA00000000000000000000005** | | `counterpaty.balanceAccountId` | The unique identifier of the source balance account that sends the funds. This is your liable balance account. | **BA00000000000000000LIABLE** | | `direction` | The direction of the transfer request. Because the multi pay-in account receives the funds, it is set to **incoming**. | **incoming** | | `type` | The type of the transfer request. | **internalTransfer** | ** ### 1. Transfer received After you send a transfer request to top up your multi pay-in account, we send you a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `direction` **incoming** and `status` **received**. **Top-up request received** ```json { "data": { "id": "3K6U5F62NIZJSIVI", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your multi pay-in account", "id": "BA00000000000000000000005" }, "balances": [ { "currency": "USD", "received": 240 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": "internal", "counterparty": { "balanceAccountId": "BA00000000000000000LIABLE" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "incoming", "description": "Your description for the transfer", "events": [ { "id": "KESG00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "received", "sequenceNumber": 1 }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Transfer authorized When the top-up request is authorized, we send a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook to inform you that the transfer amount is reserved on your multi pay-in account. **Top-up request authorized** ```json { "data": { "id": "3K6U5F62NIZJSIVI", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your multi pay-in account", "id": "BA00000000000000000000005" }, "balances": [ { "currency": "USD", "received": 0, "reserved": 240 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": "internal", "counterparty": { "balanceAccountId": "BA00000000000000000LIABLE" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "incoming", "description": "Your description of the transfer", "events": [ { "id": "KESG00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "KESG00000000000000000000000002", "type": "accounting", "status": "authorised", "mutations": [ { "currency": "USD", "received": -240, "reserved": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "authorised", "sequenceNumber": 2 }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 3. Transfer booked When the funds are booked to your multi pay-in account, we send you a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **booked** and the `transactionId`. **Top-up transfer booked** ```json { "data": { "id": "3K6U5F62NIZJSIVI", "type": "internalTransfer", "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000LIABLE", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 240 }, "balanceAccount": { "description": "Your description for your multi pay-in account", "id": "BA00000000000000000000005" }, "balances": [ { "balance": 240, "currency": "USD", "received": 0, "reserved": 0 } ], "balancePlatform": "YOUR_BALANCE_PLATFORM", "category": "internal", "categoryData": "internal", "counterparty": { "balanceAccountId": "BA00000000000000000LIABLE" }, "creationDate": "2024-09-15T13:30:05+02:00", "direction": "incoming", "description": "Your description for the transfer", "events": [ { "id": "KESG00000000000000000000000001", "type": "accounting", "status": "received", "mutations": [ { "currency": "USD", "received": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "KESG00000000000000000000000002", "type": "accounting", "status": "authorised", "mutations": [ { "currency": "USD", "received": -240, "reserved": 240 } ], "creationDate": "2024-09-15T13:30:18+02:00" }, { "id": "KESG00000000000000000000000003", "type": "accounting", "status": "booked", "mutations": [ { "balance": 240, "currency": "USD", "received": 0, "reserved": -240 } ], "creationDate": "2024-09-15T13:30:18+02:00" } ], "reason": "approved", "reference": "Your reference for the transfer", "status": "booked", "sequenceNumber": 3, "transactionId": "EVJN42CL8224223D5KKJWCXFXQ3QGLUSD" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 4. Transaction booked When the funds are credited to your multi pay-in account, we send you a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with `status` **booked**. **Transaction booked** ```json { "data": { "id": "EVJN42CL8224223D5KKJWCXFXQ3QGLUSD", "amount": { "value": 240, "currency": "USD" }, "status": "booked", "transfer": { "id": "3K6U5F62NIZJSIVI", "reference": "Your reference for the transfer" }, "valueDate": "2024-09-15T13:30:25+01:00", "bookingDate": "2024-09-15T13:30:20+02:00", "creationDate": "2024-09-15T13:30:18+02:00", "accountHolder": { "id": "AH00000000000000000LIABLE", "description": "Your description for your liable account holder", "reference": "Your reference for your liable account holder" }, "balanceAccount": { "id": "BA00000000000000000000005", "description": "Your description for your multi pay-in account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" }, "type": "balancePlatform.transaction.created", "environment": "test" } ``` ## Next steps [required](/platforms/multi-pay-in/payments) [Allocate third-party payments](/platforms/multi-pay-in/payments) [Transfer and allocate funds using multi pay-in.](/platforms/multi-pay-in/payments) [required](/platforms/multi-pay-in/refunds) [Refund third-party payments](/platforms/multi-pay-in/refunds) [Refund payments processed through a pay-in partner.](/platforms/multi-pay-in/refunds)