openapi: 3.1.0
info:
title: Wise Platform 3ds verification 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: verification
x-displayName: Additional Verification
description: "In certain situations, additional evidence is required to verify customers and ensure we’re compliant with the KYC regulations.\n\nAdditional Verification APIs support a list of evidences that can be found in the [Supported Evidences guide](/guides/product/kyc/partner-kyc/supported-evidences).\n\nIf you use the [Customer Account with Partner KYC](/guides/product/kyc/partner-kyc) model and your customers are primarily based in the EU,\nrefer to this [Onboarding EU customers](/guides/product/kyc/partner-kyc/additional-verification#onboarding-eu-customers) guide\nfor instructions on how to use these APIs.\n\nIf you use the [Customer Account with Partner KYC](/guides/product/kyc/partner-kyc) model and you are onboarding high risk business customers\nbased primarily based in the US, refer to\nthis [Onboarding High Risk US Businesses](/guides/product/kyc/partner-kyc/additional-verification#onboarding-high-risk-us-businesses) guide for \ninstructions on how to use these APIs.\n"
paths:
/v3/profiles/{profileId}/additional-verification/upload-evidences:
post:
deprecated: true
tags:
- verification
summary: Upload Evidences (v3)
operationId: verificationUploadEvidencesV3
description: 'Uploads verification evidence for a specific profile.
The request body varies significantly between **Personal** and **Business** profiles.
'
security:
- UserToken: []
parameters:
- name: profileId
in: path
required: true
schema:
type: integer
format: int64
description: The unique identifier of the profile.
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- title: Personal Profile
type: object
description: Payload for Personal profile verification.
example:
accountPurpose: MOVING_SAVINGS
intendedCountries:
- deu
- esp
yearlyAnticipatedVolume: '0_2350'
mainSourceOfIncome: SALARY
annualIncome: '0_11500'
properties:
accountPurpose:
type: string
description: The primary reason for using the account.
enum:
- MOVING_SAVINGS
- SENDING_MONEY_TO_FRIENDS_OR_FAMILY
- GENERAL_LIVING_EXPENSES
- BUYING_GOODS_OR_SERVICES_ABROAD
- PAYING_FOR_MORTGAGE_OR_LOAN
- PAYING_BILLS
- RECEIVING_SALARY_OR_PENSION
- INVESTING
accountPurposeExplanation:
type: string
description: Additional reasons and specific examples for using Wise account. This is a free-text field.
intendedCountries:
type: array
description: 'List of ISO 3166-1 alpha-3 country codes.
Check the [lists of countries you can send money to with Wise](https://wise.com/help/articles/2571942/what-countries-can-i-send-to).
'
items:
type: string
yearlyAnticipatedVolume:
type: string
description: Expected yearly transaction volume in Euros.
enum:
- '0_2350'
- '2351_6000'
- '6001_11500'
- '11501_60000'
- '60001_175000'
- 175001_+
mainSourceOfIncome:
type: string
description: Primary source of income. Must be submitted with annualIncome.
enum:
- SALARY
- INVESTMENTS
- PENSION
- INHERITANCE
- LOAN
- OTHER
annualIncome:
type: string
description: Expected annual income in Euros. Must be submitted with mainSourceOfIncome.
enum:
- '0_11500'
- '11501_19000'
- '19001_28500'
- '28501_47500'
- '47501_75000'
- 75001_+
incomeExplanation:
type: string
description: Additional ways you earn money that were not identified in the provided documents. This is a free-text field.
- title: Business Profile
type: object
description: Payload for Business profile verification.
example:
businessUseCase:
- PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES
- PAYING_RENT_OR_UTILITIES
intendedCountries:
- deu
- esp
monthlyAnticipatedVolume: '0_1200'
mainSourceOfFunding: BUSINESS_LOAN
properties:
businessUseCase:
type: array
description: How the business intends to use the platform.
items:
type: string
enum:
- INVESTING_IN_FUNDS_STOCKS_BONDS_OR_SIMILAR
- DISTRIBUTING_COMPANY_PROFITS_OR_PAYING_DIVIDENDS
- PAYING_MORTGAGE_BANK_LOAN_INSURANCE_OR_CREDIT
- PAYING_FOR_GOODS_PROPERTIES_OR_SERVICES_ABROAD
- PAYING_RENT_OR_UTILITIES
- PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES
- PAYING_TAX_ON_PROFIT_OR_PROPERTY
- TRANSFER_WITHIN_COMPANY_OR_GROUP
- RECEIVE_INVESTMENTS_OR_FUNDS
- RECEIVE_PAYMENTS_FROM_CLIENTS
- DONATION
- OTHER
intendedCountries:
type: array
description: 'List of ISO 3166-1 alpha-3 country codes.
Check the [lists of countries you can send money to with Wise](https://wise.com/help/articles/2571942/what-countries-can-i-send-to).
'
items:
type: string
mainSourceOfFunding:
type: string
description: Primary source of business funding.
enum:
- REVENUE
- BUSINESS_LOAN
- FUNDING_AND_SHAREHOLDER_INVESTMENTS
- INVESTMENT_INCOME
- DONATIONS
- GRANTS
- OTHER
monthlyAnticipatedVolume:
type: string
description: Expected monthly transaction volume in Euros.
enum:
- '0_1200'
- '1201_6000'
- '6001_12000'
- '12001_60000'
- '60001_120000'
- '120001_235000'
- '235001_600000'
- '600001_1200000'
- '1200001_6000000'
- '6000001_12000000'
- 12000001_+
responses:
'204':
description: No Content - Evidence successfully uploaded.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'400':
description: 'Bad Request - Invalid request payload (e.g. no evidence, misspelled evidence, unexpected value).
Invalid evidence is populated in the response message.
Note that correct evidence might be successfully uploaded.
'
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden - The client is not authorized to perform this request.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'409':
description: 'Conflict - One or more evidences are already uploaded and can''t be re-submitted without an agent review.
Unacceptable evidence is populated in the response message.
'
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'
/v5/profiles/{profileId}/additional-verification/upload-evidences:
post:
tags:
- verification
summary: Upload Evidences
operationId: verificationUploadEvidences
description: 'Uploads verification evidence for a specific profile.
The request body varies significantly between **Personal** and **Business** profiles.
Submitting an evidence that was already uploaded will result in an attempt to update the evidence.
'
security:
- UserToken: []
parameters:
- name: profileId
in: path
required: true
schema:
type: integer
format: int64
description: The unique identifier of the profile.
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- title: Personal Profile
type: object
description: Payload for Personal profile verification.
example:
accountPurpose: MOVING_SAVINGS
intendedCountries:
- deu
- esp
yearlyAnticipatedVolume: '0_2350'
mainSourceOfIncome: SALARY
annualIncome: '0_11500'
properties:
accountPurpose:
type: string
description: The primary reason for using the account.
enum:
- MOVING_SAVINGS
- SENDING_MONEY_TO_FRIENDS_OR_FAMILY
- GENERAL_LIVING_EXPENSES
- BUYING_GOODS_OR_SERVICES_ABROAD
- PAYING_FOR_MORTGAGE_OR_LOAN
- PAYING_BILLS
- RECEIVING_SALARY_OR_PENSION
- INVESTING
accountPurposeExplanation:
type: string
description: Additional reasons and specific examples for using Wise account. This is a free-text field.
intendedCountries:
type: array
description: 'List of ISO 3166-1 alpha-3 country codes.
Check the [lists of countries you can send money to with Wise](https://wise.com/help/articles/2571942/what-countries-can-i-send-to).
'
items:
type: string
yearlyAnticipatedVolume:
type: string
description: Expected yearly transaction volume in Euros.
enum:
- '0_2350'
- '2351_6000'
- '6001_11500'
- '11501_60000'
- '60001_175000'
- 175001_+
mainSourceOfIncome:
type: string
description: Primary source of income. Must be submitted with annualIncome.
enum:
- SALARY
- INVESTMENTS
- PENSION
- INHERITANCE
- LOAN
- OTHER
annualIncome:
type: string
description: Expected annual income in Euros. Must be submitted with mainSourceOfIncome.
enum:
- '0_11500'
- '11501_19000'
- '19001_28500'
- '28501_47500'
- '47501_75000'
- 75001_+
incomeExplanation:
type: string
description: Additional ways you earn money that were not identified in the provided documents. This is a free-text field.
- title: Business Profile
type: object
description: Payload for Business profile verification.
example:
businessUseCase:
- PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES
- PAYING_RENT_OR_UTILITIES
intendedCountries:
- deu
- esp
monthlyAnticipatedVolume: '0_1200'
mainSourceOfFunding: BUSINESS_LOAN
properties:
businessUseCase:
type: array
description: How the business intends to use the platform.
items:
type: string
enum:
- INVESTING_IN_FUNDS_STOCKS_BONDS_OR_SIMILAR
- DISTRIBUTING_COMPANY_PROFITS_OR_PAYING_DIVIDENDS
- PAYING_MORTGAGE_BANK_LOAN_INSURANCE_OR_CREDIT
- PAYING_FOR_GOODS_PROPERTIES_OR_SERVICES_ABROAD
- PAYING_RENT_OR_UTILITIES
- PAYING_SUPPLIERS_CONTRACTORS_OR_EMPLOYEES
- PAYING_TAX_ON_PROFIT_OR_PROPERTY
- TRANSFER_WITHIN_COMPANY_OR_GROUP
- RECEIVE_INVESTMENTS_OR_FUNDS
- RECEIVE_PAYMENTS_FROM_CLIENTS
- DONATION
- OTHER
intendedCountries:
type: array
description: 'List of ISO 3166-1 alpha-3 country codes.
Check the [lists of countries you can send money to with Wise](https://wise.com/help/articles/2571942/what-countries-can-i-send-to).
'
items:
type: string
mainSourceOfFunding:
type: string
description: Primary source of business funding.
enum:
- REVENUE
- BUSINESS_LOAN
- FUNDING_AND_SHAREHOLDER_INVESTMENTS
- INVESTMENT_INCOME
- DONATIONS
- GRANTS
- OTHER
monthlyAnticipatedVolume:
type: string
description: Expected monthly transaction volume in Euros.
enum:
- '0_1200'
- '1201_6000'
- '6001_12000'
- '12001_60000'
- '60001_120000'
- '120001_235000'
- '235001_600000'
- '600001_1200000'
- '1200001_6000000'
- '6000001_12000000'
- 12000001_+
responses:
'207':
description: Multi-Status - Evidence(s) successfully uploaded, fully or partially.
content:
application/json:
schema:
type: object
description: Response payload for evidence upload result.
properties:
overallStatus:
type: string
description: Status of the entire request.
enum:
- SUCCESS
- PARTIAL_SUCCESS
- FAIL
results:
type: array
description: Results for each evidence.
items:
type: object
properties:
evidenceRequirementKey:
type: string
description: Name of the evidence.
result:
type: string
description: Result for the evidence.
enum:
- SUCCESS
- FAIL
message:
type: string
description: Explanation of result for the evidence.
examples:
success:
summary: Full success
value:
overallStatus: SUCCESS
results:
- evidenceRequirementKey: accountPurpose
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: annualIncome
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: intendedCountries
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: mainSourceOfIncome
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: yearlyAnticipatedVolume
result: SUCCESS
message: SUCCESS
partialSuccess:
summary: Partial success
value:
overallStatus: PARTIAL_SUCCESS
results:
- evidenceRequirementKey: accountPurpose
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: annualIncome
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: intendedCountries
result: FAIL
message: Could not update verification requirement at the moment
- evidenceRequirementKey: mainSourceOfIncome
result: SUCCESS
message: SUCCESS
- evidenceRequirementKey: yearlyAnticipatedVolume
result: SUCCESS
message: SUCCESS
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'400':
description: Bad Request - Invalid request payload (e.g. no evidence, misspelled evidence, unexpected value).
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden - The client is not authorized to perform this request.
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'
/v3/profiles/{profileId}/verification-status/upload-document:
post:
tags:
- verification
summary: Upload Document
operationId: verificationUploadDocument
description: 'Uploads verification documents for review. You can upload multiple files at once.
A valid document must fulfil these requirements:
- The document must be clear.
- The document needs to be a .jpg, .png., or .pdf file type up to 10MB in size.
'
security:
- UserToken: []
parameters:
- name: profileId
in: path
required: true
schema:
type: integer
format: int64
description: The profile ID (personal or business).
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
description: Request payload for uploading documents for verification
properties:
files:
type: string
format: binary
description: Path of the files to be uploaded.
example: '@/Users/test/file.png'
documentType:
type: string
description: 'Type of document being uploaded.
Read our guides on acceptable documents for each of the following:
- Source of wealth - [guide](/guides/product/kyc/partner-kyc/additional-verification#source-of-wealth-document)
- Id Proof - [guide](https://wise.com/help/articles/2949801/how-does-wise-verify-my-identity?origin=search-ID+coument+)
- Address Proof - [guide](https://wise.com/help/articles/2949804/how-does-wise-verify-my-address?origin=search-proof+of+address+)
- Trading Address Proof - [guide](/guides/product/kyc/partner-kyc/additional-verification#proof-of-trading-address-document)
- Business Authorisation Letter - [guide](/guides/product/kyc/partner-kyc/additional-verification#business-authorisation-letter-document)
'
enum:
- SOURCE_OF_WEALTH
- ID_PROOF
- ADDRESS_PROOF
- TRADING_ADDRESS_PROOF
- BUSINESS_AUTH_REP_PROOF_BY_AUTH_LETTER
required:
- files
- documentType
responses:
'204':
description: No Content - Document successfully uploaded.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'400':
description: Bad Request - Document cannot be uploaded in the current format. Check file size and extension.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden - The client is not authorized to perform this request.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'409':
description: Conflict - Document is already uploaded and cannot be re-submitted before review.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'413':
description: Payload Too Large - Requested file size is too large.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'415':
description: Unsupported Media Type - Request payload is in an unsupported format.
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'
/v3/profiles/{profileId}/verification-status/required-evidences:
get:
tags:
- verification
summary: Required Evidences
operationId: verificationGetRequiredEvidences
description: 'Fetches the required evidences for a profile to complete additional customer verification.
If one or more evidences are returned, the customer should submit those evidences using the upload-evidences endpoint.
See the [Supported Evidences guide](/guides/product/kyc/partner-kyc/supported-evidences) for the list of possible evidence types and how to submit them.
'
security:
- UserToken: []
parameters:
- name: profileId
in: path
required: true
schema:
type: integer
format: int64
description: The unique identifier of the profile.
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: OK - Successfully retrieved required evidences.
content:
application/json:
schema:
type: object
description: Response payload containing required evidences for a profile.
properties:
required_evidences:
type: array
description: List of evidence types required to complete verification.
items:
type: string
example:
required_evidences:
- SOURCE_OF_WEALTH
- INCOME
- USE_CASE_COUNTRIES
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden - The client is not authorized to perform this request.
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