canonical: https://jentic.com/apis/adyen.com/adyen-transfers-v4

# Adyen Transfers API

The Adyen Transfers API v4 is the current major version of the Balance Platform interface for moving money between balance accounts, third-party bank accounts, and capital grants. The 11 endpoints initiate transfers, list and look up transfers and transactions, approve or cancel pending transfers, return a settled transfer, and request or inspect Adyen Capital grants. v4 adds GET /transfers list and GET /transfers/{id} on top of v3, enabling self-service reconciliation without polling individual transactions.

## For AI agents

Initiate, list, look up, approve, cancel, and return transfers between balance accounts and third-party banks on Adyen's Balance Platform.

## Scope

Does not authorise card payments, manage balance account configuration, or onboard legal entities - use only for moving funds, listing transfers, approving them, and requesting capital grants on Adyen's Balance Platform.

## Capabilities

- Initiate a transfer from a balance account to a third party or another balance account via POST /transfers
- List transfers with filters via GET /transfers and look up a specific transfer via GET /transfers/{id}
- Approve queued dual-control transfers via POST /transfers/approve and cancel queued transfers via POST /transfers/cancel
- Return a settled transfer to its source via POST /transfers/{transferId}/returns
- List or look up transactions on the Balance Platform via GET /transactions and GET /transactions/{id}
- Request a capital grant payout via POST /grants and inspect grants via GET /grants and GET /grants/{id}
- Authenticate using API key (X-API-Key), basic auth, or a clientKey scheme as declared in the spec

## Use cases

### Marketplace Settlement with Self-Service Reconciliation

Marketplaces on Adyen's Balance Platform call POST /transfers to move daily proceeds from the platform's holding balance account to each seller's bank account. With v4, GET /transfers returns the list of transfers initiated for the platform, filtered by date or status, so reconciliation can be done without iterating transactions. GET /transfers/{id} returns the latest state of any transfer for incident response.

Example prompt: Call POST /transfers per seller with category=bank, amount, counterparty.bankAccount, and balanceAccountId, then GET /transfers with createdSince filter for end-of-day reconciliation

### Dual-Control Transfer Approval

Regulated payout flows enforce segregation of duties. POST /transfers initiated under a dual-control config returns a transferId in a pending state; a reviewer with the appropriate Balance Platform role calls POST /transfers/approve with that ID to release the transfer, or POST /transfers/cancel to reject it. Both endpoints accept a list of transferIds for batch operations, making it efficient to clear a batch of pending settlements after compliance review.

Example prompt: Call POST /transfers/approve with transferIds=[list of pending transfer IDs] to release queued transfers in a single batch

### Refunds and Returns of Settled Transfers

When a transfer settled to the wrong destination or needs to be reversed, POST /transfers/{transferId}/returns creates a return that moves the funds back to the source balance account. Adyen handles the rail-level mechanics; the integration only needs the original transferId and the amount to return. GET /transfers/{id} confirms the state of the original transfer before and after the return.

Example prompt: Call POST /transfers/{transferId}/returns with amount.value and amount.currency to return a previously settled transfer to its source

### AI Agent Settlement Operations via Jentic

An ops agent that processes a daily seller settlement run searches Jentic for 'send Adyen transfer to bank account', loads the schema for /transfers, and executes once per seller from the day's settlement file. After all transfers are queued, the agent calls GET /transfers with a date filter to confirm every transfer reached the executed state, and escalates any in failed or rejected states. Jentic injects X-API-Key from the encrypted vault.

Example prompt: Search Jentic for 'send an Adyen transfer to a bank account', load the transfers schema, then execute one call per seller in the daily settlement file and verify with GET /transfers

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /transfers | Initiate a transfer |
| GET | /transfers | List transfers with filters |
| GET | /transfers/{id} | Look up a transfer by ID |
| POST | /transfers/approve | Approve queued transfers |
| POST | /transfers/cancel | Cancel queued transfers |
| POST | /transfers/{transferId}/returns | Return a settled transfer |
| GET | /transactions | List transactions |
| POST | /grants | Request a capital grant payout |

## Key resources

- **Transfers** — Initiate, list, look up, approve, cancel, and return transfers between balance accounts and third-party banks
- **Transactions** — List and inspect transactions on the Balance Platform
- **Grants** — Request Adyen Capital grant payouts and inspect grant accounts

## Why Jentic

- **Setup:** Wiring the Adyen Transfers API by hand means handling its X-API-Key, basic, and clientKey auth, targeting the balance platform test host, and preserving any dual-control on money movement. Through Jentic you install once, import the Transfers API from the API Directory, store each credential once, and your agent calls it.
- **Permission scoping:** Transfers puts the transfer id in the URL path for reads and returns (/transfers/{id}, /transfers/{transferId}/returns), so a rule can pin your agent to one transfer: it can read that transfer and request its return and nothing else. You choose the operations it may call, so creating transfers, approving, or requesting grants stays out unless you add them.
- **Credential handling:** Your Adyen X-API-Key, basic auth, and clientKey credentials are stored once, encrypted, as separate entries by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'send a transfer to a bank account' or 'list adyen transfers', and Jentic returns the matching Transfers operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Adyen Transfers API v3** — Earlier major version of the Transfers API
- **Adyen Payout API (deprecated)** — Classic-platform payout surface superseded by Transfers API
- **Adyen Balance Platform Configuration API** — Configures balance accounts referenced by Transfers API
- **Adyen Legal Entity API** — Onboards the legal entities that own the balance accounts

## FAQ

### What authentication does the Adyen Transfers API v4 use?

The spec declares ApiKeyAuth (X-API-Key header), BasicAuth, and a clientKey scheme. The X-API-Key model is the standard server-side choice; the clientKey is used for client-side flows where applicable. Through Jentic, credentials are stored encrypted in the vault and only a scoped execution token is exposed to the agent at runtime.

### What does v4 add over v3?

v4 adds GET /transfers and GET /transfers/{id} alongside the existing POST /transfers and the approve, cancel, and returns endpoints. This means integrations can list and look up transfers directly without iterating through transactions, which simplifies reconciliation and incident response.

### Can I send a transfer to a third-party bank account?

Yes. POST /transfers accepts a counterparty.bankAccount object describing the destination IBAN or account number, plus amount, balanceAccountId, and category. Adyen routes the transfer over the appropriate rail - instant where supported, standard otherwise - and returns a transferId for tracking via GET /transfers/{id}.

### How do I send a transfer with the Adyen Transfers API v4 through Jentic?

Search Jentic for 'send an Adyen transfer to a bank account', load the transfers schema, then execute with category=bank, amount, counterparty.bankAccount, and balanceAccountId. Jentic injects X-API-Key from the encrypted vault. Get an account through Jentic One, the self-hosted execution layer.

### What are the rate limits for the Adyen Transfers API v4?

Adyen does not publish a fixed numeric rate limit in the spec; throughput is provisioned per balance platform and risk profile. If 429 responses appear, contact Adyen support to review the platform's transfer quota.

### How do I return a settled transfer?

POST /transfers/{transferId}/returns creates a return that moves the funds back to the source balance account. Pass the transferId in the path and amount.value with amount.currency in the body. Use GET /transfers/{id} before and after to confirm the original transfer's state has changed.

### Can I limit what my agent is allowed to do with the Adyen Transfers API?

Yes. Because you run Jentic One yourself, your own rules decide which of the eleven operations the agent may call, so you can allow it to look up transfers via GET /transfers/{id} while keeping POST /transfers, POST /transfers/approve, and POST /grants off limits unless you add them. Since the transfer id sits in the URL path for reads and returns (/transfers/{id} and /transfers/{transferId}/returns), a rule can pin the agent to a single transfer, letting it read that transfer and request its return and nothing else. The credentials the agent is permitted to use are equally under your control, so it can only act within the scope you set.
