--- title: "Track transactions related to third-party transfers" description: "Use our API to get updates about transactions with third-party bank accounts." url: "https://docs.adyen.com/business-accounts/transactions" source_url: "https://docs.adyen.com/business-accounts/transactions.md" canonical: "https://docs.adyen.com/business-accounts/transactions" last_modified: "2023-09-07T13:26:00+02:00" language: "en" --- # Track transactions related to third-party transfers Use our API to get updates about transactions with third-party bank accounts. [View source](/business-accounts/transactions.md) You can use the [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview) to query the [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) endpoint and get transaction details on demand. You can query transactions for your whole balance platform, a particular account holder, or 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. | | **API credentials** | You must have the credentials and the following roles for the [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview). Ensure that you have asked your Adyen contact to assign the following role to your API credential::- **TransferService Webservice Retrieve role** role - Transfers must also be enabled for the source balance account. | ## Use cases By leveraging this API, you can monitor and manage both internal and external transfers efficiently, ensuring accurate record keeping. Examples of these types of transfers are: * A payment from a purchase in your balance platform. * A payout to one of your users. With the Transactions API, you can query the transactions for your whole balance platform, a particular account holder, or balance account. ## Get a list of transactions To get a list of transactions, related to a balance account, account holder, or balance platform: 1. Make a GET  [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) request with the following query parameters. | Parameter | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [balancePlatform](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-balancePlatform), [accountHolderId](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-accountHolderId), or [balanceAccountId](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-balanceAccountId) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | You must include at least one of the following in your request:- [balancePlatform](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-balancePlatform): The unique identifier of the balance platform. - [accountHolderId](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-accountHolderId): The unique identifier of the account holder. - [balanceAccountId](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-balanceAccountId): The unique identifier of the balance account. | | [createdSince](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-createdSince) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Transactions created after this date and time are included in the response. The value must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format. For example, **2021-05-30T15:07:40Z**. | | [createdUntil](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-createdUntil) | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | Transactions created before this date and time are included in the response. The value must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format. For example, **2021-05-30T15:07:40Z**. | | [limit](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-limit) | | The number of items returned per page. | | [sortOrder](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-sortOrder) | | The transactions sorting order. | | [cursor](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-cursor) | | The cursor returned in the `links` of the previous response. | | [paymentInstrumentId](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions#query-paymentInstrumentId) | | The unique identifier of the payment instrument. | **Example GET /transactions request** #### curl ```bash curl https://balanceplatform-api-test.adyen.com/btl/v4/transactions?accountHolderId=AH00000000000000000000001&createdUntil=2021-10-05&limit=4&accountHolder&createdSince=2015-10-01 \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X GET \ -d '' ``` #### 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.service.transfers.*; Client client = new Client("ADYEN_BALANCE_PLATFORM_API_KEY", Environment.TEST); // Send the request TransactionsApi service = new TransactionsApi(client); TransactionSearchResponse response = service.getAllTransactions("String", "String", "String", "String", "String", LocalDateTime.parse("2025-01-01T15:00:00");, LocalDateTime.parse("2025-01-01T15:00:00");, 1, null); ``` #### PHP ```php setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY"); $client->setEnvironment(Environment::TEST); $requestOptions['queryParams'] = array('balancePlatform' => 'string', 'paymentInstrumentId' => 'string', 'accountHolderId' => 'string', 'balanceAccountId' => 'string', 'cursor' => 'string', 'createdSince' => 'date-time', 'createdUntil' => 'date-time', 'limit' => 'integer'); // Send the request $service = new TransactionsApi($client); $response = $service->getAllTransactions($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 = "ADYEN_BALANCE_PLATFORM_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Send the request var service = new TransactionsService(client); var response = service.GetAllTransactions(balancePlatform: "string", paymentInstrumentId: "string", accountHolderId: "string", balanceAccountId: "string", cursor: "string", createdSince: DateTime.Parse("2025-01-01T15:00:00"), createdUntil: DateTime.Parse("2025-01-01T15:00:00"), limit: 1); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v23.3.0 const { Client, TransfersAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransactionsApi.getAllTransactions("string", "string", "string", "string", "string", Date.now(), Date.now(), 1); ``` #### 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: "ADYEN_BALANCE_PLATFORM_API_KEY", Environment: common.TestEnv, }) // Send the request service := client.Transfers() req := service.TransactionsApi.GetAllTransactionsInput() req = req.BalancePlatform("string").PaymentInstrumentId("string").AccountHolderId("string").BalanceAccountId("string").Cursor("string").CreatedSince(DateTime.Parse("2025-01-01T15:00:00")).CreatedUntil(DateTime.Parse("2025-01-01T15:00:00")).Limit(1) res, httpRes, err := service.TransactionsApi.GetAllTransactions(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.3.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_BALANCE_PLATFORM_API_KEY" adyen.client.platform = "test" # The environment to use library in. query_parameters = { "balancePlatform" : "string", "paymentInstrumentId" : "string", "accountHolderId" : "string", "balanceAccountId" : "string", "cursor" : "string", "createdSince" : "date-time", "createdUntil" : "date-time", "limit" : "integer" } # Send the request result = adyen.transfers.transactions_api.get_all_transactions(query_parameters=query_parameters) ``` #### Ruby ```rb # Adyen Ruby API Library v10.1.1 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) query_params = { :balancePlatform => 'string', :paymentInstrumentId => 'string', :accountHolderId => 'string', :balanceAccountId => 'string', :cursor => 'string', :createdSince => 'date-time', :createdUntil => 'date-time', :limit => 'integer' } # Send the request result = adyen.transfers.transactions_api.get_all_transactions(query_params: query_params) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v23.3.0 import { Client, TransfersAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransactionsApi.getAllTransactions("string", "string", "string", "string", "string", Date.now(), Date.now(), 1); ``` 2. The response includes: * `data`: an array containing all the transactions that match the query parameters. * `_links`: an object containing links to the next or previous page when applicable. To page through the results, add the `cursor` value as a query parameter in your next request. **Example GET /transactions response** ```json { "data": [ { "balancePlatform": "YOUR_BALANCE_PLATFORM", "creationDate": "2023-08-10T14:51:20+02:00", "description": "Your description for the payout", "id": "EVJN42272224222B5JB8BRC84N686ZEUR", "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001" }, "amount": { "currency": "USD", "value": -1000 }, "balanceAccount": { "description": "Your description for the account holder", "id": "BA00000000000000000000001" }, "bookingDate": "2023-08-10T14:51:33+02:00", "status": "booked", "transfer": { "categoryData": { "priority": "regular", "type": "bank" }, "id": "3JNC3O5ZVFLLGV4B", "reference": "Your internal reference for the transfer" }, "referenceForBeneficiary": "Your reference sent to the beneficiary", "valueDate": "2023-08-10T14:51:20+02:00" }, { "balancePlatform": "YOUR_BALANCE_PLATFORM", "creationDate": "2023-08-10T15:34:31+02:00", "description": "Your description for the transfer", "id": "EVJN4227C224222B5JB8G3Q89N2NB6EUR", "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001" }, "amount": { "currency": "USD", "value": 123 }, "balanceAccount": { "description": "Your description for the account holder", "id": "BA00000000000000000000001" }, "bookingDate": "2023-08-10T15:34:40+02:00", "status": "booked", "transfer": { "id": "48POO45ZVG11166J", "reference": "Your internal reference for the transfer" }, "valueDate": "2023-08-10T15:34:31+02:00" }, { "balancePlatform": "YOUR_BALANCE_PLATFORM", "creationDate": "2023-08-11T13:45:46+02:00", "description":"Your description for the transfer", "id": "EVJN4227C224222B5JBD3XHF8P3L8GUSD", "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001" }, "amount": { "currency": "USD", "value": -10000 }, "balanceAccount": { "description": "Your description for the account holder", "id": "BA00000000000000000000001" }, "bookingDate": "2023-08-11T13:45:57+02:00", "status": "booked", "transfer": { "categoryData": { "priority": "internal", "type": "internalTransfer" }, "id": "48RTTW5ZVT8KU9DV", "reference": "The sender's reference for the transfer" }, "valueDate": "2023-08-11T13:45:46+02:00" }, { "balancePlatform": "YOUR_BALANCE_PLATFORM", "creationDate": "2023-08-11T13:45:51+02:00", "description": "The sender's description for the transfer", "id": "EVJN42272224222B5JBD3XJGHF4J26USD", "accountHolder": { "description": "Your description for the account holder", "id": "AH00000000000000000000001" }, "amount": { "currency": "USD", "value": 1000 }, "balanceAccount": { "description": "Your description for the account holder", "id": "BA00000000000000000000001" }, "bookingDate": "2023-08-11T13:45:58+02:00", "status": "booked", "transfer": { "id": "48TYZO5ZVT8M1K47", "reference": "The sender's reference for the transfer" }, "valueDate": "2023-08-11T13:45:51+02:00" } ], "_links": { "next": { "href": "https://balanceplatform-api-test.adyen.com/btl/v4/transactions?balancePlatform=TestBalancePlatform&createdUntil=2023-08-20T13%3A07%3A40Z&createdSince=2023-08-10T10%3A50%3A40Z&cursor=S2B-c0p1N0tdN0l6RGhYK1YpM0lgOTUyMDlLXElyKE9LMCtyaFEuMj1NMHgidCsrJi1ZNnhqXCtqVi5JPGpRK1F2fCFqWzU33JTojSVNJc1J1VXhncS10QDd6JX9FQFl5Zn0uNyUvSXJNQTo" } } } ``` If you only want to get details of a specific transaction, include the `transactionId` in your GET  [/transactions/{id}](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/\(id\)) request. ## Identify incoming and outgoing funds Refer to the following fields and objects of the API response to find out if a transaction is outgoing or incoming. | Field | Incoming funds | Outgoing funds | | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [amount](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-amount) | Has a positive [value](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-amount-value), meaning funds are added to the balance account. | Has a negative [value](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-amount-value), meaning funds are deducted from the balance account. | | [/data.transfer.reference](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-transfer-reference) | The reference from the sender, if they sent any. | The reference that you sent in the `/transfers` request. | | [status](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-status) | The status of the transaction. It can be: - **pending**: The funds have not been added yet to the balance account. Check the [valueDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-valueDate) to know when the funds will be available. - **booked**: The funds have been added to the balance account. | The status of the transaction. It can be: - **pending**: The funds are reserved to be deducted from the balance account. Check the [valueDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-valueDate) to know when the funds will be deducted. - **booked**: The funds have been deducted from the balance account. | Both incoming and outgoing transactions can be a result of [external](#external-transactions) or [internal](#internal-transactions) transfers. The following subsections show example responses for external and internal transactions ### External transactions These transactions result from external transfers. For example: * An [outgoing transfer](/business-accounts/send-funds) that your user makes to pay their suppliers. * An [incoming transfer](/business-accounts/receive-funds) that your user receives from a business-related transaction. ### Tab: Example of an outgoing external transaction After making a successful GET  [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) or GET  [/transactions/{id}](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/\(id\)) request, you get the following information: **Outgoing external transaction** ```json { "id": "EVJN00000000000000000000000002EUR", "amount": { "value": -10000, "currency": "EUR" }, "status": "booked", "transfer": { "categoryData": { "priority": "regular", "type": "bank" }, "id": "48TYZO5ZVURJ2FCW", "reference": "Your internal reference for the transfer" }, "valueDate": "2023-08-11T16:19:35+02:00", "bookingDate": "2023-08-11T16:19:39+02:00", "creationDate": "2023-08-11T16:19:35+02:00", "description": "Your description of the transfer", "referenceForBeneficiary": "Your reference for the beneficiary of the transfer", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description of the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description of the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" } ``` ### Tab: Example of an incoming external transaction After making a successful GET  [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) or GET  [/transactions/{id}](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/\(id\)) request, you get the following information: **Incoming external transaction** ```json { "id": "EVJN00000000000000000000000001EUR", "amount": { "value": 10000, "currency": "EUR" }, "status": "booked", "transfer": { "categoryData": { "modificationMerchantReference": "MRef#000001", "modificationPspReference": "PPKFQ89R6QRXGN82", "paymentMerchantReference": "Payment reference", "platformPaymentType": "BalanceAccount", "pspPaymentReference": "CWBC43ZX2VTFWR82", "type": "platformPayment" }, "id": "3JW8PC5ZVV06067J", "reference": "automatically-generated-reference" }, "valueDate": "2023-08-11T16:19:35+02:00", "bookingDate": "2023-08-11T16:43:46+02:00", "creationDate": "2023-08-11T16:43:46+02:00", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description of the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description of the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" } ``` ### Internal transactions These transactions result from internal transfers. For example: * [Internal transfers](/platforms/internal-fund-transfers) between balance accounts. * [Internal direct debits](/business-accounts/transfer-funds-internally). ### Tab: Example of an outgoing internal transaction After making a successful GET  [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) or GET  [/transactions/{id}](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/\(id\)) request, you get the following information: **Outgoing internal transaction** ```json { "id": "EVJN00000000000000000000000002EUR", "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:39+02:00", "creationDate": "2023-08-11T16:19:35+02:00", "description": "Your description of the transfer", "referenceForBeneficiary": "Your reference for the beneficiary", "accountHolder": { "id": "AH00000000000000000000001", "description": "Your description of the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description of the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" } ``` ### Tab: Example of an incoming internal transaction After making a successful GET  [/transactions](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions) or GET  [/transactions/{id}](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/\(id\)) request, you get the following information: **Incoming internal transaction** ```json { "id": "EVJN00000000000000000000000001EUR", "amount": { "value": 10000, "currency": "EUR" }, "status": "booked", "transfer": { "categoryData": { "type": "internal" }, "id": "3JW8PC5ZVV06067J", "reference": "An internal reference for 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", "description": "Your description of the account holder" }, "balanceAccount": { "id": "BA00000000000000000000001", "description": "Your description of the balance account" }, "balancePlatform": "YOUR_BALANCE_PLATFORM" } ``` ## Booking and value dates For every transaction returned in the API response, you receive two date fields: the [bookingDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-bookingDate) and the [valueDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-valueDate). These fields indicate when the funds are recorded and when they are deducted from your balance account. For example, when you transfer funds from an Adyen business account after bank cutoff times, the funds are reserved but are not yet deducted. In this scenario, the dates will be: * [bookingDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-bookingDate): The date when the funds are recorded as reserved or pending in the balance account. * [valueDate](https://docs.adyen.com/api-explorer/transfers/latest/get/transactions/#responses-200-data-valueDate): The date when the funds are deducted from or made available in the balance account. Funds are always deducted at the booked stage for outgoing transfers.