This document provides guidelines for the implementation of multi-currency accounts for all partners.

It's broken down into key areas and describes the logic to:
- Determine a user's eligibility for multi-currency accounts.
- Determine which balance account currencies are supported.
- Create balance accounts for personal and business profiles.
- Add bank account details to eligible balance accounts.
- Top up a balance account from an external source.
- Send money from a balance account.
- Convert funds between two balances in different currencies.
- View the transaction history for a balance account.
Use our Postman collection to test your workflow. It includes:
- Sandbox environment:
https://api.wise-sandbox.com - Common requests with dynamic responses
- Workflows that copy response data across calls
The structure of a multi-currency account is as follows:
- A User has a profile (personal or business).
- A Profile has the ability to open a Multi-Currency Account.
- A Multi-Currency Account has the ability to have multiple Balance Accounts in different currencies.
- A Balance Account has a specific currency and can contain a set of Bank Account Details.
- Bank Account Details are a set of local account details that allow the account holder, or their customer, to receive funds like a local in that country's currency (for example, an IBAN + BIC for EUR, or account number + sort code for GBP).
The diagram below illustrates the relationships between each of the components highlighted above.
Account details for a specific currency balance account are optional and not issued by default when opening a balance. Go to the Bank account details guide to learn about creating, viewing, and managing bank account details.
For details on authenticating against our API, please see Authenticating with the Wise API.
Most endpoints included in this guide require a profile ID and/or a balance ID as part of the path. These are denoted with {{profileId}} and {{balanceId}} throughout the guide, and are obtained from previous requests to endpoints as outlined.
Each endpoint accepts an additional header of Accept-Language. This should include an ISO 639-1 language code. This will default to en if it is not passed as part of the request. The examples in this guide include the header for those calls that return translated strings.
Endpoints that include a body require a Content-Type: application/json header to be included. This is included in the examples where required.