Balance

Balance accounts are included as part of the Wise Multi-Currency Account.

The Balance resource

Fields
idinteger

Balance id

currencytext

Currency code (ISO 4217 Alphabetic Code)

typetext

Type (STANDARD, SAVINGS)

nametext

Name of the balance

icontext

Emoji string

investmentStatetext

Investment state of balance (NOT_INVESTED, INVESTED, DIVESTING, UNKNOWN)

amount.valuedecimal

Available balance value that can be used to fund transfers

amount.currencytext

Currency code (ISO 4217 Alphabetic Code)

reservedAmount.valuedecimal

Amount reserved for transactions

reservedAmount.currencytext

Currency code (ISO 4217 Alphabetic Code)

cashAmount.valuedecimal

Cash amount in the account

cashAmount.currencytext

Currency code (ISO 4217 Alphabetic Code)

totalWorth.valuedecimal

Current total worth

totalWorth.currencytext

Currency code (ISO 4217 Alphabetic Code)

creationTimetimestamp

Date of when the balance was created

modificationTimetimestamp

Date of when the balance was last modified

visibleboolean

Balance is visible for the user or not

Balance Object
{
"id": 200001,
"currency": "EUR",
"type": "STANDARD",
"name": null,
"icon": null,
"investmentState": "NOT_INVESTED",
"amount": {
"value": 0,
"currency": "EUR"
},
"reservedAmount": {
"value": 0,
"currency": "EUR"
},
"cashAmount": {
"value": 0,
"currency": "EUR"
},
"totalWorth": {
"value": 0,
"currency": "EUR"
},
"creationTime": "2020-05-20T14:43:16.658Z",
"modificationTime": "2020-05-20T14:43:16.658Z",
"visible": true
}

Create a balance account

POST /v4/profiles/{{profileId}}/balances

This endpoint opens a balance within the specified profile, in the currency and type specified in the request.

For STANDARD balances, only one can be created for a currency. For SAVINGS balances, multiples in the same currency can be opened.

When sending the request, the currency and type are required. If creating a SAVINGS type balance, a name is also required.

Request
currencytext

Currency code (ISO 4217 Alphabetic Code)

typetext

Type (STANDARD, SAVINGS)

nametext

Name of the balance

Returns a balance object.

Example Request
curl -X POST https://api.sandbox.transferwise.tech/v4/profiles/{{profileId}}/balances \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/json' \
-H 'X-idempotence-uuid: <generated uuid>' \
-d '{
"currency": "EUR",
"type": "STANDARD"
}'

Retrieve a balance by Id

GET /v4/profiles/{{profileId}}/balances/{{balanceId}}

This endpoint returns a balance based on the specified balance ID.

Returns a balance object.

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

List balances for a profile

GET /v4/profiles/{{profileId}}/balances?types=STANDARD

Retrieve the user's multi-currency account balance accounts. It returns all balance accounts the profile has in the types specified.

A parameter of type must be passed and include at least a single type. To return more than one type, comma separate the values. Acceptable values are STANDARD and SAVINGS.

Returns an array of balance objects.

Example Request
curl -X GET https://api.sandbox.transferwise.tech/v4/profiles/{{profileId}}/balances?types=STANDARD \
-H 'Authorization: Bearer <your api token>'

Remove a balance account

DELETE /v4/profiles/{{profileId}}/balances/{{balanceId}}

Close a balance account for the users profile. Balance accounts must have a zero balance in order for it to be closed. Bank account details for a balance account will also be deactivated and may not be restored in the future.

Returns a balance object.

Example Request
curl -X DELETE https://api.sandbox.transferwise.tech/v4/profiles/{{profileId}}/balances/{{balanceId}} \
-H 'Authorization: Bearer <your api token>'

Convert across balance accounts

POST /v2/profiles/{{profileId}}/balance-movements

This endpoint allows the conversion of funds between two STANDARD balance accounts in different currencies. You first must generate a quote with "payOut": "BALANCE".

Request
profileIdinteger

Authenticated profile id

quoteIduuid

Quote id - quote must be created with "payOut": "BALANCE".

X-idempotence-uuiduuid

Unique identifier assigned by you. Used for idempotency check purposes. Should your call fail for technical reasons then you can use the same value again for making retry call.

Example Request
curl -X POST https://api.sandbox.transferwise.tech/v2/profiles/{{profileId}}/balance-movements \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/json' \
-H 'X-idempotence-uuid: <generated uuid>' \
-d '{
"quoteId": {{quote id}}
}'
Example Response
{
"id": 30000001,
"type": "CONVERSION",
"state": "COMPLETED",
"balancesAfter": [
{
"id": 1,
"value": 10000594.71,
"currency": "GBP"
},
{
"id": 2,
"value": 9998887.01,
"currency": "EUR"
}
],
"creationTime": "2017-11-21T09:55:49.275Z",
"steps": [
{
"id": 369588,
"type": "CONVERSION",
"creationTime": "2017-11-21T09:55:49.276Z",
"balancesAfter": [
{
"value": 9998887.01,
"currency": "EUR"
},
{
"value": 10000594.71,
"currency": "GBP"
}
],
"channelName": null,
"channelReferenceId": null,
"tracingReferenceCode": null,
"sourceAmount": {
"value": 113.48,
"currency": "EUR"
},
"targetAmount": {
"value": 100,
"currency": "GBP"
},
"fee": {
"value": 0.56,
"currency": "EUR"
},
"rate": 0.88558
}
],
"sourceAmount": {
"value": 113.48,
"currency": "EUR"
},
"targetAmount": {
"value": 100,
"currency": "GBP"
},
"rate": 0.88558,
"feeAmounts": [
{
"value": 0.56,
"currency": "EUR"
}
]
}

Move money between balances

POST /v2/profiles/{{profileId}}/balance-movements

This endpoint allows the following money movements:

  • Add money to same-currency jar (i.e move money from STANDARD to SAVINGS balance without conversion, amount is provided as request parameter);
  • Add money to another-currency jar (i.e. convert money, amount is determined by provided quoteId);
  • Withdraw money from jar (i.e move money from SAVINGS to STANDARD balance without conversion, amount is provided as request parameter).
Request
profileIdinteger

Authenticated profile id

sourceBalanceIdinteger

Source balance id. If present, targetBalanceId is required.

targetBalanceIdinteger

Target balance id. If present, sourceBalanceId is required.

quoteIduuid

Quote id - quote must be created with "payOut": "BALANCE". Required for cross-currency movements.

amountmoney

Either amount or quoteId are required.

X-idempotence-uuiduuid

Unique identifier assigned by you. Used for idempotency check purposes. If your call fails for technical reasons, you can use the same value again for making a retry call.

Example Request
curl -X POST https://api.sandbox.transferwise.tech/v2/profiles/{{profileId}}/balance-movements \
-H 'Authorization: Bearer <your api token>' \
-H 'Content-Type: application/json' \
-H 'X-idempotence-uuid: <generated uuid>' \
-d '{
"amount": {
"value": <decimal>,
"currency": <currency>
}
"sourceBalanceId": <source id>,
"targetBalanceId": <target balance id>,
"quoteId": {{quote id}}
}'
Example Response
{
"id": <conversion transaction id>,
"type": "CONVERSION",
"state": "COMPLETED",
"balancesAfter": [
{
"id": 1,
"value": 10000594.71,
"currency": "GBP"
},
{
"id": 2,
"value": 9998887.01,
"currency": "EUR"
}
],
"creationTime": "2017-11-21T09:55:49.275Z",
"steps": [
{
"id": 369588,
"type": "CONVERSION",
"creationTime": "2017-11-21T09:55:49.276Z",
"balancesAfter": [
{
"value": 9998887.01,
"currency": "EUR"
},
{
"value": 10000594.71,
"currency": "GBP"
}
],
"channelName": null,
"channelReferenceId": null,
"tracingReferenceCode": null,
"sourceAmount": {
"value": 113.48,
"currency": "EUR"
},
"targetAmount": {
"value": 100,
"currency": "GBP"
},
"fee": {
"value": 0.56,
"currency": "EUR"
},
"rate": 0.88558
}
],
"sourceAmount": {
"value": 113.48,
"currency": "EUR"
},
"targetAmount": {
"value": 100,
"currency": "GBP"
},
"rate": 0.88558,
"feeAmounts": [
{
"value": 0.56,
"currency": "EUR"
}
]
}