--- title: "Refund with original split ratio" description: "Split a refund between the balance accounts in your platform, according to the original payment's split ratio." url: "https://docs.adyen.com/platforms/in-person-payments/split-transactions/split-refunds/refund-original-split" source_url: "https://docs.adyen.com/platforms/in-person-payments/split-transactions/split-refunds/refund-original-split.md" canonical: "https://docs.adyen.com/platforms/in-person-payments/split-transactions/split-refunds/refund-original-split" last_modified: "2024-01-24T11:14:00+01:00" language: "en" --- # Refund with original split ratio Split a refund between the balance accounts in your platform, according to the original payment's split ratio. [View source](/platforms/in-person-payments/split-transactions/split-refunds/refund-original-split.md) If you want to split the refund amount between the balance accounts in your platform the exact same way as you defined in the original payment request, you do not need to include the split instructions in your reversal request. ## Requirements In addition to the [general requirements](/platforms/in-person-payments#requirements) for in-person payments with an Adyen for Platforms integration, take into account the following information. | Requirement | Description | | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Integration type** | A [Terminal API](/point-of-sale/design-your-integration/terminal-api) integration with [payment terminals](/point-of-sale/what-we-support/select-your-terminals) or with a [Mobile solution](/point-of-sale/ipp-mobile). | | **[Webhooks](/development-resources/webhooks)** | Listen to the following webhook events:- [**CANCEL\_OR\_REFUND**](/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks#cancel-or-refund-webhook/) | ## Make a refund without split instructions 1. From the [POIData.POITransactionID](https://docs.adyen.com/api-explorer/terminal-api/latest/post/payment#responses-200-POIData-POITransactionID) object in the Terminal API payment response, get the `TransactionID` and `TimeStamp` of the original payment. You need to specify this information in your reversal request. 2. Make a [Terminal API](/point-of-sale/design-your-integration/terminal-api) reversal request specifying: * The standard [`SaleToPOIRequest.MessageHeader` ](/point-of-sale/design-your-integration/terminal-api#request-message-header)object, with `MessageClass` set to **Service** and `MessageCategory` set to **Reversal**. | Parameter | Required | Description | | ----------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ProtocolVersion` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **3.0** | | `MessageClass` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Service** | | `MessageCategory` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Reversal** | | `MessageType` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | **Request** | | `ServiceID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for this request, consisting of 1-10 alphanumeric characters. Must be unique within the last 48 hours for the terminal (`POIID`) being used. | | `SaleID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Your unique ID for the POS system component to send this request from. | | `POIID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | The unique ID of the terminal to send this request to. Format: *\[device model]-\[serial number]*. | * The [ReversalRequest](https://docs.adyen.com/api-explorer/terminal-api/latest/post/reversal) object with: | Parameter | Required | Description | | ----------------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `OriginalPOITransaction.POITransactionID` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | An object with:- `TransactionID`: The transaction identifier of the original payment in the format `tenderReference.pspReference`. For example, **BV0q001765198054002.CWBC43ZX2VTFWR82** - `TimeStamp`: The date and time of the original payment request in [UTC format](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_\(UTC\)). | | `ReversalReason` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Set to **MerchantCancel**. | The following Terminal API request example splits a full refund of a USD 188.00 payment according to the original payment split: **Split a refund using the original split instructions** ```json { "SaleToPOIRequest":{ "MessageHeader":{ "ProtocolVersion": "3.0", "MessageClass": "Service", "MessageCategory": "Reversal", "MessageType": "Request", "ServiceID": "0207111105", "SaleID": "POSSystemID12345", "POIID": "V400m-324688179" }, "ReversalRequest":{ "OriginalPOITransaction":{ "POITransactionID":{ "TransactionID":"BV0q001643892070000.VK9DRSLLRCQ2WN82", "TimeStamp":"2025-10-20T13:29:01.004Z" } }, "ReversalReason":"MerchantCancel" } } } ``` The payment terminal shows a waiting screen until you receive a response. 3. When you receive the [ReversalResponse](https://docs.adyen.com/api-explorer/terminal-api/latest/post/reversal/#responses-200), note the following: | Parameter | Description | | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Response.Result` | **Success** means we received your request. The refund itself will be processed asynchronously. | | `POIData.POITransactionID.TransactionID` | The PSP reference for this refund request. | | `PaymentReceipt` | The generated receipt data. This includes **REFUND REQUESTED**. | | `Response.AdditionalResponse` | This includes:- `posOriginalAmountValue`: The amount (in [minor units](/development-resources/currency-codes)) of the original payment. - `posAuthAmountValue`: The refund amount (in minor units) that we will try to get authorized. - `pspReference`: The PSP reference for this refund request. | **Response for the reversal request without split instructions** ```json { "SaleToPOIResponse": { "MessageHeader": { "MessageCategory": "Reversal", "MessageClass": "Service", "MessageType": "Response", "POIID": "V400m-324688179", "ProtocolVersion": "3.0", "SaleID": "POSSystemID12345", "ServiceID": "0207111105" }, "ReversalResponse": { "POIData": { "POITransactionID": { "TimeStamp": "2025-10-20T13:30:18.004Z", "TransactionID": "TSALWK3Z3FZTQ7RT5" } }, "PaymentReceipt": [...], "Response": { "AdditionalResponse": "...posAuthAmountCurrency=USD&posAuthAmountValue=18800&posOriginalAmountValue=18800&pspReference=TSAlWK3Z3FZTQ7RT5...", "Result": "Success" } } } } ``` If your request failed, the [ReversalResponse.Response](https://docs.adyen.com/api-explorer/terminal-api/latest/post/reversal/#responses-200-Response) contains: * `Result`: **Failure** * `AdditionalResponse`: This includes a `message` explaining why the request failed. For example: * *Original pspReference required for this operation*: Messages like this tell you how to fix the request so you can try again. * *Transaction is already voided*: This message tells you that we already received a full reversal request for the original transaction. 4. Wait for the [CANCEL\_OR\_REFUND](https://docs.adyen.com/api-explorer/Webhooks/latest/post/CANCEL_OR_REFUND) webhook event to learn the outcome of the refund request. Refunds are always processed asynchronously. ## Track fund movements To track the status of the fund transfers initiated by a refund, 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 deducted from 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 deducted from a balance account. ### Webhook examples In the example below, you can see the webhooks you receive when you send a refund request. We send webhooks for each balance account involved in the refund, and each split of the refunded amount. The following tabs show the webhooks you receive when: * The refund amount is deducted from your user's balance account. * The commission amount is deducted from your liable balance account. * The transaction fees are deducted from the specified balance account. ### Tab: Refund amount When we receive your request to deduct funds from your user's balance account, we send you three [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) and a [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) to notify you of the balance and transfer status changes. You can identify refund-related transfer webhooks for your user's balance 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. | **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. | **refund** | | [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. | **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. | **VK9DRSLLRCQ2WN82** | The following examples show the webhooks we send when we refund the amount settled in your user's balance account. ** ### 1. Transfer received When a refund request is received to deduct funds from your user's balance account, we send you a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **outgoing**. The webhook provides information about the transfer, such as the original payment and split references and which user and balance account is debited. **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": 7500 }, "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": -7500 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "EVJN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -7500 } ], "status": "received", "type": "accounting" } ], "id": "3JERI65VWKBRFIVB", "reason": "approved", "reference": "Split_item_1", "sequenceNumber": 1, "status": "received", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Transfer authorized When the transfer request is authorized, we send you 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": 7500 }, "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": -7500 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "EVJN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -7500 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "EVJN00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 7500, "reserved": -7500 } ], "status": "authorised", "type": "accounting" } ], "id": "3JERI65VWKBRFIVB", "reason": "approved", "reference": "Split_item_1", "sequenceNumber": 2, "status": "authorised", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Transfer refunded When the funds are deducted from your user's 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` **refunded** and the `transactionId`. **Transfer refunded** ```json { "data": { "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001", "reference": "Your reference for the account holder" }, "amount": { "currency": "USD", "value": 7500 }, "balanceAccount": { "description": "Your description for the balance account", "id": "BA00000000000000000000001", "reference": "Your reference for the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "balance": -7500, "currency": "USD", "received": 0, "reserved": 0 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for the sale amount", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "EVJN00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -7500 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "EVJN00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 7500, "reserved": -7500 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:20+02:00", "id": "EVJN00000000000000000000000003", "mutations": [ { "balance": -7500, "currency": "USD", "received": 0, "reserved": 7500 } ], "status": "refunded", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "2023-03-01T00:00:00+02:00" } ], "id": "3JERI65VWKBRFIVB", "reason": "approved", "reference": "Split_item_1", "sequenceNumber": 3, "status": "refunded", "type": "refund" }, "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 booked** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": -7500, "currency": "USD" }, "status": "booked", "transfer": { "id": "3JERI65VWKBRFIVB", "reference": "Split_item_1" }, "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: Commission When we receive your request to deduct the commission amount from your liable balance account, we send you three [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) and a [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) to notify you of the balance and transfer status changes. You can identify refund-related transfer webhooks for the refunded 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. | **outgoing** | | [type](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-type) | Specifies the type of the transfer. | **refund** | | [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. | **Commission** | The following examples show the webhooks we send when we refund the commission settled in your liable balance account. ** ### 1. Transfer received When a refund request is received to deduct funds from your liable balance account, we send you a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **outgoing**. The webhook provides information about the transfer, such as the original payment and split references. **Transfer received** ```json { "data": { "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000000002", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 1000 }, "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": -1000 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "HFJR00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -7500 } ], "status": "received", "type": "accounting" } ], "id": "7JHRI65VWKBRFPMG", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 1, "status": "received", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Transfer authorized When the transfer request is authorised, we send you 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 your liable account holder", "id": "AH00000000000000000000002", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 500 }, "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": -500 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "HFJR00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -500 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "HFJR00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 500, "reserved": -500 } ], "status": "authorised", "type": "accounting" } ], "id": "7JHRI65VWKBRFPMG", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 2, "status": "authorised", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Transfer refunded When the funds are deducted from your liable account, we send you a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with `status` **refunded** and the `transactionId`. **Transfer refunded** ```json { "data": { "accountHolder": { "description": "Your description for your liable account holder", "id": "AH00000000000000000000002", "reference": "Your reference for your liable account holder" }, "amount": { "currency": "USD", "value": 500 }, "balanceAccount": { "description": "Your description for your liable balance account", "id": "BA00000000000000000000003", "reference": "Your reference for your liable balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM", "balances": [ { "balance": -500, "currency": "USD", "received": 0, "reserved": 0 } ], "category": "platformPayment", "categoryData": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "Commission", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "type": "platformPayment" }, "creationDate": "2025-10-20T13:30:05+02:00", "description": "Your description for your commission", "direction": "outgoing", "events": [ { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "HFJR00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -500 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "HFJR00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 500, "reserved": -500 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:20+02:00", "id": "HFJR00000000000000000000000003", "mutations": [ { "balance": -500, "currency": "USD", "received": 0, "reserved": 500 } ], "status": "refunded", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "2023-03-01T00:00:00+02:00" } ], "id": "7JHRI65VWKBRFPMG", "reason": "approved", "reference": "Your reference for your commission", "sequenceNumber": 3, "status": "refunded", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 4. Transaction booked When the funds are deducted, we send you 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 booked** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": -500, "currency": "USD" }, "status": "booked", "transfer": { "id": "7JHRI65VWKBRFPMG", "reference": "Your reference for your commission" }, "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: Fees When the transaction fees are calculated for the refund, we deduct the funds from the balance account your specified in the request. We send you three [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) and a [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) to notify you of the balance and transfer status changes. You can identify refund-related transfer webhooks for the refunded 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. | **refund** | | [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** | The following examples show the webhooks we send when we deduct the transaction fees from your liable balance account. ** ### 1. Transfer received When the transaction fees are calculated for the refund, we send you a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with `status` **received** and `direction` **outgoing**. The webhook provides information about the transfer, such as the original payment and split references and which user and balance account is debited. **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": 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": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "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": "BHTP00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" } ], "id": "8KREG78BWDNEKXHW", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 1, "status": "received", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.created" } ``` ** ### 2. Transfer authorized When the transfer request is authorized, we send you 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": 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": { "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "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": "BHTP00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "BHTP00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 344, "reserved": -344 } ], "status": "authorised", "type": "accounting" } ], "id": "8KREG78BWDNEKXHW", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 2, "status": "authorised", "type": "refund" }, "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ** ### 3. Transfer refunded 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` **refunded** and the `transactionId`. **Transfer refunded** ```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": "TSALWK3Z3FZTQ7RT5", "paymentMerchantReference": "Payment reference", "platformPaymentType": "PaymentFee", "pspPaymentReference": "VK9DRSLLRCQ2WN82", "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": "BHTP00000000000000000000000001", "mutations": [ { "currency": "USD", "received": -344 } ], "status": "received", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:18+02:00", "id": "BHTP00000000000000000000000002", "mutations": [ { "currency": "USD", "received": 344, "reserved": -344 } ], "status": "authorised", "type": "accounting" }, { "bookingDate": "2025-10-20T13:30:20+02:00", "id": "BHTP00000000000000000000000003", "mutations": [ { "balance": -344, "currency": "USD", "received": 0, "reserved": 344 } ], "status": "refunded", "transactionId": "EVJN42272224222B5JB8BRC84N686ZUSD", "type": "accounting", "valueDate": "2023-03-01T00:00:00+02:00" } ], "id": "8KREG78BWDNEKXHW", "reason": "approved", "reference": "Your reference for the payment fee", "sequenceNumber": 3, "status": "refunded", "type": "refund" }, "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 booked** ```json { "data": { "id": "EVJN42272224222B5JB8BRC84N686ZUSD", "amount": { "value": -344, "currency": "USD" }, "status": "booked", "transfer": { "id": "3JERI65VWKBRFIVB", "reference": "Transaction_fees" }, "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" } ``` ## See also * [Referenced refund](/point-of-sale/basic-tapi-integration/refund-payment/referenced) * [CANCEL\_OR\_REFUND webhook](/point-of-sale/basic-tapi-integration/refund-payment/refund-webhooks#cancel-or-refund-webhook) * [Refund with split instructions](/platforms/in-person-payments/split-transactions/split-refunds/refund-split-instructions)