openapi: 3.1.0
info:
title: Wise Platform 3ds rate API
version: ''
description: "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.\n{% admonition type=\"success\" name=\"New to wise?\" %}\n We strongly recommend first reading our **[Getting Started Guide](/guides/developer/index.md)** to help you set up credentials and make your first call.\n{% /admonition %}\n\nBefore you begin {% .title-2 .m-t-5 %}\n\nTo use this API reference effectively, you should have:\n\n- Received Valid [API credentials from Wise](/guides/developer/auth-and-security/index.md) (Client ID and Client Secret)\n- Understand OAuth 2.0 authentication\n- Be familiar with RESTful API concepts\n\nCore API resources {% .title-2 .m-t-5 .m-b-0 %}\n\n| Resource | Purpose |\n|----------|---------|\n| **[Quote](/api-reference/quote)** | Exchange rate and fee calculations |\n| **[Recipient](/api-reference/recipient)** | Beneficiary account management |\n| **[Transfer](/api-reference/transfer)** | Payment creation and execution |\n| **[Balance](/api-reference/balance)** | Multi-currency account operations |\n| **[Profile](/api-reference/profile)** | Account ownership details |\n| **[Rate](/api-reference/rate)** | Current and historical exchange rates |\n\n**Not sure which workflow to build?**
\nStart with our [Integration Guides](/guides/product/send-money/use-cases/index.md) for step-by-step implementation examples.{% .m-t-3 .m-b-5 %}\n"
servers:
- url: https://api.wise.com
description: Production Environment
- url: https://api.wise-sandbox.com
description: Sandbox Environment
tags:
- name: rate
x-displayName: Exchange Rates
description: 'Current and historical exchange rates by currency routes.
'
paths:
/v1/rates:
get:
operationId: rateGet
summary: Retrieve current rates
description: '{% admonition type="warning" %}
The `from`, `to`, and `group` parameters are not testable in our Sandbox environment at this time.
{% /admonition %}
`GET /v1/rates`
Fetch latest exchange rates of all currencies.
`GET /v1/rates?source=EUR&target=USD`
Fetch latest exchange rate of one currency pair.
`GET /v1/rates?source=EUR&target=USD&time=2019-02-13T14:53:01`
Fetch exchange rate of specific historical timestamp.
`GET /v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=day`
Fetch exchange rate history over period of time with daily interval.
`GET /v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=hour`
Fetch exchange rate history over period of time with hourly interval.
`GET /v1/rates?source=EUR&target=USD&from=2019-02-13T14:53:01&to=2019-03-13T14:53:01&group=minute`
Fetch exchange rate history over period of time with 1 minute interval.
{% admonition type="warning" %}
This endpoint only supports Bearer authentication for non-Affiliate partners.
{% /admonition %}
'
tags:
- rate
security:
- UserToken: []
- PersonalToken: []
parameters:
- name: source
in: query
required: false
description: Source (send) currency code.
schema:
type: string
example: EUR
- name: target
in: query
required: false
description: Target (receive) currency code.
schema:
type: string
example: USD
- name: time
in: query
required: false
description: 'Timestamp to get historic exchange rate.
Supports only Timestamp (combined date and time). Timezone offset is supported but optional.
Supported examples: `2019-03-13T14:53:01` or `2019-03-13T14:53:01+0100`.
'
schema:
type: string
example: '2019-02-13T14:53:01'
- name: from
in: query
required: false
description: 'Period start date/time to get exchange rate history.
Supports Timestamp (combined date and time) or Date (date only).
Supported examples: `2019-03-13T14:53:01` or `2019-03-13`.
'
schema:
type: string
example: '2019-02-13T14:53:01'
- name: to
in: query
required: false
description: 'Period end date/time to get exchange rate history.
Supports Timestamp (combined date and time) or Date (date only).
Timezone offset is supported but optional.
Supported examples: `2019-03-13T14:53:01+0100` or `2019-03-13+0100`.
'
schema:
type: string
example: '2019-03-13T14:53:01'
- name: group
in: query
required: false
description: Interval for history grouping.
schema:
type: string
enum:
- day
- hour
- minute
example: day
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: List of exchange rate values which meet your query criteria.
content:
application/json:
schema:
type: array
items:
type: object
description: The resulting Rate object.
required:
- rate
- source
- target
- time
properties:
rate:
type: number
format: double
description: Exchange rate value.
example: 1.166
source:
type: string
description: Source (send) currency code.
example: EUR
target:
type: string
description: Target (receive) currency code.
example: USD
time:
type: string
description: Timestamp for exchange rate.
example: 2018-08-31T10:43:31+0000
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'400':
description: Invalid request.
content:
application/json:
examples:
badRequest:
value:
error: Bad Request
message: Invalid parameters
path: null
status: 400
timestamp: '2026-01-01T06:56:29.923935466Z'
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'429':
$ref: '#/components/responses/429'
components:
parameters:
X-External-Correlation-Id:
x-global: true
name: X-External-Correlation-Id
in: header
required: false
description: 'Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. [Learn more](/guides/developer/headers/correlation-id).
'
schema:
type: string
format: uuid
maxLength: 36
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
responses:
'429':
x-global: true
description: Rate limit exceeded. Retry after the number of seconds specified in the `Retry-After` header.
headers:
Retry-After:
description: Number of seconds to wait before retrying the request.
schema:
type: integer
example: 5
X-Rate-Limited-By:
description: Identifies the rate limiter that triggered the 429 response.
schema:
type: string
example: wise-public-api
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
content:
application/json:
schema:
type: object
headers:
X-External-Correlation-Id:
x-global: true
description: Echoed back when `X-External-Correlation-Id` was included in the request. [Learn more](/guides/developer/headers/correlation-id).
schema:
type: string
format: uuid
maxLength: 36
example: f47ac10b-58cc-4372-a567-0e02b2c3d479
x-trace-id:
x-global: true
description: Unique trace identifier assigned by Wise. Useful when contacting support about a specific request.
schema:
type: string
example: fba501b6d453b96789f52338f019341f
securitySchemes:
UserToken:
type: http
scheme: bearer
bearerFormat: JWT
description: 'User Access Token for making API calls on behalf of a Wise user.
Can be obtained via two OAuth 2.0 flows:
- **registration_code grant**: For partners creating users via API
- **authorization_code grant**: For partners using Wise''s authorization page
Access tokens are valid for 12 hours and can be refreshed using a refresh token.
'
PersonalToken:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Personal API Token for individual personal or small business users.
Generated from Wise.com > Settings > Connect and manage apps > API tokens.
Has limited API access compared to OAuth tokens (PSD2 restrictions apply for EU/UK users).
'
ClientCredentialsToken:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Application-level token for partner operations that don''t require a specific user context, such as bulk settlement and card spend controls.
Obtained via `POST /oauth/token` with Basic Authentication (client-id:client-secret) and `grant_type=client_credentials`.
Valid for 12 hours. No refresh token — fetch a new token when expired.
See [create an OAuth token](/api-reference/oauth-token/oauthtokencreate) for details.
'
BasicAuth:
type: http
scheme: basic
description: 'Basic Authentication using your Client ID and Client Secret as the username and password.
Client credentials are provided by Wise when your partnership begins. See [Getting Started](/guides/developer) for details.
'
x-tagGroups:
- name: Authentication
tags:
- oauth-token
- name: Enhanced Security
tags:
- jose
- name: Users
tags:
- user
- claim-account
- name: Profiles
tags:
- profile
- activity
- address
- name: Verification
tags:
- kyc-review
- verification
- facetec
- name: Strong Customer Authentication
tags:
- sca-ott
- sca-sessions
- sca-pin
- sca-facemaps
- sca-device-fingerprints
- sca-otp
- user-security
- name: Balances
tags:
- balance
- balance-statement
- bank-account-details
- multi-currency-account
- name: Cards
tags:
- card
- card-sensitive-details
- 3ds
- card-kiosk-collection
- card-order
- card-transaction
- spend-limits
- spend-controls
- digital-wallet
- disputes
- name: Quotes
tags:
- quote
- rate
- comparison
- name: Recipients
tags:
- recipient
- contact
- name: Transfers
tags:
- transfer
- delivery-estimate
- currencies
- batch-group
- name: Funding
tags:
- payin-deposit-detail
- direct-debit-account
- bulk-settlement
- payins
- name: Webhooks
tags:
- webhook
- webhook-event
- name: Simulations
tags:
- simulation
- name: Partner Support
tags:
- case