Skip to content

Wise Platform API

The Wise Platform API is a REST-based interface that enables programmatic access to Wise's payment infrastructure. All endpoints return JSON-formatted responses and use standard HTTP methods and status codes.

New to wise?

We strongly recommend first reading our Getting Started Guide to help you set up credentials and make your first call.

Before you begin

To use this API reference effectively, you should have:

  • Received Valid API credentials from Wise (Client ID and Client Secret)
  • Understand OAuth 2.0 authentication
  • Be familiar with RESTful API concepts

Core API resources

ResourcePurpose
QuoteExchange rate and fee calculations
RecipientBeneficiary account management
TransferPayment creation and execution
BalanceMulti-currency account operations
ProfileAccount ownership details
RateCurrent and historical exchange rates

Not sure which workflow to build?
Start with our Integration Guides for step-by-step implementation examples.

Languages
Servers
Production Environment
https://api.wise.com/
Sandbox Environment
https://api.wise-sandbox.com/

3D Secure Authentication

To manage certain aspects of the 3D Secure (3DS) authentication, you will need to integrate with the following APIs.

Operations

Activity

Activity represents a snapshot of a performed action for a profile.

Operations

Additional Customer Verification

In certain situations, additional evidence is required to verify customers and ensure we’re compliant with the KYC regulations.

Additional Verification APIs support a list of evidences that can be found in the Supported Evidences guide.

If you use the Customer Account with Partner KYC model and your customers are primarily based in the EU, refer to this Onboarding EU customers guide for instructions on how to use these APIs.

If you use the Customer Account with Partner KYC model and you are onboarding high risk business customers based primarily based in the US, refer to this Onboarding High Risk US Businesses guide for instructions on how to use these APIs.

Operations

Address

Manage physical addresses associated with user profiles.

Address requirements vary by country — use the address requirements endpoints to dynamically discover which fields are needed before creating an address.

SchemasOperations

Balance

Create and manage balance accounts within a multi-currency account.

Each profile can hold multiple balance accounts in different currencies. A STANDARD balance is limited to one per currency, while SAVINGS balances (Jars) allow multiple in the same currency. Creating the first balance for a profile automatically creates the multi-currency account.

Balances include an investmentState field. Only balances with NOT_INVESTED can be operated on via the API. Invested balances should be shown but not actionable.

For a complete guide on multi-currency accounts, see Multi-Currency Accounts.

SchemasOperations

Balance Statement

Balance statements contain transactional activities on a Wise Multi-Currency Account, including deposits, withdrawals, conversions, card transactions, and fees.

Statements can be retrieved in multiple formats: JSON, CSV, PDF, XLSX, CAMT.053, MT940, or QIF.

Operations

Get Balance Statement

Request

Retrieve a statement for the specified balance account.

The response format depends on the URL path:

  • statement.json - JSON format
  • statement.csv - CSV format
  • statement.pdf - PDF format (includes Wise branding)
  • statement.xlsx - Excel format
  • statement.xml - CAMT.053 XML format
  • statement.mt940 - MT940 format
  • statement.qif - QIF format

The period between intervalStart and intervalEnd cannot exceed 469 days (around 1 year 3 months).

This endpoint is SCA protected when it applies. If your profile is registered within the UK and/or EEA, SCA most likely applies to you. The additional authentication is only required once every 90 days, viewing the statement on the website or in the mobile app counts towards that as well.

Learn more

Security
UserToken or PersonalToken
Path
profileIdinteger(int64)required

The profile ID.

Example: 12345
balanceIdinteger(int64)required

The balance ID to get the statement for.

Example: 64
Query
currencystringrequired

Currency of the balance statement requested (ISO 4217 Alphabetic Code).

Example: currency=EUR
intervalStartstring(date-time)required

Statement start time in UTC.

Example: intervalStart=2025-03-01T00:00:00.000Z
intervalEndstring(date-time)required

Statement end time in UTC.

Example: intervalEnd=2025-04-30T23:59:59.999Z
typestring

Statement type:

  • COMPACT - Single statement line per transaction
  • FLAT - Accounting statements where transaction fees are on a separate line
Enum"COMPACT""FLAT"
Example: type=COMPACT
statementLocalestring

Language for the statement. Supports 2 character language codes.

Example: statementLocale=en
curl -i -X GET \
  'https://api.wise.com/v1/profiles/12345/balance-statements/64/statement.json?currency=EUR&intervalStart=2025-03-01T00%3A00%3A00.000Z&intervalEnd=2025-04-30T23%3A59%3A59.999Z&type=COMPACT&statementLocale=en' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

OK - Successfully retrieved balance statement.

Bodyapplication/json
accountHolderobject

Account holder information.

accountHolder.​typestring

Account holder type.

Enum"PERSONAL""BUSINESS"
Example: "PERSONAL"
accountHolder.​addressobject

Account holder address.

accountHolder.​firstNamestring

Account holder first name.

Example: "Oliver"
accountHolder.​lastNamestring

Account holder last name.

Example: "Wilson"
issuerobject

Account issuer information.

issuer.​namestring

Issuer name.

Example: "TransferWise Ltd."
issuer.​firstLinestring

Street address.

Example: "56 Shoreditch High Street"
issuer.​citystring

City.

Example: "London"
issuer.​postCodestring

Postal/ZIP code.

Example: "E1 6JJ"
issuer.​stateCodestring

State code.

Example: ""
issuer.​countrystring

Country.

Example: "United Kingdom"
bankDetailsobject or null

Local bank details for the account.

transactionsArray of objects

List of transactions in the statement period.

transactions[].​typestring

Transaction direction.

Enum"DEBIT""CREDIT"
Example: "DEBIT"
transactions[].​datestring(date-time)

Date when transaction was created.

Example: "2018-04-30T08:47:05.832Z"
transactions[].​amountobject

Transaction amount.

transactions[].​totalFeesobject

Transaction fees.

transactions[].​detailsobject

Transaction details.

transactions[].​exchangeDetailsobject or null

Exchange details for card transactions abroad.

transactions[].​runningBalanceobject

Running balance after the transaction.

transactions[].​referenceNumberstring

Wise assigned unique transaction reference number. Can be used to map refunds to the original transfer.

Example: "CARD-249281"
endOfStatementBalanceobject

Closing balance for the specified time period.

endOfStatementBalance.​valuenumber

Balance value.

Example: 9.94
endOfStatementBalance.​currencystring

Currency code.

Example: "EUR"
queryobject

Query parameters used for the request.

query.​intervalStartstring(date-time)

Statement start time.

Example: "2018-03-01T00:00:00Z"
query.​intervalEndstring(date-time)

Statement end time.

Example: "2018-04-30T23:59:59.999Z"
query.​currencystring

Currency code.

Example: "EUR"
query.​accountIdinteger(int64)

Balance account ID.

Example: 64
Response
application/json
{ "accountHolder": { "type": "PERSONAL", "address": { "addressFirstLine": "Veerenni 24", "city": "Tallinn", "postCode": "12112", "stateCode": "", "countryName": "Estonia" }, "firstName": "Oliver", "lastName": "Wilson" }, "issuer": { "name": "TransferWise Ltd.", "firstLine": "56 Shoreditch High Street", "city": "London", "postCode": "E1 6JJ", "stateCode": "", "country": "United Kingdom" }, "bankDetails": {}, "transactions": [ { "type": "DEBIT", "date": "2018-04-30T08:47:05.832Z", "amount": {}, "totalFees": {}, "details": {}, "exchangeDetails": {}, "runningBalance": {}, "referenceNumber": "CARD-249281" } ], "endOfStatementBalance": { "value": 9.94, "currency": "EUR" }, "query": { "intervalStart": "2018-03-01T00:00:00Z", "intervalEnd": "2018-04-30T23:59:59.999Z", "currency": "EUR", "accountId": 64 } }

Bank Account Details

Bank account details allow users to receive money into their Wise Multi-Currency Account. Each currency balance can have local bank details (for domestic payments) and international bank details (for SWIFT payments) where available.

Bank account details can be retrieved for existing balances, or new details can be ordered for currencies where they're available but not yet issued.

SchemasOperations

Batch Group

A batch group is a named collection of up to 1000 transfers that can be managed as a single unit. Batch groups are primarily used for funding multiple transfers with a single payment.

Workflow:

  1. Create a batch group with a source currency
  2. Add transfers to the group (up to 1000)
  3. Complete the batch group to close it for modifications
  4. Fund the batch group from a balance or via direct debit

Individual transfers in the group follow standard transfer lifecycle and can be tracked separately.

SchemasOperations

Bulk Settlement

Bulk settlement allows partners to settle multiple transfers in a single bank transfer at the end of a settlement period. This model splits transfer creation/funding from final settlement, allowing Wise to process transfers before receiving funds based on a partner's guarantee.

Use the settlement journal endpoint to submit a list of transfers to be settled, along with the settlement reference that matches your bank transfer payment.

Operations