---
title: "Track transactions with webhooks"
description: "Use transaction webhooks to get real-time updates about fund movements in your platform."
url: "https://docs.adyen.com/platforms/transfer-transactions/track-webhooks"
source_url: "https://docs.adyen.com/platforms/transfer-transactions/track-webhooks.md"
canonical: "https://docs.adyen.com/platforms/transfer-transactions/track-webhooks"
last_modified: "2026-06-01T15:33:15+02:00"
language: "en"
---

# Track transactions with webhooks

Use transaction webhooks to get real-time updates about fund movements in your platform.

[View source](/platforms/transfer-transactions/track-webhooks.md)

When a funds transfer takes place between one of your user's balance accounts and a counterparty bank account, balance account, or card, Adyen sends a transaction webhook to your server. This webhook informs your server that Adyen has deducted funds from or credited funds to your balance account.

[Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) can be used in combination with [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) to stay fully up to date about the status of your transfers. While a transfer webhook is sent for every status change, transaction webhooks are only sent when the funds from the transfer are credited or debited from the balance account.

## Requirements

| Requirement                                     | Description                                                                                                                                                                                                                                                                                                                             |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Integration type**                            | You must have an [Adyen for Platforms](/adyen-for-platforms-model/), [Issuing](/issuing/account-structure-resources/issuing-enterprise/), or [Payouts](/payouts/payout-service/) integration.                                                                                                                                           |
| **[Webhooks](/development-resources/webhooks)** | Subscribe to the following webhook(s):- [Standard webhooks](/development-resources/webhooks/webhook-types#webhook-structure)
- [Transfer webhooks](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/overview) (optional)
- [Transaction webhooks](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/overview) |
| **Setup steps**                                 | Before you begin:- Make sure that your server can [receive and accept webhooks](/development-resources/webhooks/configure-and-manage).                                                                                                                                                                                                  |

## Types of transaction webhooks

The values returned in the transaction webhook can vary depending on the following factors:

* Whether you are **sending funds from (outgoing)**, or **receiving funds to (incoming)**, the balance account.
* Whether the transfer is **internal** or **external**.

## Sending funds (outgoing)

Adyen sends webhooks for:

* [Outgoing external transactions](#outgoing-external-transactions): Transactions that result from [payouts to your users](/platforms/managed-payouts).
* [Outgoing internal transactions](#outgoing-internal-transactions): Transactions that result from [sending funds from a balance account to another](/platforms/internal-fund-transfers).

### Outgoing external transactions

1. You send a POST [/transfers](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers) requesting a EUR 100.00 transfer to a transfer instrument.

   **

   #### Outgoing external transfer request

   **Outgoing external transfer request**

   ```json
   {
       "amount": {
          "value": 10000,
          "currency": "EUR"
       },
       "balanceAccountId": "BA00000000000000000000001",
       "category": "bank",
       "counterparty": {
         "transferInstrumentId": "SE00000000000000000000001"
       },
       "description": "Your description for the transfer",
       "priority": "regular",
       "referenceForBeneficiary": "Your reference sent to the beneficiary of the transfer",
       "reference": "Your internal reference for the transfer"
   }
   ```

2. After the transfer is [**booked** ](/platforms/payout-webhooks/#payout-transfer-booked), Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with the following information:

   | Parameter                                                                                                                                              | Description                                                                                     |
   | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
   | [accountHolder](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-accountHolder)   | An object containing information about the account holder that owns the source balance account. |
   | [amount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-amount)                 | An object containing the value and currency of the transaction.                                 |
   | [balanceAccount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-balanceAccount) | The balance account that sends the funds.                                                       |
   | [id](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-id)                         | The unique identifier of the transaction event.                                                 |
   | [transfer](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-transfer)             | An object containing information about the related transfer.                                    |

   **

   #### Outgoing external transaction webhook

   **Outgoing external transaction created**

   ```json
   {
       "data": {
           "id": "EVJN00000000000000000000000001EUR",
           "amount": {
               "value": -10000,
               "currency": "EUR"
           },
           "status": "booked",
           "transfer": {
               "categoryData": {
                   "priority": "regular",
                   "type": "bank"
               },    
               "id": "3JNC3O5ZVFLLGV4B",
               "reference": "Your internal reference of the transfer"
           },
           "valueDate": "2023-08-11T16:19:35+02:00",
           "bookingDate": "2023-08-11T16:31:02+02:00",
           "creationDate": "2023-08-11T16:19:35+02:00",
           "description": "Your description of the transfer",
           "referenceForBeneficiary": "Your reference sent to the beneficiary of the transfer",
           "accountHolder": {
               "id": "AH00000000000000000000001",
               "reference": "Your reference for the account holder",
               "description": "Your description of the account holder"
           },
           "balanceAccount": {
               "id": "BA00000000000000000000001",
               "description": "Your description of the balance account"
           },
           "balancePlatform": "YOUR_BALANCE_PLATFORM"
       },
       "environment": "test",
       "type": "balancePlatform.transaction.created"
   }
   ```

### Outgoing internal transactions

1. You send a POST [/transfers](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers) requesting a EUR 100.00 transfer between two balance accounts in your platform.

   **

   #### Outgoing internal transfer request

   **Internal transfer request**

   ```json
   {
       "amount": {
           "currency": "EUR",
           "value": "10000"
       },
       "balanceAccountId": "BA00000000000000000000001",
       "category": "internal",
       "counterparty": {
           "balanceAccountId": "BA00000000000000000000002"
       },
       "description": "Your description for the transfer",
       "reference": "Your internal reference for the transfer",
       "referenceForBeneficiary": "Your reference for the beneficiary of the transfer"
   }
   ```

2. After the transfer is [**booked** ](/platforms/payout-webhooks/#payout-transfer-booked), Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with the following information:

   | Parameter                                                                                                                                              | Description                                                                                     |
   | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
   | [accountHolder](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-accountHolder)   | An object containing information about the account holder that owns the source balance account. |
   | [amount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-amount)                 | An object containing the value and currency of the transaction.                                 |
   | [balanceAccount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-balanceAccount) | The balance account that sends the funds.                                                       |
   | [id](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-id)                         | The unique identifier of the transaction event.                                                 |
   | [transfer](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-transfer)             | An object containing information about the related transfer.                                    |

   **

   #### Outgoing internal transaction webhook

   **Outgoing internal transaction created**

   ```json
   {
       "data": {
           "id": "EVJN00000000000000000000000001EUR",
           "amount": {
               "value": -10000,
               "currency": "EUR"
           },
           "status": "booked",
           "transfer": {
               "categoryData": {
                   "type": "internal"
               },
               "id": "48TYZO5ZVURJ2FCW",
               "reference": "Your internal reference for the transfer"
           },
           "valueDate": "2023-08-11T16:19:35+02:00",
           "bookingDate": "2023-08-11T16:19:38+02:00",
           "creationDate": "2023-08-11T16:19:35+02:00",
           "description": "Your description for the transfer",
           "referenceForBeneficiary": "Your reference for the beneficiary of the transfer",
           "accountHolder": {
               "id": "AH00000000000000000000001",
               "description": "Your description of the account holder",
               "reference": "Your reference of the account holder"
           },
           "balanceAccount": {
               "id": "BA00000000000000000000001",
               "description": "Your description of the balance account"
           },
           "balancePlatform": "YOUR_BALANCE_PLATFORM"
       },
       "type": "balancePlatform.transaction.created",
       "environment": "test"
   }
   ```

## Receiving funds (incoming)

Adyen sends webhooks for:

* [Incoming external transactions](#incoming-external-transactions): transactions that result from [topping up a balance account](/platforms/top-up-balance-account).
* [Incoming internal transactions](#incoming-internal-transactions): transactions that result from a balance account [receiving funds from another balance account](/platforms/internal-fund-transfers).

### Incoming external transactions

After an incoming third-party transfer is [**booked** ](/business-accounts/third-party-transfer-webhooks/#incoming-bank-transfer-booked)to your user's balance account, Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with the following information:

| Parameter                                                                                                                                              | Description                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------- |
| [accountHolder](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-accountHolder)   | An object containing information about the account holder that owns the target balance account |
| [amount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-amount)                 | An object containing the value and currency of the transaction.                                |
| [balanceAccount](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-balanceAccount) | The balance account that receives the funds.                                                   |
| [id](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-id)                         | The unique identifier of the transaction event.                                                |
| [transfer](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created#request-data-transfer)             | An object containing information about the related transfer.                                   |

**

#### Incoming external transaction webhook

**Incoming external transaction created**

```json
{
    "data": {
        "id": "EVJN00000000000000000000000002EUR",
        "amount": {
            "value": 10000,
            "currency": "EUR"
        },
        "status": "booked",
        "transfer": {
            "categoryData": {
                "modificationMerchantReference": "MRef#000001",
                "modificationPspReference": "PPKFQ89R6QRXGN82",
                "paymentMerchantReference": "Payment reference",
                "platformPaymentType": "BalanceAccount",
                "pspPaymentReference": "CWBC43ZX2VTFWR82",
                "type": "platformPayment"
            },
            "id": "3JNC3O5ZVFLLGV4B",
            "reference": "automatically-generated-reference"
        },
        "valueDate": "2023-08-11T16:19:35+02:00",
        "bookingDate": "2023-08-11T16:19:45+02:00",
        "creationDate": "2023-08-11T16:19:35+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"
        },
        "balancePlatform": "YOUR_BALANCE_PLATFORM"
    },
    "type": "balancePlatform.transaction.created",
    "environment": "test"
}
```

### Incoming internal transactions

After an incoming internal transfer is [**booked** ](/platforms/internal-fund-transfers/internal-transfer-webhooks/#internal-transfer-booked)to the balance account, Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook with the following information:

| Parameter        | Description                                                                                    |
| ---------------- | ---------------------------------------------------------------------------------------------- |
| `accountHolder`  | An object containing information about the account holder that owns the target balance account |
| `amount`         | An object containing the value and currency of the transaction.                                |
| `balanceAccount` | The balance account that receives the funds.                                                   |
| `id`             | The unique identifier of the transaction event.                                                |
| `transfer`       | An object containing information about the related transfer.                                   |

**

#### Incoming internal transaction webhook

**Incoming internal transaction created**

```json
{
    "data": {
        "id": "EVJN00000000000000000000000002EUR",
        "amount": {
            "value": 10000,
            "currency": "EUR"
        },
        "status": "booked",
        "transfer": {
            "categoryData": {
                "type": "internal"
            },
            "id": "3JW8PC5ZVV06067J",
            "reference": "The sender's reference of the transfer"
        },
        "valueDate": "2023-08-11T16:19:35+02:00",
        "bookingDate": "2023-08-11T16:43:46+02:00",
        "creationDate": "2023-08-11T16:43:46+02:00",
        "description": "The sender's description of the transfer",
        "referenceForBeneficiary": "The sender's reference for the beneficiary",
        "accountHolder": {
            "id": "AH00000000000000000000001",
            "reference": "Your reference of the account holder",
            "description": "Your description of the account holder"
        },
        "balanceAccount": {
            "id": "BA00000000000000000000002",
            "description": "Your description of the balance account"
        },
        "balancePlatform": "YOUR_BALANCE_PLATFORM"
    },
    "type": "balancePlatform.transaction.created",
    "environment": "test"
}
```

## See also

* [Third-party transfer webhooks](/business-accounts/third-party-transfer-webhooks)

## See also

* [Track transactions with API requests](/platforms/transfer-transactions/track-api)
* [View transfer details](/platforms/view-transfers-details)
* [Payout transfer webhooks](/platforms/payout-webhooks)
* [Payout reconciliation](/platforms/payout-reconciliation)
