Bank Account Details

Endpoints
GET/v1/profiles/{{profileId}}/account-details
POST/v1/profiles/{{profileId}}/account-details/payments/{{paymentId}}/returns
Fields
idinteger

Bank account details id

currency.codetext

Currency code (ISO 4217 Alphabetic Code)

currency.nametext

Currency name

titletext

Account title

subtitletext

Account subtitle

statustext
  • AVAILABLE: Account details do not exist for the user but may be created
  • ACTIVE: Account details are ready to be used by this user
deprecatedboolean

Important! When the value is true, Wise issued another account details for the same currency. The users should not use the deprecated account anymore, but they still need to be informed as they might have external references pointing to the old one.

receiveOptionsarray

This array will contain the available receive options for the given currency.

  • LOCAL: local bank details to receive money in the account currency
  • INTERNATIONAL: SWIFT bank details to receive money internationally in the account currency.
receiveOptions.detailsarray

It returns all the details that need to be displayed to users to make transfers to this account. This array will vary from currency to currency as each one has its requirements. For example, EUR will return ACCOUNT_HOLDER, SWIFT_CODE, IBAN and ADDRESS, whereas GBP will return ACCOUNT_HOLDER, BANK_CODE, ACCOUNT_NUMBER, IBAN and ADDRESS.

Each element in this array will contain the following attributes:

  • type: String informing the account detail type
  • title: Label to display in the UI
  • body: Value to display in the UI
  • description: When present, it has the content to show a tooltip/popup hint
  • hidden: If the field should be displayed or not in the UI
bankFeaturesarray

Features enabled on the account

Bank Account Details Object
{
"id": 14000001,
"currency": {
"code": "EUR",
"name": "Euro"
},
"title": "Your EUR account details",
"subtitle": "IBAN, SWIFT/BIC",
"status": "ACTIVE",
"deprecated": false,
"receiveOptions": [
],
"bankFeatures": [
{
"key": "LOCAL_RECEIVE",
"title": "Receive locally",
"supported": true
},
{
"key": "SWIFT",
"title": "Receive internationally (SWIFT)",
"supported": true
},
{
"key": "DIRECT_DEBITS",
"title": "Set up Direct Debits",
"supported": true
},
{
"key": "PLATFORM_RECEIVE",
"title": "Receive from PayPal and Stripe",
"supported": true
}
]
}

GET /v1/profiles/{{profileId}}/account-details

This endpoint returns a list with all the AVAILABLE and ACTIVE account details for the given profile, including examples. Account receive options can also include local and international details to receive money on the currency balance.

Example bank account details are returned for any currency where bank account details have not been requested and issued. Examples will always include an id of null.

Response

Returns a list of bank account details objects.

Example Request
curl -X GET https://api.sandbox.transferwise.tech/v1/profiles/{{profileId}}/account-details \
-H 'Authorization: Bearer <your api token>'

POST /v1/profiles/{{profileId}}/account-details-orders

Creates an order which will issue account details. It should use the same currency as the balance previously created. Fulfilling all the requirements will complete the order. That means reaching status DONE.

The possible values for a requirement are:

  • PENDING_USER: The requirement has some pending action from the user.
  • PENDING_TW: The requirement has some pending action from Wise.
  • DONE: The requirement is completed

The more common requirements are:

  • VERIFICATION: The user needs to be fully verified before complete this requirement.
  • TOP_UP: A fee will be charged and must be paid using through wise.com before complete this requirement.
Request
currencytext

balance currency (ISO 4217 Alphabetic Code)

Response
statustext

Status (PENDING_USER, PENDING_TW, DONE)

currencytext

currency (ISO 4217 Alphabetic Code)

requirements.typetext

Requirement type (VERIFICATION, TOP_UP)

requirement.statustext

Requirement status (PENDING_USER, PENDING_TW, DONE)

Example Request
curl -X POST https://api.sandbox.transferwise.tech/v1/profiles/{{profileId}}/account-details-orders \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/json' \
-d '{
"currency": "EUR"
}'
Example Response
{
"status": "PENDING_USER",
"currency": "EUR",
"requirements": [
{
"type": "VERIFICATION",
"status": "PENDING_USER"
}
]
}

GET /v1/profiles/{{profileId}}/account-details-orders

This endpoint returns the bank account assignment requests for a profile and multi-currency account.

Example Request
curl -X GET https://api.sandbox.transferwise.tech/v1/profiles/{{profileId}}/account-details-orders \
-H 'Authorization: Bearer <your api token>'
Example Response
[
{
"status": "PENDING_USER",
"currency": "EUR",
"requirements": [
{
"type": "TOP_UP",
"status": "PENDING_USER",
},
{
"type": "VERIFICATION",
"status": "PENDING_USER",
}
]
},
...
]

POST /v1/profiles/{{profileId}}/account-details/payments/{{paymentId}}/returns

This feature is currently in BETA and only available to International Receive partners

Creates a return for a payment received to bank account details.

When you create a return, you must provide the ID of the payment you wish to return as well as the ID of the profile that received the payment. In addition, you can provide a reason for the return in the request body. When returning SWIFT payments, reason is a required field.

Request
reasontext

Reason for the return. Only required to return SWIFT payments.
Reason(INCORRECT_ACCOUNT_NUMBER, CLOSED_ACCOUNT, BLOCKED_ACCOUNT, CANCELLATION_REQUEST, REGULATORY, CUSTOMER_REQUEST)
optional

Response
iduuid

ID of the return created.

required

Example Request
curl -X POST https://api.sandbox.transferwise.tech/v1/profiles/{{profileId}}/account-details/payments/{{paymentId}}/returns \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/json' \
-d '{
"reason": "CLOSED_ACCOUNT"
}'
Example Response - PAYMENT RETURN CREATED (201)
{
"id": "4cc39f2b-3513-453d-8792-9ccc22e513c3"
}
Example Error - PAYMENT NOT FOUND (404)
{
"errors": [
"code": "error.payment.not-found",
"message": "No payment found with id [123456789] for profile id [987654321]",
"arguments": [
987654321,
123456789,
null
]
]
}
Example Error - INVALID REQUEST (400)
{
"errors": [
"code": "error.payment-return.invalid",
"message": "A valid reason is required to return a SWIFT payment",
"arguments": [
987654321,
123456789,
null
]
]
}