Files
adyen-openapi/yaml/TransferService-v2.yaml
Adyen Automation fa60910663 spec release
2025-05-21 13:37:13 +02:00

1424 lines
52 KiB
YAML

openapi: 3.1.0
servers:
- url: https://balanceplatform-api-test.adyen.com/btl/v2
info:
version: '2'
x-publicVersion: true
title: Transfers API
description: ">Versions 1 and 2 of the Transfers API are deprecated. If you are\
\ just starting your implementation, use the latest version.\n\nThe Transfers\
\ API provides endpoints that you can use to transfer funds, whether when paying\
\ out to a transfer instrument for [marketplaces](https://docs.adyen.com/marketplaces/payout-to-users/on-demand-payouts)\
\ or [platforms](https://docs.adyen.com/platforms/payout-to-users/on-demand-payouts),\
\ [sending funds to third parties](https://docs.adyen.com/platforms/business-accounts/send-receive-funds)\
\ for users with business bank accounts, or to [request a payout for a grant offer](https://docs.adyen.com/platforms/capital).\
\ The API also supports use cases for [getting transactions for business bank\
\ accounts](https://docs.adyen.com/platforms/business-accounts/transactions-api)\
\ and getting [outstanding balances](https://docs.adyen.com/platforms/capital#get-balances)\
\ for one or more grants on your platform. \n\n## Authentication\nEach request\
\ to the Transfers API must be signed with an API key. Generate an API key in\
\ your Customer Area if you have a [platform setup](https://docs.adyen.com/platforms/manage-access/api-credentials-web-service/#generate-api-key)\
\ or [marketplace setup](https://docs.adyen.com/marketplaces/manage-access/api-credentials-web-service/#generate-api-key).\n\
\nIf you have an Adyen Issuing integration, [generate an API key](https://docs.adyen.com/issuing/manage-access/api-credentials-web-service/#generate-api-key)\
\ in your Balance Platform Customer Area.\n\nTo connect to the API, add an `X-API-Key`\
\ header with the API key as the value, for example:\n\n ```\ncurl\n-H \"Content-Type:\
\ application/json\" \\\n-H \"X-API-Key: YOUR_API_KEY\" \\\n...\n```\n\n## Roles\
\ and permissions\nTo use the Transfers API, you need an additional role for your\
\ API credential. Transfers must also be enabled for the source balance account.\
\ Your Adyen contact will set up the roles and permissions for you.\n## Versioning\n\
The Transfers API supports [versioning](https://docs.adyen.com/development-resources/versioning)\
\ using a version suffix in the endpoint URL. This suffix has the following format:\
\ \"vXX\", where XX is the version number.\n\nFor example:\n```\nhttps://balanceplatform-api-test.adyen.com/btl/v2/transfers\n\
```\n## Going live\nWhen going live, generate an API key in your [live Customer\
\ Area](https://ca-live.adyen.com/ca/) if you have an Adyen for Platforms integration\
\ or [live Balance Platform Customer Area](https://balanceplatform-live.adyen.com/balanceplatform/)\
\ if you have an Adyen Issuing integration. You can then use the API key to send\
\ requests to `https://balanceplatform-api-live.adyen.com/btl/v2`.\n\n"
termsOfService: https://www.adyen.com/legal/terms-and-conditions
contact:
name: Adyen Developer Experience team
url: https://github.com/Adyen/adyen-openapi
tags:
- name: Transfers
- name: Transactions
- name: Capital
paths:
/transactions:
get:
tags:
- Transactions
summary: Get all transactions
description: '>Versions 1 and 2 of the Transfers API are deprecated. If you
are just starting your implementation, use the latest version.
Returns all the transactions related to a balance account, account holder,
or balance platform.
When making this request, you must include at least one of the following:
- `balanceAccountId`
- `accountHolderId`
- `balancePlatform`.
This endpoint supports cursor-based pagination. The response returns the first
page of results, and returns links to the next and previous pages when applicable.
You can use the links to page through the results.
'
x-addedInVersion: '1'
operationId: get-transactions
x-sortIndex: 1
x-methodName: getAllTransactions
security:
- clientKey: []
- BasicAuth: []
- ApiKeyAuth: []
parameters:
- description: 'The unique identifier of the [balance platform](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/get/balancePlatforms/{id}__queryParam_id).
Required if you don''t provide a `balanceAccountId` or `accountHolderId`.'
name: balancePlatform
in: query
required: false
schema:
type: string
- description: 'The unique identifier of the [payment instrument](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/paymentInstruments/_id_).
To use this parameter, you must also provide a `balanceAccountId`, `accountHolderId`,
or `balancePlatform`.
The `paymentInstrumentId` must be related to the `balanceAccountId` or `accountHolderId`
that you provide.'
name: paymentInstrumentId
in: query
required: false
schema:
type: string
- description: 'The unique identifier of the [account holder](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/get/accountHolders/{id}__queryParam_id).
Required if you don''t provide a `balanceAccountId` or `balancePlatform`.
If you provide a `balanceAccountId`, the `accountHolderId` must be related
to the `balanceAccountId`.'
name: accountHolderId
in: query
required: false
schema:
type: string
- description: 'The unique identifier of the [balance account](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/get/balanceAccounts/{id}__queryParam_id).
Required if you don''t provide an `accountHolderId` or `balancePlatform`.
If you provide an `accountHolderId`, the `balanceAccountId` must be related
to the `accountHolderId`.'
name: balanceAccountId
in: query
required: false
schema:
type: string
- description: The `cursor` returned in the links of the previous response.
name: cursor
in: query
required: false
schema:
type: string
- description: Only include transactions that have been created on or after
this point in time. The value must be in ISO 8601 format. For example, **2021-05-30T15:07:40Z**.
name: createdSince
in: query
required: true
schema:
format: date-time
type: string
- description: Only include transactions that have been created on or before
this point in time. The value must be in ISO 8601 format. For example, **2021-05-30T15:07:40Z**.
name: createdUntil
in: query
required: true
schema:
format: date-time
type: string
- description: The number of items returned per page, maximum of 100 items.
By default, the response returns 10 items per page.
name: limit
in: query
required: false
schema:
format: int32
type: integer
responses:
'200':
content:
application/json:
examples:
success:
$ref: '#/components/examples/get-transactions-success-200'
schema:
$ref: '#/components/schemas/TransactionSearchResponse'
description: OK - the request has succeeded.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Unauthorized - authentication required.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Forbidden - insufficient permissions to process the request.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Unprocessable Entity - a request validation error.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Internal Server Error - the server could not process the request.
/transactions/{id}:
get:
tags:
- Transactions
summary: Get a transaction
description: '>Versions 1 and 2 of the Transfers API are deprecated. If you
are just starting your implementation, use the latest version.
Returns a transaction.'
x-addedInVersion: '1'
operationId: get-transactions-id
x-sortIndex: 2
x-methodName: getTransaction
security:
- clientKey: []
- BasicAuth: []
- ApiKeyAuth: []
parameters:
- description: The unique identifier of the transaction.
name: id
in: path
required: true
schema:
type: string
responses:
'200':
content:
application/json:
examples:
success:
$ref: '#/components/examples/get-transactions-id-success-200'
schema:
$ref: '#/components/schemas/Transaction'
description: OK - the request has succeeded.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Unauthorized - authentication required.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Forbidden - insufficient permissions to process the request.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Unprocessable Entity - a request validation error.
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/RestServiceError'
description: Internal Server Error - the server could not process the request.
/transfers:
post:
tags:
- Transfers
summary: Transfer funds
description: '>Versions 1 and 2 of the Transfers API are deprecated. If you
are just starting your implementation, use the latest version.
Starts a request to transfer funds to:
- [Balance accounts](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/balanceAccounts)
- [Transfer instruments](https://docs.adyen.com/api-explorer/#/legalentity/latest/post/transferInstruments)
- [Third-party bank accounts](https://docs.adyen.com/payouts/payout-service/pay-out-to-bank-accounts)
- [Third-party cards](https://docs.adyen.com/payouts/payout-service/pay-out-to-cards)
Adyen sends the outcome of the transfer request through webhooks.
To use this endpoint:
- Your API credential must have the **TransferService Webservice Initiate**
[role](https://docs.adyen.com/platforms/manage-access/webservice-roles/?tab=transfers_3).
- The account holder must have the required [capabilities](https://docs.adyen.com/platforms/verification-overview/capabilities).
Reach out to your Adyen contact to set up these permissions.'
x-addedInVersion: '2'
operationId: post-transfers
x-sortIndex: 1
x-methodName: transferFunds
security:
- clientKey: []
- BasicAuth: []
- ApiKeyAuth: []
requestBody:
content:
application/json:
examples:
payout-local-transfer-sepa:
$ref: '#/components/examples/post-transfers-payout-local-transfer-sepa'
payout-to-balance-account:
$ref: '#/components/examples/post-transfers-payout-to-balance-account'
payout-to-transfer-instrument:
$ref: '#/components/examples/post-transfers-payout-to-transfer-instrument'
schema:
$ref: '#/components/schemas/TransferInfo'
parameters:
- $ref: '#/components/parameters/Idempotency-Key'
- description: Header for authenticating through SCA
example: SCA realm="Transfer" auth-param1="eyJjaGFsbGVuZ2UiOiJiVlV6ZW5wek0waFNl..."
name: WWW-Authenticate
in: header
schema:
type: string
responses:
'202':
content:
application/json:
examples:
payout-local-transfer-sepa:
$ref: '#/components/examples/post-transfers-payout-local-transfer-sepa-202'
payout-to-balance-account:
$ref: '#/components/examples/post-transfers-payout-to-balance-account-202'
payout-to-transfer-instrument:
$ref: '#/components/examples/post-transfers-payout-to-transfer-instrument-202'
schema:
$ref: '#/components/schemas/Transfer'
description: Accepted - the request has been accepted for processing, but
the processing has not been completed.
headers:
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
description: Unauthorized - authentication required.
headers:
auth-param1:
$ref: '#/components/headers/auth-param1'
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/TransferServiceRestServiceError'
description: Forbidden - insufficient permissions to process the request.
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/TransferServiceRestServiceError'
description: Unprocessable Entity - a request validation error.
headers:
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/TransferServiceRestServiceError'
description: Internal Server Error - the server could not process the request.
components:
schemas:
Address:
additionalProperties: false
properties:
city:
description: 'The name of the city. Maximum length: 3000 characters.'
maxLength: 3000
type: string
country:
description: 'The two-character ISO-3166-1 alpha-2 country code. For example,
**US**.
> If you don''t know the country or are not collecting the country from
the shopper, provide `country` as `ZZ`.'
type: string
houseNumberOrName:
description: 'The number or name of the house. Maximum length: 3000 characters.'
maxLength: 3000
type: string
postalCode:
description: A maximum of five digits for an address in the US, or a maximum
of ten characters for an address in all other countries.
type: string
stateOrProvince:
description: 'The two-character ISO 3166-2 state or province code. For example,
**CA** in the US or **ON** in Canada.
> Required for the US and Canada.'
type: string
street:
description: 'The name of the street. Maximum length: 3000 characters.
> The house number should not be included in this field; it should be
separately provided via `houseNumberOrName`.'
maxLength: 3000
type: string
required:
- street
- houseNumberOrName
- city
- postalCode
- country
type: object
Amount:
additionalProperties: false
properties:
currency:
description: The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes#currency-codes).
maxLength: 3
minLength: 3
type: string
value:
description: The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes#minor-units).
format: int64
type: integer
required:
- value
- currency
type: object
Bank:
additionalProperties: false
properties:
priority:
x-addedInVersion: '1'
description: 'The priority for the bank transfer. This sets the speed at
which the transfer is sent and the fees that you have to pay. If you don''t
provide this in the request, Adyen sets the optimal priority.
Possible values:
* **regular**: for normal, low-value transactions.
* **fast**: a faster way to transfer funds, but the fees are higher. Recommended
for high-priority, low-value transactions.
* **wire**: the fastest way to transfer funds, but this has the highest
fees. Recommended for high-priority, high-value transactions.
* **instant**: for instant funds transfers in [SEPA countries](https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html).
* **crossBorder**: for high-value transfers to a recipient in a different
country.
* **internal**: for transfers to an Adyen-issued business bank account
(by bank account number/IBAN).'
enum:
- crossBorder
- fast
- instant
- internal
- regular
- wire
type: string
type: object
BankAccountInfo:
additionalProperties: false
properties:
address:
description: The address of the bank account owner.
$ref: '#/components/schemas/Address'
iban:
description: The international bank account number as defined in the [ISO-13616](https://www.iso.org/standard/81090.html)
standard.
type: string
ownerName:
description: The name of the bank account owner.
$ref: '#/components/schemas/Name'
type: object
Counterparty:
additionalProperties: false
properties:
balanceAccountId:
description: The unique identifier of the [balance account](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/balanceAccounts__resParam_id).
type: string
bankAccount:
description: Contains information about the bank account.
$ref: '#/components/schemas/BankAccountInfo'
merchant:
description: Contains information about the merchant.
$ref: '#/components/schemas/MerchantData'
transferInstrumentId:
description: The unique identifier of the [transfer instrument](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/transferInstruments__resParam_id).
type: string
type: object
CounterpartyInfo:
additionalProperties: false
properties:
balanceAccountId:
description: The unique identifier of the [balance account](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/balanceAccounts__resParam_id).
type: string
bankAccount:
description: Contains information about the bank account.
$ref: '#/components/schemas/BankAccountInfo'
transferInstrumentId:
description: The unique identifier of the [transfer instrument](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/transferInstruments__resParam_id).
type: string
type: object
InvalidField:
additionalProperties: false
properties:
message:
description: Description of the validation error.
type: string
name:
description: The field that has an invalid value.
type: string
value:
description: The invalid value.
type: string
required:
- name
- value
- message
type: object
JSONObject:
type: object
Link:
additionalProperties: false
properties:
href:
description: The link to the resource.
type: string
type: object
Links:
additionalProperties: false
properties:
next:
description: Contains a link to the next page.
$ref: '#/components/schemas/Link'
prev:
description: Contains a link to the previous page.
$ref: '#/components/schemas/Link'
type: object
MerchantData:
additionalProperties: false
properties:
acquirerId:
description: The unique identifier of the merchant's acquirer.
type: string
mcc:
description: The merchant category code.
type: string
merchantId:
description: The unique identifier of the merchant.
type: string
nameLocation:
description: Contains the name and location of the merchant.
$ref: '#/components/schemas/NameLocation'
postalCode:
description: The postal code of the merchant.
type: string
type: object
Name:
additionalProperties: false
properties:
firstName:
description: The first name.
type: string
fullName:
description: The full name.
type: string
infix:
description: The infix in the name, if any.
type: string
lastName:
description: The last name.
type: string
type: object
NameLocation:
additionalProperties: false
properties:
city:
description: The city where the merchant is located.
type: string
country:
description: The country where the merchant is located in [three-letter
country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) format.
type: string
countryOfOrigin:
description: The home country in [three-digit country code](https://en.wikipedia.org/wiki/ISO_3166-1_numeric)
format, used for government-controlled merchants such as embassies.
type: string
name:
description: The name of the merchant's shop or service.
type: string
rawData:
description: The raw data.
type: string
state:
description: The state where the merchant is located.
type: string
type: object
RestServiceError:
additionalProperties: false
properties:
detail:
description: A human-readable explanation specific to this occurrence of
the problem.
type: string
errorCode:
description: A code that identifies the problem type.
type: string
instance:
description: A unique URI that identifies the specific occurrence of the
problem.
type: string
invalidFields:
description: Detailed explanation of each validation error, when applicable.
items:
$ref: '#/components/schemas/InvalidField'
type: array
requestId:
description: A unique reference for the request, essentially the same as
`pspReference`.
type: string
response:
description: JSON response payload.
$ref: '#/components/schemas/JSONObject'
status:
description: The HTTP status code.
format: int32
type: integer
title:
description: A short, human-readable summary of the problem type.
type: string
type:
description: A URI that identifies the problem type, pointing to human-readable
documentation on this problem type.
type: string
required:
- type
- errorCode
- title
- detail
- status
type: object
RoutingDetails:
additionalProperties: false
properties:
detail:
description: A human-readable explanation specific to this occurrence of
the problem.
type: string
errorCode:
description: A code that identifies the problem type.
type: string
priority:
description: 'The priority for the bank transfer. This sets the speed at
which the transfer is sent and the fees that you have to pay. Required
for transfers with `category` **bank**.
Possible values:
* **regular**: for normal, low-value transactions.
* **fast**: a faster way to transfer funds, but the fees are higher. Recommended
for high-priority, low-value transactions.
* **wire**: the fastest way to transfer funds, but this has the highest
fees. Recommended for high-priority, high-value transactions.
* **instant**: for instant funds transfers in [SEPA countries](https://www.ecb.europa.eu/paym/integration/retail/sepa/html/index.en.html).
* **crossBorder**: for high-value transfers to a recipient in a different
country.
* **internal**: for transfers to an Adyen-issued business bank account
(by bank account number/IBAN).'
enum:
- crossBorder
- fast
- instant
- internal
- regular
- wire
type: string
title:
description: A short, human-readable summary of the problem type.
type: string
type: object
ServiceError:
additionalProperties: false
properties:
errorCode:
description: The error code mapped to the error message.
type: string
errorType:
description: The category of the error.
type: string
message:
description: A short explanation of the issue.
type: string
pspReference:
description: The PSP reference of the payment.
type: string
status:
description: The HTTP response status.
format: int32
type: integer
type: object
Transaction:
additionalProperties: false
properties:
accountHolderId:
x-addedInVersion: '1'
description: Unique identifier of the account holder.
type: string
amount:
x-addedInVersion: '1'
description: Contains information about the amount of the transaction.
$ref: '#/components/schemas/Amount'
balanceAccountId:
x-addedInVersion: '1'
description: Unique identifier of the balance account.
type: string
balancePlatform:
x-addedInVersion: '1'
description: The unique identifier of the balance platform.
type: string
bookingDate:
x-addedInVersion: '1'
description: The date the transaction was booked into the balance account.
format: date-time
type: string
category:
x-addedInVersion: '1'
description: "The category of the transaction indicating the type of activity.\n\
\n Possible values:\n\n* **platformPayment**: The transaction is a payment\
\ or payment modification made with an Adyen merchant account.\n\n* **internal**:\
\ The transaction resulted from an internal adjustment such as a deposit\
\ correction or invoice deduction.\n\n* **bank**: The transaction is a\
\ bank-related activity, such as sending a payout or receiving funds.\n\
\n* **issuedCard**: The transaction is a card-related activity, such as\
\ using an Adyen-issued card to pay online.\n\n"
enum:
- bank
- card
- grants
- interest
- internal
- issuedCard
- migration
- platformPayment
- topUp
- upgrade
type: string
counterparty:
x-addedInVersion: '1'
description: Contains information about the other party in the transaction.
$ref: '#/components/schemas/Counterparty'
createdAt:
x-addedInVersion: '1'
description: The date the transaction was created.
format: date-time
type: string
creationDate:
description: The date and time when the event was triggered, in ISO 8601
extended format. For example, **2020-12-18T10:15:30+01:00**.
format: date-time
type: string
description:
x-addedInVersion: '1'
description: The `description` from the `/transfers` request.
type: string
id:
x-addedInVersion: '1'
description: The unique identifier of the transaction.
type: string
instructedAmount:
x-addedInVersion: '1'
description: The amount that the sender instructed their bank to send. This
can be higher than `amount.value` when their bank deducts costs for the
transfer.
$ref: '#/components/schemas/Amount'
paymentInstrumentId:
x-addedInVersion: '1'
description: The unique identifier of the payment instrument that was used
for the transaction.
type: string
reference:
x-addedInVersion: '1'
description: The [`reference`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__reqParam_reference)
from the `/transfers` request. If you haven't provided any, Adyen generates
a unique reference.
type: string
referenceForBeneficiary:
x-addedInVersion: '1'
description: "The reference sent to or received from the counterparty.\n\
\n* For outgoing funds, this is the [`referenceForBeneficiary`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__resParam_referenceForBeneficiary)\
\ from the [`/transfers`](https://docs.adyen.com/api-explorer/#/transfers/latest/post/transfers__reqParam_referenceForBeneficiary)\
\ request.\n\n * For incoming funds, this is the reference from the sender."
type: string
status:
x-addedInVersion: '1'
description: "The status of the transaction.\n\n Possible values:\n\n* **pending**:\
\ The transaction is still pending.\n\n* **booked**: The transaction has\
\ been booked to the balance account.\n\n"
enum:
- booked
- pending
type: string
transferId:
x-addedInVersion: '1'
description: Unique identifier of the related transfer.
type: string
type:
x-addedInVersion: '1'
description: "The type of the transaction.\n\n Possible values: **payment**,\
\ **capture**, **captureReversal**, **refund** **refundReversal**, **chargeback**,\
\ **chargebackReversal**, **secondChargeback**, **atmWithdrawal**, **atmWithdrawalReversal**,\
\ **internalTransfer**, **manualCorrection**, **invoiceDeduction**, **depositCorrection**,\
\ **bankTransfer**, **miscCost**, **paymentCost**, **fee**"
enum:
- atmWithdrawal
- atmWithdrawalReversal
- balanceAdjustment
- balanceMigration
- balanceRollover
- bankDirectDebit
- bankTransfer
- capitalFundsCollection
- capture
- captureReversal
- cardTransfer
- cashOutFee
- cashOutFunding
- cashOutInstruction
- cashoutFee
- cashoutFunding
- cashoutRepayment
- chargeback
- chargebackCorrection
- chargebackReversal
- chargebackReversalCorrection
- depositCorrection
- fee
- grant
- installment
- installmentReversal
- interestPayout
- internalDirectDebit
- internalTransfer
- invoiceDeduction
- leftover
- manualCorrection
- miscCost
- payment
- paymentCost
- refund
- refundReversal
- repayment
- reserveAdjustment
- secondChargeback
- secondChargebackCorrection
type: string
valueDate:
x-addedInVersion: '1'
description: The date the transfer amount becomes available in the balance
account.
format: date-time
type: string
required:
- id
- accountHolderId
- balanceAccountId
- amount
- reference
- status
- createdAt
- bookingDate
- valueDate
- counterparty
- balancePlatform
type: object
TransactionSearchResponse:
additionalProperties: false
properties:
_links:
description: Contains links to the next and previous page whenever applicable.
$ref: '#/components/schemas/Links'
data:
description: Contains the transactions that match the query parameters.
items:
$ref: '#/components/schemas/Transaction'
type: array
type: object
Transfer:
additionalProperties: false
properties:
amount:
x-addedInVersion: '1'
description: The amount of the transfer.
$ref: '#/components/schemas/Amount'
balanceAccountId:
x-addedInVersion: '2'
description: The unique identifier of the source [balance account](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/balanceAccounts__resParam_id).
type: string
bank:
x-addedInVersion: '1'
description: Contains settings for bank transfers. If you are transferring
funds to bank accounts and you don't provide this object, Adyen applies
default settings.
$ref: '#/components/schemas/Bank'
counterparty:
description: The other party in the transfer.
$ref: '#/components/schemas/Counterparty'
description:
x-addedInVersion: '1'
description: 'Your description for the transfer. It is used by most banks
as the transfer description. We recommend sending a maximum of 140 characters,
otherwise the description may be truncated.
Supported characters: **[a-z] [A-Z] [0-9] / - ?** **: ( ) . , '' + Space**
Supported characters for **regular** and **fast** transfers to a US counterparty:
**[a-z] [A-Z] [0-9] & $ % # @** **~ = + - _ '' " ! ?**'
type: string
direction:
x-addedInVersion: '2'
description: 'The direction of the transfer.
Possible values: **incoming**, **outgoing**.'
enum:
- incoming
- outgoing
type: string
id:
description: The ID of the resource.
type: string
paymentInstrumentId:
x-addedInVersion: '2'
description: The unique identifier of the [payment instrument](https://docs.adyen.com/api-explorer/#/balanceplatform/latest/post/balanceAccounts__resParam_id)
used in the transfer.
type: string
reason:
x-addedInVersion: '2'
description: Additional information about the status of the transfer.
enum:
- accountHierarchyNotActive
- amountLimitExceeded
- approved
- balanceAccountTemporarilyBlockedByTransactionRule
- counterpartyAccountBlocked
- counterpartyAccountClosed
- counterpartyAccountNotFound
- counterpartyAddressRequired
- counterpartyBankTimedOut
- counterpartyBankUnavailable
- declined
- declinedByTransactionRule
- directDebitNotSupported
- error
- notEnoughBalance
- pending
- pendingApproval
- pendingExecution
- refusedByCounterpartyBank
- refusedByCustomer
- routeNotFound
- scaFailed
- transferInstrumentDoesNotExist
- unknown
type: string
reference:
x-addedInVersion: '2'
description: Your reference for the transfer, used internally within your
platform. If you don't provide this in the request, Adyen generates a
unique reference.
maxLength: 80
type: string
referenceForBeneficiary:
x-addedInVersion: '2'
description: " A reference that is sent to the recipient. This reference\
\ is also sent in all webhooks related to the transfer, so you can use\
\ it to track statuses for both parties involved in the funds movement.\n\
\n Supported characters: **a-z**, **A-Z**, **0-9**."
maxLength: 80
type: string
status:
x-addedInVersion: '2'
description: "The result of the transfer.\n\n For example, **authorised**,\
\ **refused**, or **error**."
enum:
- approvalPending
- atmWithdrawal
- atmWithdrawalReversalPending
- atmWithdrawalReversed
- authAdjustmentAuthorised
- authAdjustmentError
- authAdjustmentRefused
- authorised
- bankTransfer
- bankTransferPending
- booked
- bookingPending
- cancelled
- capturePending
- captureReversalPending
- captureReversed
- captured
- capturedExternally
- chargeback
- chargebackExternally
- chargebackPending
- chargebackReversalPending
- chargebackReversed
- credited
- depositCorrection
- depositCorrectionPending
- dispute
- disputeClosed
- disputeExpired
- disputeNeedsReview
- error
- expired
- failed
- fee
- feePending
- internalTransfer
- internalTransferPending
- invoiceDeduction
- invoiceDeductionPending
- manualCorrectionPending
- manuallyCorrected
- matchedStatement
- matchedStatementPending
- merchantPayin
- merchantPayinPending
- merchantPayinReversed
- merchantPayinReversedPending
- miscCost
- miscCostPending
- paymentCost
- paymentCostPending
- pendingApproval
- pendingExecution
- received
- refundPending
- refundReversalPending
- refundReversed
- refunded
- refundedExternally
- refused
- rejected
- reserveAdjustment
- reserveAdjustmentPending
- returned
- secondChargeback
- secondChargebackPending
- undefined
type: string
required:
- counterparty
- status
- amount
type: object
TransferInfo:
additionalProperties: false
properties:
amount:
x-addedInVersion: '1'
description: The amount of the transfer.
$ref: '#/components/schemas/Amount'
balanceAccountId:
description: 'The unique identifier of the source [balance account](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/balanceAccounts#responses-200-id).
If you want to make a transfer using a **virtual** **bankAccount** assigned
to the balance account, you must specify the [payment instrument ID](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/paymentInstruments#responses-200-id)
of the **virtual** **bankAccount**. If you only specify a balance account
ID, Adyen uses the default **physical** **bankAccount** payment instrument
assigned to the balance account.'
type: string
bank:
x-addedInVersion: '1'
description: Contains settings for bank transfers. If you are transferring
funds to bank accounts and you don't provide this object, Adyen applies
default settings.
$ref: '#/components/schemas/Bank'
counterparty:
description: The other party involved in the funds transfer. A bank account,
a balance account, or a transfer instrument is required.
$ref: '#/components/schemas/CounterpartyInfo'
description:
x-addedInVersion: '1'
description: 'Your description for the transfer. It is used by most banks
as the transfer description. We recommend sending a maximum of 140 characters,
otherwise the description may be truncated.
Supported characters: **[a-z] [A-Z] [0-9] / - ?** **: ( ) . , '' + Space**
Supported characters for **regular** and **fast** transfers to a US counterparty:
**[a-z] [A-Z] [0-9] & $ % # @** **~ = + - _ '' " ! ?**'
maxLength: 140
type: string
paymentInstrumentId:
description: 'The unique identifier of the source [payment instrument](https://docs.adyen.com/api-explorer/balanceplatform/latest/post/paymentInstruments#responses-200-id).
If you want to make a transfer using a **virtual** **bankAccount**, you
must specify the payment instrument ID of the **virtual** **bankAccount**.
If you only specify a balance account ID, Adyen uses the default **physical**
**bankAccount** payment instrument assigned to the balance account.'
type: string
reference:
x-addedInVersion: '2'
description: Your reference for the transfer, used internally within your
platform. If you don't provide this in the request, Adyen generates a
unique reference.
maxLength: 80
type: string
referenceForBeneficiary:
x-addedInVersion: '2'
description: " A reference that is sent to the recipient. This reference\
\ is also sent in all webhooks related to the transfer, so you can use\
\ it to track statuses for both parties involved in the funds movement.\n\
\n Supported characters: **a-z**, **A-Z**, **0-9**."
maxLength: 80
type: string
required:
- amount
- counterparty
type: object
TransferServiceRestServiceError:
additionalProperties: false
properties:
detail:
description: A human-readable explanation specific to this occurrence of
the problem.
type: string
errorCode:
description: A code that identifies the problem type.
type: string
instance:
description: A unique URI that identifies the specific occurrence of the
problem.
type: string
invalidFields:
description: Detailed explanation of each validation error, when applicable.
items:
$ref: '#/components/schemas/InvalidField'
type: array
requestId:
description: A unique reference for the request, essentially the same as
`pspReference`.
type: string
response:
description: JSON response payload.
$ref: '#/components/schemas/JSONObject'
routingDetails:
description: Detailed explanation of each attempt to route the transfer
with the priorities from the request.
items:
$ref: '#/components/schemas/RoutingDetails'
type: array
status:
description: The HTTP status code.
format: int32
type: integer
title:
description: A short, human-readable summary of the problem type.
type: string
type:
description: A URI that identifies the problem type, pointing to human-readable
documentation on this problem type.
type: string
required:
- type
- errorCode
- title
- detail
- status
type: object
securitySchemes:
ApiKeyAuth:
in: header
name: X-API-Key
type: apiKey
BasicAuth:
scheme: basic
type: http
clientKey:
in: query
name: clientKey
type: apiKey
headers:
Idempotency-Key:
description: The idempotency key used for processing the request. Present if
the key was provided in the request.
schema:
type: string
auth-param1:
description: Base64-encoded blob of data. You will need auth-param1 when authenticating
your user using the SDK.
schema:
type: string
parameters:
Idempotency-Key:
description: A unique identifier for the message with a maximum of 64 characters
(we recommend a UUID).
example: 37ca9c97-d1d1-4c62-89e8-706891a563ed
name: Idempotency-Key
in: header
schema:
type: string
examples:
get-transactions-id-success-200:
summary: Response code - 200 OK
description: Example response for a transaction
value:
accountHolderId: AHA1B2C3D4E5F6G7H8I9J0
amount:
currency: EUR
value: 9887
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
balancePlatform: YOUR_BALANCE_PLATFORM
bookingDate: '2022-03-14T12:01:00+01:00'
category: bank
counterparty:
balanceAccountId: BA00000000000000000000001
createdAt: '2022-03-14T12:01:00+01:00'
description: YOUR_DESCRIPTION
id: IZK7C25U7DYVX03Y
instructedAmount:
currency: EUR
value: 9887
reference: 2L6C6B5U7DYULLXC
referenceForBeneficiary: YOUR_REFERENCE_FOR_BENEFICIARY
status: booked
transferId: 2QP32A5U7IWC5WKG
type: bankTransfer
valueDate: '2022-03-14T12:01:00+01:00'
get-transactions-success-200:
summary: Response code - 200 OK
description: Example response for a list of transactions
value:
data:
- accountHolderId: AHA1B2C3D4E5F6G7H8I9J0
amount:
currency: EUR
value: -9
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
balancePlatform: YOUR_BALANCE_PLATFORM
bookingDate: '2022-03-11T11:21:24+01:00'
category: internal
counterparty:
balanceAccountId: BA00000000000000000000001
createdAt: '2022-03-11T11:21:24+01:00'
id: 1VVF0D5U66PIUIVP
instructedAmount:
currency: EUR
value: -9
reference: REFERENCE_46e8c40e
status: booked
transferId: 1VVF0D5U66PIUIVP
type: fee
valueDate: '2022-03-11T11:21:24+01:00'
- accountHolderId: AHA1B2C3D4E5F6G7H8I9J0
amount:
currency: EUR
value: -46
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
balancePlatform: YOUR_BALANCE_PLATFORM
bookingDate: '2022-03-12T14:22:52+01:00'
category: internal
counterparty:
balanceAccountId: BA00000000000000000000001
createdAt: '2022-03-12T14:22:52+01:00'
id: 1WEPGD5U6MS1CFK3
instructedAmount:
currency: EUR
value: -46
reference: YOUR_REFERENCE
status: booked
transferId: 1WEPGD5U6MS1CFK3
type: fee
valueDate: '2022-03-12T14:22:52+01:00'
- accountHolderId: AHA1B2C3D4E5F6G7H8I9J0
amount:
currency: EUR
value: -8
counterparty:
balanceAccountId: BA00000000000000000000001
reference: REFERENCE_46e8c40e
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
balancePlatform: YOUR_BALANCE_PLATFORM
bookingDate: '2022-03-14T21:00:48+01:00'
createdAt: '2022-03-14T15:00:00+01:00'
description: YOUR_DESCRIPTION_2
id: 2QP32A5U7IWC5WKG
instructedAmount:
currency: EUR
value: -8
status: booked
valueDate: '2022-03-14T21:00:48+01:00'
_links:
next:
href: https://balanceplatform-api-test.adyen.com/btl/v2/transactions?balancePlatform=Bastronaut&createdUntil=2022-03-21T00%3A00%3A00Z&createdSince=2022-03-11T00%3A00%3A00Z&limit=3&cursor=S2B-TSAjOkIrYlIlbjdqe0RreHRyM32lKRSxubXBHRkhHL2E32XitQQz5SfzpucD5HbHwpM1p6NDR1eXVQLFF6MmY33J32sobDxQYT90MHIud1hwLnd6JitcX32xJ
post-transfers-payout-local-transfer-sepa:
summary: Make a SEPA funds transfer
description: Example request to make a US local funds transfer
value:
amount:
value: 110000
currency: EUR
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
bankAccount:
iban: NL13TEST0123456789
ownerName:
fullName: A. Klaassen
bank:
priority: regular
referenceForBeneficiary: Your reference sent to the beneficiary
reference: Your internal reference for the transfer
description: Your description
post-transfers-payout-local-transfer-sepa-202:
summary: Response code - 202 Accepted
description: Example response for a transfers request
value:
id: 1W1UG35U8A9J5ZLG
amount:
value: 110000
currency: EUR
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
bankAccount:
iban: NL13TEST0123456789
ownerName:
fullName: A. Klaassen
bank:
priority: regular
referenceForBeneficiary: Your reference sent to the beneficiary
reference: Your internal reference for the transfer
description: Your description
direction: outgoing
reason: approved
status: authorised
post-transfers-payout-to-balance-account:
summary: Transfer funds to another balance account
description: Example request to transfer funds to another balance account
value:
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
balanceAccountId: BAB1234567890ABC123456789
amount:
value: 10000
currency: EUR
reference: Your internal reference for the transfer
description: Your description
post-transfers-payout-to-balance-account-202:
summary: Response code - 202 Accepted
description: Example response for a transfers request
value:
id: 1W1UG35U8A9J5ZLG
amount:
currency: EUR
value: 10000
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
balanceAccountId: BA32272223222B5LPRFDW7J9G
referenceForBeneficiary: Your reference sent to the beneficiary
reference: Your internal reference for the transfer
description: Your description
direction: outgoing
reason: approved
status: authorised
post-transfers-payout-to-transfer-instrument:
summary: Pay out to a transfer instrument
description: Example request to pay out to a transfer instrument
value:
amount:
value: 80000
currency: EUR
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
transferInstrumentId: SE1234567890ABC1234567890
bank:
priority: regular
referenceForBeneficiary: Your reference sent to the beneficiary
reference: Your internal reference for the transfer
description: Your description
post-transfers-payout-to-transfer-instrument-202:
summary: Response code - 202 Accepted
description: Example response for a transfers request
value:
id: 1W1UG35U8A9J5ZLG
amount:
value: 80000
currency: EUR
balanceAccountId: BAB8B2C3D4E5F6G7H8D9J6GD4
counterparty:
transferInstrumentId: SE1234567890ABC1234567890
bank:
priority: regular
referenceForBeneficiary: Your reference sent to the beneficiary
reference: Your internal reference for the transfer
description: Your description
direction: outgoing
reason: approved
status: authorised