openapi: 3.1.0
info:
title: Wise Platform 3ds recipient 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: recipient
x-displayName: Recipient Accounts
description: 'Recipient or beneficiary is the one who will receive the funds.
Recipient account endpoints use a mixture of our v1 and v2 APIs. Please ensure you address the right version to get the expected results.
{% admonition type="info" %}
All recipient IDs are cross compatible with v1 and v2.
{% /admonition %}
'
paths:
/v1/accounts:
get:
operationId: recipientListV1
summary: List recipient accounts (v1)
deprecated: true
description: '{% admonition type="warning" %}
This is a deprecated v1 endpoint. For new integrations please use the [v2 list endpoint](/api-reference/recipient/recipientlist).
{% /admonition %}
Fetch a list of the user''s recipient accounts. Use the `currency` and `profile` parameters to filter by currency and/or the owning user profile ID. This endpoint does not support pagination, so please filter by currency to ensure a reasonable response time.
Both query parameters are optional.
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: profileId
in: query
required: false
description: Filter by personal or business profile, returns only those owned by this profile.
schema:
type: integer
format: int64
- name: currency
in: query
required: false
description: Filter responses by currency.
schema:
type: string
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Array of v1 recipient account objects.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/recipient-v1'
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'
post:
operationId: recipientCreate
summary: Create a recipient account
description: "Creates a recipient account. A **recipient** is a person or institution who is the ultimate beneficiary of your payment.\n\nRecipient data includes three data blocks:\n- General data - the personal details of an individual and basic information about a business.\n- Bank details - account numbers, routing numbers, and other region-specific bank details.\n- Address details - country and street address of an individual or business.\n\nNotes:\n- Date of Birth is optional; consult the account-requirements APIs to confirm if it is needed or contact Wise Support.\n- `ownedByCustomer` is optional but strongly recommended for self-transfers.\n- Email recipients: testing transfers to email recipients in sandbox is not currently possible.\n\nRefund recipients:\n- Use `refund=true` query parameter.\n\n#### Bank account data\nThere are many different variations of bank account details needed depending on recipient target currency. For example:\n\n- **GBP** — sort code and account number\n- **BGN, CHF, DKK, EUR, GEL, GBP, NOK, PKR, PLN, RON, SEK** — IBAN\n- **USD** — routing number, account number, account type\n- **INR** — IFSC code, account number\n- etc.\n\n#### Address data\nRecipient address data is required only if target currency is **USD, PHP, THB or TRY**, or if the source currency is **USD or AUD**.\n\nAddress fields can include:\n- Country\n- State (US, Canada, Brazil)\n- City\n- Address line\n- Zip code\n\n#### accountHolderName rules\n- **Personal recipients:** Full names must include more than one name, and both first and last name must have more than one character. Numbers are not allowed.\n- **Business recipients:** Business names must be in full and can be a single name. The full name cannot be just a single character, but can be made up of a set of single characters (e.g. `\"A\"` is not permitted but `\"A 1\"` or `\"A1\"` is permitted).\n- Special characters `_()'*,.` are allowed for personal and business names.\n- In general the following regex describes permitted characters:\n `[0-9A-Za-zÀ-ÖØ-öø-ÿ-_()'*,.\\s]`.\n\nRecipient requirements vary depending on recipient type/currency route. A GBP example is provided here.
\nMany fields may be `null` in examples. To determine which fields are required for which currency, use the\n**[Recipient Requirements](/api-reference/recipient/recipientAccountRequirementsGet)** endpoint.\n\n#### Create a refund recipient account\n`POST /v1/accounts?refund=true`\n\nSometimes we may need to refund the transfer back to the sender - see the [transfer status here](/guides/product/send-money/tracking-transfers) for cases when this may happen.\n\nA refund recipient is a person or institution where we will refund transfer the money back to if necessary. This is not always a mandatory resource to create. If the funds are sent over a fast local payment network we can usually infer the refund recipient from the bank transaction that funded the transfer. Please discuss this with your Wise implementation team if you are unsure if the refund recipient is needed.\n\nIf funds are sent using a slow domestic payment network, or you are using a bulk settlement model, we may require you to share the bank details of the source bank account.\n\nThe format of the request payload for refund recipient creation will be different depending on the currency you will send transfers from. You may use the [account requirements](/api-reference/recipient/recipientaccountrequirementsget) endpoint to understand the payload requirements when creating the refund recipient for a specific currency.\n\nThe refund recipient account ID returned in the response is used as `sourceAccount` when [creating transfers](/guides/product/send-money/transfers).\n\n#### Create an email recipient account\n`POST /v1/accounts`\n\n{% admonition type=\"warning\" %}\nPlease contact us before attempting to use email recipients. We do not recommend using this feature except for certain use cases.\n{% /admonition %}\n\nIf you don't know recipient bank account details you can set up an email recipient; Wise will collect bank details directly from the recipient.\n\nWise will email your recipient with a link to collect their bank account details securely. After the bank account details have been provided Wise will complete your transfer.\n\nIt's best to confirm that this recipient type is available to your transaction by checking if the `\"type\": \"email\"` class is present in the response from `GET /v1/quotes/{quoteId}/account-requirements` — see **[account requirements](/api-reference/recipient/recipientAccountRequirementsGet)** for more information on how to use this endpoint.\n\nIf planning to send multiple currencies to a single recipient, you will need to create a separate email recipient resource for this beneficiary, for every currency you intend to send to them. We highly encourage you to provide the `{profileId}` if your recipient is receiving a payment from your Business account, especially if you have multiple businesses, or have multiple users administrating your business account.\n\nPlease be aware of the following caveats:\n- Testing of transfers to email recipients in sandbox is not currently possible.\n- Recipients will be required to enter bank details **every time a payment is made**.\n- We highly encourage you to provide the `profileId` if your recipient is receiving a payment from your Business account, especially if you have multiple businesses, or have multiple users administrating your business account.\n- Please refer to our **[help page](https://wise.com/help/articles/2932105/can-i-send-money-to-someone-with-only-their-email-address)** on how this works and any additional constraints not mentioned in this section.\n"
tags:
- recipient
security:
- UserToken: []
parameters:
- name: refund
in: query
required: false
description: When true, creates a refund recipient account.
schema:
type: boolean
default: false
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/recipient-create-request'
examples:
GBP recipient:
summary: GBP recipient
value:
currency: GBP
type: sort_code
profile: 30000000
ownedByCustomer: true
accountHolderName: John Doe
details:
legalType: PRIVATE
sortCode: '040075'
accountNumber: '37778842'
dateOfBirth: '1961-01-01'
Email recipient:
summary: Email recipient
value:
profile: 30000000
accountHolderName: John Doe
currency: EUR
type: email
details:
email: john.doe@transfer-world.com
responses:
'200':
description: Recipient account created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/recipient'
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 — validation error.
content:
application/json:
schema:
type: object
description: Recipient creation validation error response.
properties:
timestamp:
type: string
description: Timestamp of occurrence (ISO-8601 timestamp).
example: '2024-12-06T06:43:52.472471344Z'
errors:
type: array
description: List of validation errors.
items:
type: object
properties:
code:
type: string
description: Error code (e.g. NOT_VALID).
example: NOT_VALID
message:
type: string
description: Human-readable error message.
example: Unknown bank code. Please check the sort code is correct, or contact customer support for more information.
path:
type: string
description: Field associated with the error.
example: sortCode
arguments:
type: array
description: Field with error as well as input value.
items:
type: string
example:
- sortCode
- '231479'
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'401':
description: Unauthorized.
content:
application/json:
examples:
UnauthorizedResponse:
value:
error_description: Invalid token
error: invalid_token
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'
/v2/accounts:
get:
operationId: recipientList
summary: List recipient accounts
description: 'Fetch a list of the user''s recipient accounts. Use the `profileId` parameter to filter by the profile who created the accounts, you should do this based on the personal or business profile ID you have linked to, based on your use case. Other filters are listed below for your convenience, for example `currency` is a useful filter to use when presenting the user a list of recipients to choose from in the case they have already submitted the target currency in your flow.
#### Pagination
Pagination is supported for this endpoint. The response includes the `seekPositionForNext` and `size` parameters to manage this.
It works by setting `size` and `seekPosition` parameters in the call. Set the value in the `seekPositionForNext` of the previous response into the `seekPosition` parameter of your subsequent call in order to get the next page. To get the current page again, use the `seekPositionForCurrent` value.
#### Sorting
You can also set the `sort` parameter to control the sorting of the response, for example:
`?sort=id,asc` sort by `id` ascending.
`?sort=id,desc` sort by `id` descending.
`?sort=currency,asc` sort by currency ascending.
All query parameters are optional.
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: creatorId
in: query
required: false
description: Creator of the account.
schema:
type: integer
format: int64
- name: profileId
in: query
required: false
description: Filter by personal or business profile. Defaults to the personal profile.
schema:
type: integer
format: int64
- name: profile
in: query
required: false
description: Alias for `profileId`.
schema:
type: integer
format: int64
- name: currency
in: query
required: false
description: Filter responses by currency. Comma separated values supported (e.g. `USD,GBP`).
schema:
type: string
- name: active
in: query
required: false
description: Filter by whether this profile is active. Defaults to `true`.
schema:
type: boolean
default: true
- name: type
in: query
required: false
description: Filter responses by account type. Comma separated values supported (e.g. `iban,swift_code`).
schema:
type: string
- name: ownedByCustomer
in: query
required: false
description: Filter to get accounts owned by the customer or not. Leave out to get all accounts.
schema:
type: boolean
- name: size
in: query
required: false
description: Page size of the response. Defaults to a maximum of 20.
schema:
type: integer
format: int32
maximum: 20
- name: seekPosition
in: query
required: false
description: Account ID to start the page of responses from. `null` if no more pages.
schema:
type:
- integer
- 'null'
format: int64
- name: sort
in: query
required: false
description: Sorting strategy for the response. Comma separated options - firstly either `id` or `currency`, followed by `asc` or `desc` for direction.
schema:
type: string
example: id,asc
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Paginated list of recipient accounts.
content:
application/json:
schema:
type: object
properties:
content:
type: array
description: List of recipient accounts returned for this page.
items:
$ref: '#/components/schemas/recipient'
seekPositionForNext:
type: integer
format: int64
description: Seek position for the next page (use as `seekPosition` to fetch the next page).
seekPositionForCurrent:
type: integer
format: int64
description: Seek position for the current page.
sort:
type: object
description: Sort metadata.
properties:
empty:
type: boolean
sorted:
type: boolean
unsorted:
type: boolean
size:
type: integer
format: int32
description: Page size returned.
example: 20
example:
content:
- id: 40000000
creatorId: 41000000
profileId: 30000000
name:
fullName: John Doe
givenName: null
familyName: null
middleName: null
patronymicName: null
cannotHavePatronymicName: null
currency: GBP
country: GB
type: SortCode
legalEntityType: PERSON
active: true
details:
reference: null
sortCode: '040075'
accountNumber: '37778842'
hashedByLooseHashAlgorithm: ad245621b974efa3ef870895c3wer419a3f01af18a8a5790b47645dba6304194
commonFieldMap:
accountNumberField: accountNumber
bankCodeField: sortCode
hash: 666ef880f8aa6113fa112ba6531d3ed2c26dd9fgbd7de5136bfb827a6e800479
accountSummary: (04-00-75) 37778842
longAccountSummary: GBP account ending in 8842
displayFields:
- key: details/sortCode
label: UK sort code
value: 04-00-75
- key: details/accountNumber
label: Account number
value: '37778842'
isInternal: false
ownedByCustomer: false
seekPositionForNext: 40000001
seekPositionForCurrent: 40000000
sort:
empty: true
sorted: false
unsorted: true
size: 20
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'401':
description: Unauthorized.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden.
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'
/v1/accounts/{accountId}:
get:
operationId: recipientGetV1
summary: Get account by ID (v1)
deprecated: true
description: '{% admonition type="warning" %}
This is a deprecated v1 endpoint. For new integrations please use the [v2 get endpoint](/api-reference/recipient/recipientget).
{% /admonition %}
Get recipient account info by ID.
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: V1 recipient account details.
content:
application/json:
schema:
$ref: '#/components/schemas/recipient-v1'
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'
/v2/accounts/{accountId}:
get:
operationId: recipientGet
summary: Get account by ID
description: 'Get recipient account info by ID.
{% admonition type="info" %}
V1 and v2 versions are cross compatible, but the v2 endpoint provides additional features.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Recipient account details.
content:
application/json:
schema:
$ref: '#/components/schemas/recipient'
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'
delete:
operationId: recipientDeactivate
summary: Deactivate a recipient account
description: 'Deletes a recipient by changing its status to inactive (`"active": false`).
Requesting to delete a recipient that is already inactive returns HTTP 403 (Forbidden).
{% admonition type="info" %}
Only active recipients can be deleted and a recipient cannot be reactivated, however you can create a new recipient with the same details instead if necessary.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Recipient returned with `active=false`.
content:
application/json:
schema:
$ref: '#/components/schemas/recipient'
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'
/v1/quotes/{quoteId}/account-requirements:
get:
operationId: recipientAccountRequirementsGet
summary: Retrieve recipient account requirements dynamically
description: '{% admonition type="info" %}
Please note that to use v1.1 `Accept-Minor-Version: 1` request header must be set.
{% /admonition %}
`GET /v1/quotes/{quoteId}/account-requirements`
`POST /v1/quotes/{quoteId}/account-requirements`
`GET /v1/account-requirements?source=EUR&target=USD&sourceAmount=1000`
You can use the data returned by this API to build a dynamic user interface for recipient creation. The `GET` and `POST` account-requirements endpoints help you to figure out which fields are required to create a valid recipient for different currencies. This is a step-by-step guide on how these endpoints work.
Use the `GET` endpoint to learn what datapoints are required to send a payment to your beneficiary. As you build that form, use the POST endpoint to learn if any additional datapoints are required as a result of passing a field that has `"refreshRequirementsOnChange": true` in the `GET` response. You should be posting the same recipient account payload that will be posted to `/v1/accounts`.
An example of this would be `address.country`. Some countries, like the United States, have a lower level organization, `"state"` or `"territory"`. After POSTing the recipient payload with address.country = "US", the list of possible states will appear in the response.
The third endpoint above is used to get account requirements for a specific currency route and amount without referring to a quote but with the amount, source and target currencies passed as URL parameters. Generally this approach is not recommended, you should have your user create a quote resource first and use this to generate the recipient account requirements. This is because some payout methods will only surface when the profile-context is known, for example (at the time of this writing), Business Payments to Chinese Yuan use a different payout method than what is revealed by `GET /v1/account-requirements?source=USD&target=CNY&sourceAmount=1000`.
All new integrations should use the v1.1 of `GET` and `POST` account requirements, enabled using the `Accept-Minor-Version` header. It enables you to fetch the requirements including both the recipient name and email fields in the dynamic form, simplifying implementation of the form. Name and email address dynamic fields are required to support currencies such as KRW, JPY and RUB, and also remove the need for manual name validation.
These endpoints allow use of both v1 and v2 quotes using long or UUID based IDs, supporting legacy implementations using v1 quotes.
These endpoints accept an optional query parameter **originatorLegalEntityType**. When the transfer is initiated by a [Third Party Partner](/guides/product/kyc/partner-accounts) we are not aware whether the actual sender is a business or person. In such cases, this parameter should be passed to receive correct requirements. The legal entity type should be one of the following values: `BUSINESS`, `PRIVATE`. This parameter is optional and the default value is the type of the partner profile.
#### Collecting Recipient Address
Normally our account requirements will instruct when a recipient address is required. However, in some situations it''s desirable to force the requirement so that an address can be provided to Wise. To do this, add the query parameter `?addressRequired=true` to your request and address will always be returned as a required field.
{% admonition type="warning" %}
Address requirement fields are subject to change. Your integration should be built in a way to handle unrecognized or changed fields.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: quoteId
in: path
required: true
description: Quote ID (supports long or UUID based IDs).
schema:
type: string
- name: originatorLegalEntityType
in: query
required: false
description: Legal entity type override for the actual sender.
schema:
type: string
enum:
- BUSINESS
- PRIVATE
- name: addressRequired
in: query
required: false
description: Set to true so address is always required.
schema:
type: boolean
default: false
- name: Accept-Minor-Version
in: header
required: false
description: Set to `1` to enable v1.1.
schema:
type: integer
enum:
- 1
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Dynamic account requirements for building a recipient form.
content:
application/json:
schema:
$ref: '#/components/schemas/account-requirements-response'
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'401':
description: Unauthorized.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'403':
description: Forbidden.
headers:
X-External-Correlation-Id:
$ref: '#/components/headers/X-External-Correlation-Id'
x-trace-id:
$ref: '#/components/headers/x-trace-id'
'404':
description: Not Found.
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'
post:
operationId: recipientAccountRequirementsPost
summary: Retrieve recipient account requirements dynamically (step-by-step)
description: 'POST the same recipient account payload that you will POST to `/v1/accounts`.
Use this endpoint after setting any field that has `refreshRequirementsOnChange=true` in the GET response,
to discover any additional required fields.
See the [GET endpoint](/api-reference/recipient/recipientaccountrequirementsget) for a full overview of how the account requirements flow works.
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: quoteId
in: path
required: true
description: Quote ID (supports long or UUID based IDs).
schema:
type: string
- name: originatorLegalEntityType
in: query
required: false
description: Legal entity type override for the actual sender.
schema:
type: string
enum:
- BUSINESS
- PRIVATE
- name: Accept-Minor-Version
in: header
required: false
description: Set to `1` to enable v1.1.
schema:
type: integer
enum:
- 1
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/recipient-create-request'
responses:
'200':
description: Updated account requirements based on provided data.
content:
application/json:
schema:
$ref: '#/components/schemas/account-requirements-response'
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'
/v1/accounts/{accountId}/quotes/{quoteId}/compatibility:
post:
operationId: recipientCompatibilityCheckV1
summary: Check account and quote compatibility (v1)
deprecated: true
description: '{% admonition type="warning" %}
This is a deprecated v1 endpoint. For new integrations please use the [v2 compatibility endpoint](/api-reference/recipient/recipientcompatibilitycheck).
{% /admonition %}
{% admonition type="info" %}
Use this version if you are fetching recipients through the v1 API. There are no functional differences between v1 and v2, but the field paths referenced in the response differ between the v1 and v2 recipient resources.
{% /admonition %}
Use this endpoint to check the compatibility of a recipient account with a quote before creating a transfer. This validation includes:
- Re-validating the recipient account details
- Checking all required fields are present (e.g., recipient address for USD transfers)
- Verifying account details with the recipient''s bank (for supported currencies)
This endpoint is optional but recommended to identify potential issues before transfer creation.
{% admonition type="info" %}
The confirmations field is only populated for currencies with recipient verification enabled. If absent, only standard validations apply.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- name: quoteId
in: path
required: true
description: Quote ID.
schema:
type: string
format: uuid
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Compatibility result including any verification outcomes. See [Verifying Recipient Details](/guides/developer/api-guides/recipient-verification) for details on handling the `confirmations` object.
content:
application/json:
schema:
type: object
properties:
accountId:
type: integer
format: int64
description: Recipient account ID.
example: 40000000
quoteId:
type: string
description: Quote ID.
example: 00000000-0000-0000-0000-000000000000
confirmations:
$ref: '#/components/schemas/confirmations'
example:
accountId: 40000000
quoteId: 00000000-0000-0000-0000-000000000000
confirmations:
acceptedOutcomes: false
acceptedAt: null
quoteId: 00000000-0000-0000-0000-000000000000
outcomes:
- type: NAME_MATCHING
outcome: PARTIAL_FAILURE
requiresCustomerAcceptance: true
fieldsChecked:
- accountHolderName
- details/accountNumber
message: The name entered is slightly different to the name on the account.
providedName: John Doe
resolvedName: Joe Doe
recommendedUpdates:
- path: accountHolderName
value: Joe Doe
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'
/v2/accounts/{accountId}/quotes/{quoteId}/compatibility:
post:
operationId: recipientCompatibilityCheck
summary: Check account and quote compatibility
description: 'Use this endpoint to check the compatibility of a recipient account with a quote before creating a transfer. This validation includes:
- Re-validating the recipient account details
- Checking all required fields are present (e.g., recipient address for USD transfers)
- Verifying account details with the recipient''s bank (for supported currencies)
This endpoint is optional but useful to identify potential issues before transfer creation.
{% admonition type="info" %}
The confirmations field is only populated for currencies with recipient verification enabled. If absent, only standard validations apply.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- name: quoteId
in: path
required: true
description: Quote ID.
schema:
type: string
format: uuid
- $ref: '#/components/parameters/X-External-Correlation-Id'
responses:
'200':
description: Compatibility result including any verification outcomes. See [Verifying Recipient Details](/guides/developer/api-guides/recipient-verification) for details on handling the `confirmations` object.
content:
application/json:
schema:
type: object
properties:
accountId:
type: integer
format: int64
description: Recipient account ID.
example: 40000000
quoteId:
type: string
description: Quote ID.
example: 00000000-0000-0000-0000-000000000000
confirmations:
$ref: '#/components/schemas/confirmations'
example:
accountId: 40000000
quoteId: 00000000-0000-0000-0000-000000000000
confirmations:
acceptedOutcomes: false
acceptedAt: null
quoteId: 00000000-0000-0000-0000-000000000000
outcomes:
- type: NAME_MATCHING
outcome: PARTIAL_FAILURE
requiresCustomerAcceptance: true
fieldsChecked:
- name/fullName
- details/accountNumber
message: The name entered is slightly different to the name on the account.
providedName: John Doe
resolvedName: Joe Doe
recommendedUpdates:
- path: name/fullName
value: Joe Doe
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'
/v2/accounts/{accountId}/confirmations:
patch:
operationId: recipientConfirmationsAccept
summary: Accept confirmation outcomes
description: 'When `requiresCustomerAcceptance` is `true` in the confirmation outcomes, the recipient cannot be used for a transfer until the customer explicitly confirms the details. You must present the mismatch to the customer and get their approval.
{% admonition type="warning" %}
If the confirmation result contained a `quoteId` then the acceptance request must also specify that as part of the query parameters, otherwise the request will be rejected.
{% /admonition %}
'
tags:
- recipient
security:
- UserToken: []
parameters:
- name: accountId
in: path
required: true
description: Recipient account ID.
schema:
type: integer
format: int64
- name: quoteId
in: query
required: false
description: Required if the confirmation result contained a `quoteId`.
schema:
type: string
format: uuid
- $ref: '#/components/parameters/X-External-Correlation-Id'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- acceptedOutcomes
properties:
acceptedOutcomes:
type: boolean
description: Set to `true` to accept the confirmation outcomes.
example: true
responses:
'200':
description: Recipient with updated confirmation status.
content:
application/json:
schema:
$ref: '#/components/schemas/recipient'
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:
schemas:
recipient:
type: object
title: Recipient Account
x-tags:
- recipient
description: "The `accountSummary` and `longAccountSummary` fields can be used to represent the recipient's details in your UI. The `displayFields` array allows you to build a UI containing all the dynamic fields of a recipient individually. \nIn order to use these fields, you would need to POST using the v1 endpoint to create the recipient account, and then GET using the v2 endpoint to retrieve these fields.\n\nThe v2 resource also includes the `hash` field that can be used to track recipient details changes. This is useful for re-running any validation checks your system performs on the recipient, for example against fraud engines. The hash will remain constant unless the recipient's name or information in the `details` object changes.\n"
properties:
id:
type: integer
format: int64
description: ID of the recipient. Use the returned id as `sourceAccount` to specify the refund recipient when creating transfers.
example: 40000000
creatorId:
type: integer
format: int64
description: Account entity that owns the recipient account.
example: 41000000
profileId:
type: integer
format: int64
description: Specific profile that owns the recipient account.
example: 30000000
name:
type: object
description: Recipient name details.
properties:
fullName:
type: string
description: Recipient full name.
example: John Doe
givenName:
type:
- string
- 'null'
description: Recipient first name.
example: null
familyName:
type:
- string
- 'null'
description: Recipient surname.
example: null
middleName:
type:
- string
- 'null'
description: Recipient middle name.
example: null
patronymicName:
type:
- string
- 'null'
description: Recipient patronymic name (when applicable).
example: null
cannotHavePatronymicName:
type:
- boolean
- 'null'
description: Indicates if the recipient cannot have a patronymic name (when applicable).
example: null
currency:
type: string
description: 3 character currency code.
example: GBP
country:
type: string
description: 2 character country code.
example: GB
type:
type: string
description: Recipient type.
example: SortCode
legalEntityType:
type: string
description: Entity type of recipient.
example: PERSON
active:
type: boolean
description: Status of the recipient.
example: true
details:
type: object
description: Account details (currency/type-specific). The keys present vary by currency route and recipient type (e.g., sort code, IBAN, SWIFT, email).
properties:
reference:
type:
- string
- 'null'
description: Recipient reference (present for some routes).
example: null
sortCode:
type: string
description: Recipient bank sort code (GBP example).
example: '040075'
accountNumber:
type: string
description: Recipient bank account number (GBP example).
example: '37778842'
hashedByLooseHashAlgorithm:
type: string
description: Recipient account hash.
example: ad245621b974efa3ef870895c3wer419a3f01af18a8a5790b47645dba6304194
additionalProperties: true
commonFieldMap:
type: object
description: Map of key lookup fields on the account.
example:
accountNumberField: accountNumber
bankCodeField: sortCode
hash:
type: string
description: Account hash for change tracking.
example: 666ef880f8aa6113fa112ba6531d3ed2c26dd9fgbd7de5136bfb827a6e800479
accountSummary:
type: string
description: Summary of account details for ease of lookup.
example: (04-00-75) 37778842
longAccountSummary:
type: string
description: Account details summary.
example: GBP account ending in 8842
displayFields:
type: array
description: Lookup fields (key/label/value) for rendering a UI.
items:
type: object
properties:
key:
type: string
description: Account identifier key name.
label:
type: string
description: Account identifier display label.
value:
type: string
description: Account identifier value.
example:
- key: details/sortCode
label: UK sort code
value: 04-00-75
- key: details/accountNumber
label: Account number
value: '37778842'
isInternal:
type: boolean
description: Indicates whether recipient is internal.
example: false
ownedByCustomer:
type: boolean
description: If recipient account belongs to profile owner.
example: false
confirmations:
type: object
description: 'Verification results for the recipient''s details. Only populated for currencies with recipient verification enabled (KRW, INR, IDR, EUR). See the [Verifying Recipient Details](/guides/developer/api-guides/recipient-verification) guide for how to handle these.
'
properties:
acceptedOutcomes:
type: boolean
description: Whether we've received an explicit customer acceptance.
example: false
acceptedAt:
type:
- string
- 'null'
format: date-time
description: Timestamp indicating time of outcome acceptance, `null` if has not been accepted.
example: null
quoteId:
type:
- string
- 'null'
description: If the confirmation check was run as part of a quote compatibility check, then the `quoteId` will be on the result. If `quoteId` is present, then the outcome acceptance will need the `quoteId` to be specified as well.
example: null
outcomes:
type: array
description: Array of confirmation outcomes. At the moment it is safe to assume that there is only one element in the outcomes list.
items:
type: object
properties:
type:
type: string
description: 'The type of confirmation. Possible values: `ACCOUNT_EXISTENCE`, `NAME_MATCHING`, `NAME_RESOLUTION`.'
example: NAME_MATCHING
timestamp:
type: string
format: date-time
description: Timestamp of when the confirmation check was performed.
example: '2024-11-11T23:58:11.105916743Z'
outcome:
type: string
description: 'The actual outcome of the confirmation. Possible values: `SUCCESS`, `PARTIAL_FAILURE`, `FAILURE`, `COULD_NOT_CHECK`.'
example: PARTIAL_FAILURE
requiresCustomerAcceptance:
type: boolean
description: Whether we require customer acceptance. Whether this value is true or false is dependent on the currency and the nature of the confirmation.
example: true
fieldsChecked:
type: array
description: Fields we used to confirm the account.
items:
type: string
example:
- name/fullName
- details/accountNumber
providedName:
type: string
description: The name that the customer provided when creating the recipient account. Only populated for NAME_MATCHING and NAME_RESOLUTION types for certain outcomes.
example: John Doe
resolvedName:
type: string
description: The name that we resolved during name matching or name resolution.
example: Joe Doe
message:
type: string
description: Customer facing message about the outcome of the check.
example: The name entered is slightly different to the name on the account.
recommendedUpdates:
type: array
description: Shows what are the correct values for some of the fields we've checked.
items:
type: object
properties:
path:
type: string
description: The field path to update.
example: name/fullName
value:
type: string
description: The recommended value for the field.
example: Joe Doe
recipient-v1:
type: object
title: Recipient Account (v1)
description: 'Deprecated v1 recipient account object. For new integrations, use the v2 resource which includes additional fields such as `displayFields`, `accountSummary`, and `longAccountSummary`.
'
properties:
id:
type: integer
format: int64
description: Recipient account ID.
example: 40000000
business:
type:
- integer
- 'null'
format: int64
description: Business profile ID (if applicable).
example: null
profile:
type: integer
format: int64
description: Personal or business profile ID.
example: 30000000
accountHolderName:
type: string
description: Recipient full name.
example: John Doe
currency:
type: string
description: 3 character currency code.
example: GBP
country:
type: string
description: 2 character country code.
example: GB
type:
type: string
description: Recipient type.
example: sort_code
details:
type: object
description: Currency-specific fields. All possible fields are returned, with unused fields set to `null`.
properties:
legalType:
type: string
description: Recipient legal type.
example: PRIVATE
sortCode:
type: string
description: Recipient bank sort code (GBP example).
example: '040075'
accountNumber:
type: string
description: Recipient bank account number (GBP example).
example: '37778842'
additionalProperties: true
user:
type: integer
format: int64
description: User that created or owns this recipient.
example: 10000000
active:
type: boolean
description: Status of the recipient.
example: true
ownedByCustomer:
type: boolean
description: Whether this account is owned by the sending user.
example: false
confirmations:
type: object
description: Verification results for the recipient's details.
properties:
acceptedOutcomes:
type: boolean
example: false
acceptedAt:
type:
- string
- 'null'
format: date-time
example: null
quoteId:
type:
- string
- 'null'
example: null
outcomes:
type: array
items:
type: object
confirmations:
type: object
description: 'Verification results for the recipient''s details. Only populated for currencies with recipient verification enabled (KRW, INR, IDR, EUR). See the [Verifying Recipient Details](/guides/developer/api-guides/recipient-verification) guide for how to handle these.
'
properties:
acceptedOutcomes:
type: boolean
description: Whether we've received an explicit customer acceptance.
example: false
acceptedAt:
type:
- string
- 'null'
format: date-time
description: Timestamp indicating time of outcome acceptance, `null` if has not been accepted.
example: null
quoteId:
type:
- string
- 'null'
description: If the confirmation check was run as part of a quote compatibility check, then the `quoteId` will be on the result. If `quoteId` is present, then the outcome acceptance will need the `quoteId` to be specified as well.
example: null
outcomes:
type: array
description: Array of confirmation outcomes. At the moment it is safe to assume that there is only one element in the outcomes list.
items:
type: object
properties:
type:
type: string
description: 'The type of confirmation. Possible values: `ACCOUNT_EXISTENCE`, `NAME_MATCHING`, `NAME_RESOLUTION`.'
example: NAME_MATCHING
timestamp:
type: string
format: date-time
description: Timestamp of when the confirmation check was performed.
example: '2024-11-11T23:58:11.105916743Z'
outcome:
type: string
description: 'The actual outcome of the confirmation. Possible values: `SUCCESS`, `PARTIAL_FAILURE`, `FAILURE`, `COULD_NOT_CHECK`.'
example: PARTIAL_FAILURE
requiresCustomerAcceptance:
type: boolean
description: Whether we require customer acceptance. Whether this value is true or false is dependent on the currency and the nature of the confirmation.
example: true
fieldsChecked:
type: array
description: Fields we used to confirm the account.
items:
type: string
example:
- name/fullName
- details/accountNumber
providedName:
type: string
description: The name that the customer provided when creating the recipient account. Only populated for NAME_MATCHING and NAME_RESOLUTION types for certain outcomes.
example: John Doe
resolvedName:
type: string
description: The name that we resolved during name matching or name resolution.
example: Joe Doe
message:
type: string
description: Customer facing message about the outcome of the check.
example: The name entered is slightly different to the name on the account.
recommendedUpdates:
type: array
description: Shows what are the correct values for some of the fields we've checked.
items:
type: object
properties:
path:
type: string
description: The field path to update.
example: name/fullName
value:
type: string
description: The recommended value for the field.
example: Joe Doe
account-requirements-response:
type: array
description: 'Dynamic account-requirements response used to build recipient forms. The structure and the fields returned vary by currency, recipient type, route, and sometimes previously provided inputs. Treat this as a schema for a dynamically generated form definition rather than a fixed set of recipient fields.
'
items:
type: object
description: A requirement group for a specific payout method / route.
properties:
type:
type: string
description: Requirement group identifier (route/payout-method specific).
example: south_korean_paygate
title:
type: string
description: Human-readable title for the requirement group.
example: PayGate
usageInfo:
type: string
description: Optional usage/help text.
example: null
fields:
type: array
description: List of UI field groups to collect required data.
items:
type: object
description: Group of related fields shown together in UI.
properties:
name:
type: string
description: Display name of this group.
example: E-mail
group:
type: array
description: The actual fields within this group.
items:
type: object
description: A single field descriptor.
properties:
key:
type: string
description: Key to include in JSON when submitting recipient details.
example: email
name:
type: string
description: Human-readable label.
example: E-mail
type:
type: string
description: UI field type.
example: text
refreshRequirementsOnChange:
type: boolean
description: 'If true, changing this field can alter requirements; call the POST account-requirements endpoint with updated data to refresh requirements.
'
example: false
required:
type: boolean
description: Indicates whether this field is mandatory.
example: true
displayFormat:
type: string
description: Optional display formatting hint.
example: null
example:
type: string
description: Example value for the field (may be empty string).
example: example@example.ex
minLength:
type: integer
description: Minimum allowed length, when applicable.
example: null
maxLength:
type: integer
description: Maximum allowed length, when applicable.
example: null
validationRegexp:
type: string
description: Regex pattern for validation, when applicable.
example: ^[^\s]+@[^\s]+\.[^\s]{2,}$
validationAsync:
type: string
deprecated: true
description: Deprecated. This validation will instead be performed when submitting the request.
example: null
valuesAllowed:
type:
- array
- 'null'
description: Allowed values for select/radio inputs; null for free-text/date inputs.
items:
type: object
properties:
key:
type: string
description: Machine-readable value.
example: PRIVATE
name:
type: string
description: Human-readable value label.
example: Person
example:
- type: south_korean_paygate
title: PayGate
usageInfo: null
fields:
- name: E-mail
group:
- key: email
name: E-mail
type: text
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: example@example.ex
minLength: null
maxLength: null
validationRegexp: ^[^\s]+@[^\s]+\.[^\s]{2,}$
validationAsync: null
valuesAllowed: null
- name: Recipient type
group:
- key: legalType
name: Recipient type
type: select
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: ''
minLength: null
maxLength: null
validationRegexp: null
validationAsync: null
valuesAllowed:
- key: PRIVATE
name: Person
- name: Full Name
group:
- key: accountHolderName
name: Full Name
type: text
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: ''
minLength: 2
maxLength: 140
validationRegexp: ^[0-9A-Za-zÀ-ÖØ-öø-ÿ-_()'*,.%#^@{}~<>+$"\[\]\\ ]+$
validationAsync: null
valuesAllowed: null
- name: Recipient's Date of Birth
group:
- key: dateOfBirth
name: Recipient's Date of Birth
type: date
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: ''
minLength: null
maxLength: null
validationRegexp: ^\d{4}\-\d{2}\-\d{2}$
validationAsync: null
valuesAllowed: null
- name: Recipient Bank Name
group:
- key: bankCode
name: Recipient Bank Name
type: select
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: Choose recipient bank
minLength: null
maxLength: null
validationRegexp: null
validationAsync: null
valuesAllowed:
- key: ''
name: Choose recipient bank
- key: '004'
name: Example Bank A
- key: '011'
name: Example Bank B
- name: Account number (KRW accounts only)
group:
- key: accountNumber
name: Account number (KRW accounts only)
type: text
refreshRequirementsOnChange: false
required: true
displayFormat: null
example: '1254693521232'
minLength: 10
maxLength: 16
validationRegexp: null
validationAsync: null
valuesAllowed: null
recipient-create-request:
type: object
description: 'Create a recipient (beneficiary) account request for POST /v1/accounts. The required fields inside `details` depend on currency/route; use the account-requirements endpoints (e.g. /v1/quotes/{quoteId}/account-requirements) to discover the exact required fields.
'
properties:
currency:
type: string
description: 3 character currency code.
example: GBP
type:
type: string
description: Recipient account type (currency/route-specific), e.g. sort_code, iban, email.
example: sort_code
profile:
type: integer
format: int64
description: Personal or business profile ID of the sender. It is highly advised to pass the business profile ID in this field if your business account is managed by multiple users, so that the recipient can be accessed by all users authorized on the business account.
example: 30000000
accountHolderName:
type: string
description: Recipient full name.
example: John Doe
ownedByCustomer:
type: boolean
description: 'Indicates whether the recipient account is owned by the profile owner (self-transfer), such as a user sending money to their own account in another country or currency. Set to `true` for self-transfers. We strongly recommend setting this field, as distinguishing self-transfers from third-party transfers improves routing and processing efficiency.
'
example: true
details:
type: object
description: 'Currency/route-specific recipient fields. Common examples include legalType, sortCode, accountNumber, email, dateOfBirth, etc. Use account-requirements APIs to determine what is required.
'
properties:
legalType:
type: string
description: Recipient legal type (when applicable).
enum:
- PRIVATE
- BUSINESS
example: PRIVATE
sortCode:
type: string
description: Sort code (GBP example).
example: '040075'
accountNumber:
type: string
description: Account number (GBP example).
example: '37778842'
dateOfBirth:
type: string
description: Date of birth in ISO 8601 date format (Optional for GBP example).
example: '1961-01-01'
additionalProperties: true
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
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
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
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