--- title: "Track transactions with API requests" description: "Use the Transfers API to query transactions in your marketplace." url: "https://docs.adyen.com/marketplaces/transfer-transactions/track-api" source_url: "https://docs.adyen.com/marketplaces/transfer-transactions/track-api.md" canonical: "https://docs.adyen.com/marketplaces/transfer-transactions/track-api" last_modified: "2026-05-19T18:02:48+02:00" language: "en" --- # Track transactions with API requests Use the Transfers API to query transactions in your marketplace. [View source](/marketplaces/transfer-transactions/track-api.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: * A [payment](/marketplaces/process-payments) from a purchase in your platform results in an incoming external transaction. * A [payout](/marketplaces/managed-payouts) to one of your users results in an outgoing external transaction. The following tabs show example responses that you would get when making a request to get incoming or outgoing external transactions. ### 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](/marketplaces/internal-fund-transfers) between balance accounts. The following tabs show example responses that you would get when making a request to get incoming or outgoing internal transactions. ### 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 pay out to a transfer instrument 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. ## See also * [Track transactions with webhooks](/marketplaces/transfer-transactions/track-webhooks) * [View transfer details](/marketplaces/view-transfers-details) * [Payout reconciliation](/marketplaces/payout-reconciliation)