KycReview
A KYC review: create, list, get or update one, or submit a requirement.
Operations
Every route this entity exposes. Each route links to its own reference on this page.
| Method | Route | SDK operation | Returns |
|---|---|---|---|
POST |
/profiles/{profileId}/kyc-requirements/{requirementKey} |
create |
KYC requirement successfully submitted |
POST |
/profiles/{profileId}/kyc-reviews |
create |
KYC Review successfully created |
GET |
/profiles/{profileId}/kyc-reviews |
list |
Returns a list of KYC Review objects for the profile. Returns an empty list if no KYC Review exists for the profile |
GET |
/profiles/{profileId}/kyc-reviews/{kycReviewId} |
load |
Returns the KYC Review object including the requirements field |
PATCH |
/profiles/{profileId}/kyc-reviews/{kycReviewId} |
update |
Returns the updated KYC Review object |
Examples
One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.
Golang
Construct client as shown in the Golang setup, then call the operations:
kyc_reviews, err := client.KycReview(nil).List(map[string]any{"profile_id": 1}, nil)
if err != nil {
panic(err)
}
fmt.Println(kyc_reviews)
kyc_review, err := client.KycReview(nil).Load(map[string]any{"id": "example_id", "profile_id": 1}, nil)
if err != nil {
panic(err)
}
fmt.Println(kyc_review)
created, err := client.KycReview(nil).Create(map[string]any{"profile_id": 1, "type": "example"}, nil)
if err != nil {
panic(err)
}
fmt.Println(created)
updated, err := client.KycReview(nil).Update(map[string]any{"id": "example_id", "profile_id": 1, "redirectUrl": "example"}, nil)
if err != nil {
panic(err)
}
fmt.Println(updated)
Lua
Construct client as shown in the Lua setup, then call the operations:
local kyc_reviews, err = client:KycReview():list({ profile_id = 1 })
local kyc_review, err = client:KycReview():load({ id = "example_id", profile_id = 1 })
local created, err = client:KycReview():create({ profile_id = 1, type = "example" })
local updated, err = client:KycReview():update({ id = "example_id", profile_id = 1, redirectUrl = "example" })
PHP
Construct client as shown in the PHP setup, then call the operations:
$kyc_reviews = $client->KycReview()->list(["profile_id" => 1]);
$kyc_review = $client->KycReview()->load(["id" => "example_id", "profile_id" => 1]);
$created = $client->KycReview()->create(["profile_id" => 1, "type" => "example"]);
$updated = $client->KycReview()->update(["id" => "example_id", "profile_id" => 1, "redirectUrl" => "example"]);
Python
Construct client as shown in the Python setup, then call the operations:
kyc_reviews = client.KycReview().list({"profile_id": 1})
kyc_review = client.KycReview().load({"id": "example_id", "profile_id": 1})
created = client.KycReview().create({ "profile_id": 1, "type": "example" })
updated = client.KycReview().update({"id": "example_id", "profile_id": 1, "redirectUrl": "example"})
Ruby
Construct client as shown in the Ruby setup, then call the operations:
kyc_reviews = client.KycReview.list({ "profile_id" => 1 })
kyc_review = client.KycReview.load({ "id" => "example_id", "profile_id" => 1 })
created = client.KycReview.create({ "profile_id" => 1, "type" => "example" })
updated = client.KycReview.update({ "id" => "example_id", "profile_id" => 1, "redirectUrl" => "example" })
TypeScript
Construct client as shown in the TypeScript setup, then call the operations:
const kyc_reviews = await client.KycReview().list({ profile_id: 1 })
const kyc_review = await client.KycReview().load({ id: "example_id", profile_id: 1 })
const created = await client.KycReview().create({ profile_id: 1, type: "example" })
const updated = await client.KycReview().update({ id: "example_id", profile_id: 1, redirectUrl: "example" })
Fields
| Field | Type | Required | Description |
|---|---|---|---|
createdAt |
string |
No | Timestamp marking the creation of the KYC Review. |
id |
string |
No | Unique identifier for a KYC Review resource, generated by Wise. |
link |
one,object,null |
No | Contains the URL and expiry of said URL the end customer needs to be directed to in order to go through Hosted KYC flow. |
redirectUrl |
one,string,null |
No | URL where the user will be redirected at the end of the flow. |
requiredBy |
one,string,null |
No | Timestamp by which the underlying requirement set needs to be verified to not block the customer. |
requirements |
one,array,null |
No | Nested list of KYC Requirement objects in [[Requirement]] format, where each inner list represents a combination of possible requirements to be provided. |
status |
string |
No | Aggregated state of the underlying requirement set. |
triggerData |
object |
No | Object containing data of the underlying product object that triggered the KYC Review. |
triggerReferences |
array |
No | List of trigger reference objects. |
type |
string |
Yes | Type of the underlying action or process this KYC Review is for. |
updatedAt |
string |
No | Timestamp marking the last update of the KYC Review. |
create
POST /profiles/{profileId}/kyc-requirements/{requirementKey}
Operation ID: kycReviewRequirementSubmit.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
profileId |
path |
integer (int64) |
Yes | The profile ID. |
requirementKey |
path |
enum: ACCOUNT_INTENT, ACCOUNT_PURPOSE, ANNUAL_VOLUME, BUSINESS_ANNUAL_INCOME, BUSINESS_AUTHORISATION_ID, BUSINESS_AUTHORISATION_LETTER, ... |
Yes | The KYC requirement type to submit. To see the fields for a requirement type, select it in the request body dropdown below. To compare all requirement types, see the KYC requirement types guide. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Request body
multipart/form-data
The request body is any or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object or object.
Responses
202: KYC requirement successfully submitted
400: Invalid request. Common error scenarios: - No submissionData provided - No kycReviewId provided in submission data - No data provided in submission data - Invalid field values - Missing required files
application/json
| Property | Type | Required | Description |
|---|---|---|---|
detail |
string |
No | |
errors |
array of object |
No | |
errors[].attributes |
object |
No | |
errors[].code |
string |
No | |
errors[].detail |
string |
No | |
errors[].ref |
string |
No | |
instance |
string |
No | |
status |
integer |
No | |
title |
string |
No | |
type |
string |
No |
401: User is not authorised to access the resource
404: KYC Review or provided requirement key not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
POST /profiles/{profileId}/kyc-reviews
Operation ID: kycReviewCreate.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
profileId |
path |
integer (int64) |
Yes | The profile ID. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Request body
application/json
| Property | Type | Required | Description |
|---|---|---|---|
triggerData |
object |
No | Object containing data of the underlying product object that triggered the KYC Review. |
triggerData.id |
string (uuid) |
No | ID of the underlying product object. For example, if type is QUOTE then this would be the quote ID. This ID might be null when referencing an ID isn't meaningful. As an example, there's only ever one active refresh cycle per profile so referencing by ID isn't useful. |
type |
enum: QUOTE, PROACTIVE_SEND_MONEY, CARD |
Yes | Type of the underlying action or process this KYC Review is for. Usually a reference to which product this KYC Review is for (like QUOTE or TRANSFER) or a reference to a KYC process on the profile that isn't related to a specific product (like REFRESH_CYCLE or REPAPERING). Following types are available when creating a KYC Review using this endpoint: - QUOTE - PROACTIVE_SEND_MONEY - CARD |
Responses
202: KYC Review successfully created
application/json
| Property | Type | Required | Description |
|---|---|---|---|
createdAt |
string (date-time) |
No | Timestamp marking the creation of the KYC Review. |
id |
string (uuid) |
No | Unique identifier for a KYC Review resource, generated by Wise. |
redirectUrl |
string,null |
No | URL where the user will be redirected at the end of the flow. Can contain query params and path fragments. It has to be a valid URL as per RFC 2396. Provided by the caller in the Update redirect URL call. |
requiredBy |
string,null (date-time) |
No | Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is PASSED_WITH_REQUIREMENTS. |
requirements |
array,null |
No | Nested list of KYC Requirement objects in [[Requirement]] format, where each inner list represents a combination of possible requirements to be provided. To fulfil the whole KYC Review, at least one item from each inner list should be provided. For example, if the requirements are [[a, b], [c, d]] then it should be read as (a or b) and (c or d). |
status |
enum: NEW, PASSED, PASSED_WITH_REQUIREMENTS, WAITING_CUSTOMER_INPUT, PROCESSING |
No | Aggregated state of the underlying requirement set. Any of the states below could move into any other state. |
triggerReferences |
array of object |
No | List of trigger reference objects. |
triggerReferences[].triggerData |
object |
No | Key-value object containing metadata of the underlying product object that triggered the KYC Review. For QUOTE, TRANSFER and ADD_MONEY types, triggerData contains an id field that refers to their respective IDs. For BANK_ACCOUNT_DETAILS, triggerData has a field called currencies which contains a list of currencies (for example USD, SGD, EUR) that the bank details have been created for. Fields and their data types for each triggerReference.type: - QUOTE - id (uuid) - TRANSFER - id (long) - ADD_MONEY - id (long) - BANK_ACCOUNT_DETAILS - currencies (list of string) |
triggerReferences[].type |
string |
No | Type of the underlying action or process this KYC Review is for. Usually a reference to which product this KYC Review pertains to (like QUOTE or TRANSFER) or a reference to a KYC process on the profile that isn't related to a specific product (like REFRESH_CYCLE or REPAPERING). Currently supported types: - QUOTE - TRANSFER - PROACTIVE_SEND_MONEY - ADD_MONEY - CARD - BANK_ACCOUNT_DETAILS - INFO_REQUEST |
updatedAt |
string (date-time) |
No | Timestamp marking the last update of the KYC Review. |
400: Invalid request (for example unsupported type, null type)
401: User is not authorised to access the resource
404: Underlying action with provided ID is not found (for example quote not found)
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
list
GET /profiles/{profileId}/kyc-reviews
Operation ID: kycReviewList.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
profileId |
path |
integer (int64) |
Yes | The profile ID. |
pageNumber |
query |
integer |
No | Page number. Default value is 1. |
pageSize |
query |
integer |
No | Desired number of items per page. Max 100, default 100. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Responses
200: Returns a list of KYC Review objects for the profile. Returns an empty list if no KYC Review exists for the profile
application/json
| Property | Type | Required | Description |
|---|---|---|---|
[].createdAt |
string (date-time) |
No | Timestamp marking the creation of the KYC Review. |
[].id |
string (uuid) |
No | Unique identifier for a KYC Review resource, generated by Wise. |
[].redirectUrl |
string,null |
No | URL where the user will be redirected at the end of the flow. Can contain query params and path fragments. It has to be a valid URL as per RFC 2396. Provided by the caller in the Update redirect URL call. |
[].requiredBy |
string,null (date-time) |
No | Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is PASSED_WITH_REQUIREMENTS. |
[].requirements |
array,null |
No | Nested list of KYC Requirement objects in [[Requirement]] format, where each inner list represents a combination of possible requirements to be provided. To fulfil the whole KYC Review, at least one item from each inner list should be provided. For example, if the requirements are [[a, b], [c, d]] then it should be read as (a or b) and (c or d). |
[].status |
enum: NEW, PASSED, PASSED_WITH_REQUIREMENTS, WAITING_CUSTOMER_INPUT, PROCESSING |
No | Aggregated state of the underlying requirement set. Any of the states below could move into any other state. |
[].triggerReferences |
array of object |
No | List of trigger reference objects. |
[].triggerReferences[].triggerData |
object |
No | Key-value object containing metadata of the underlying product object that triggered the KYC Review. For QUOTE, TRANSFER and ADD_MONEY types, triggerData contains an id field that refers to their respective IDs. For BANK_ACCOUNT_DETAILS, triggerData has a field called currencies which contains a list of currencies (for example USD, SGD, EUR) that the bank details have been created for. Fields and their data types for each triggerReference.type: - QUOTE - id (uuid) - TRANSFER - id (long) - ADD_MONEY - id (long) - BANK_ACCOUNT_DETAILS - currencies (list of string) |
[].triggerReferences[].type |
string |
No | Type of the underlying action or process this KYC Review is for. Usually a reference to which product this KYC Review pertains to (like QUOTE or TRANSFER) or a reference to a KYC process on the profile that isn't related to a specific product (like REFRESH_CYCLE or REPAPERING). Currently supported types: - QUOTE - TRANSFER - PROACTIVE_SEND_MONEY - ADD_MONEY - CARD - BANK_ACCOUNT_DETAILS - INFO_REQUEST |
[].updatedAt |
string (date-time) |
No | Timestamp marking the last update of the KYC Review. |
401: User is not authorised to access the resource
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
load
GET /profiles/{profileId}/kyc-reviews/{kycReviewId}
Operation ID: kycReviewGet.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
profileId |
path |
integer (int64) |
Yes | The profile ID. |
kycReviewId |
path |
string (uuid) |
Yes | The KYC Review ID. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Responses
200: Returns the KYC Review object including the requirements field
application/json
| Property | Type | Required | Description |
|---|---|---|---|
createdAt |
string (date-time) |
No | Timestamp marking the creation of the KYC Review. |
id |
string (uuid) |
No | Unique identifier for a KYC Review resource, generated by Wise. |
redirectUrl |
string,null |
No | URL where the user will be redirected at the end of the flow. Can contain query params and path fragments. It has to be a valid URL as per RFC 2396. Provided by the caller in the Update redirect URL call. |
requiredBy |
string,null (date-time) |
No | Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is PASSED_WITH_REQUIREMENTS. |
requirements |
array,null |
No | Nested list of KYC Requirement objects in [[Requirement]] format, where each inner list represents a combination of possible requirements to be provided. To fulfil the whole KYC Review, at least one item from each inner list should be provided. For example, if the requirements are [[a, b], [c, d]] then it should be read as (a or b) and (c or d). |
status |
enum: NEW, PASSED, PASSED_WITH_REQUIREMENTS, WAITING_CUSTOMER_INPUT, PROCESSING |
No | Aggregated state of the underlying requirement set. Any of the states below could move into any other state. |
triggerReferences |
array of object |
No | List of trigger reference objects. |
triggerReferences[].triggerData |
object |
No | Key-value object containing metadata of the underlying product object that triggered the KYC Review. For QUOTE, TRANSFER and ADD_MONEY types, triggerData contains an id field that refers to their respective IDs. For BANK_ACCOUNT_DETAILS, triggerData has a field called currencies which contains a list of currencies (for example USD, SGD, EUR) that the bank details have been created for. Fields and their data types for each triggerReference.type: - QUOTE - id (uuid) - TRANSFER - id (long) - ADD_MONEY - id (long) - BANK_ACCOUNT_DETAILS - currencies (list of string) |
triggerReferences[].type |
string |
No | Type of the underlying action or process this KYC Review is for. Usually a reference to which product this KYC Review pertains to (like QUOTE or TRANSFER) or a reference to a KYC process on the profile that isn't related to a specific product (like REFRESH_CYCLE or REPAPERING). Currently supported types: - QUOTE - TRANSFER - PROACTIVE_SEND_MONEY - ADD_MONEY - CARD - BANK_ACCOUNT_DETAILS - INFO_REQUEST |
updatedAt |
string (date-time) |
No | Timestamp marking the last update of the KYC Review. |
401: User is not authorised to access the resource
404: KYC Review not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.
update
PATCH /profiles/{profileId}/kyc-reviews/{kycReviewId}
Operation ID: kycReviewRedirectUrlUpdate.
Authentication: bearer token (UserToken).
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
profileId |
path |
integer (int64) |
Yes | The profile ID. |
kycReviewId |
path |
string (uuid) |
Yes | The KYC Review ID. |
X-External-Correlation-Id |
header |
string (uuid) |
No | Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more. |
Request body
application/json
| Property | Type | Required | Description |
|---|---|---|---|
redirectUrl |
string |
Yes | URL where the user will be redirected at the end of the flow. Can contain query params and path fragments. It has to be a valid URL as per RFC 2396. |
Responses
200: Returns the updated KYC Review object
application/json
| Property | Type | Required | Description |
|---|---|---|---|
createdAt |
string (date-time) |
No | Timestamp marking the creation of the KYC Review. |
id |
string (uuid) |
No | Unique identifier for a KYC Review resource, generated by Wise. |
link |
object,null |
No | Contains the URL and expiry of said URL the end customer needs to be directed to in order to go through Hosted KYC flow. link is returned only when status is WAITING_CUSTOMER_INPUT and Update redirect URL is called. |
link.expiresAt |
string (date-time) |
No | Timestamp for when the one-time token in the link will expire, after which a new link needs to be generated. |
link.value |
string |
No | The URL that the end customer needs to be directed to in order to go through the Hosted KYC flow. |
redirectUrl |
string,null |
No | URL where the user will be redirected at the end of the flow. Can contain query params and path fragments. It has to be a valid URL as per RFC 2396. Provided by the caller in the Update redirect URL call. |
requiredBy |
string,null (date-time) |
No | Timestamp by which the underlying requirement set needs to be verified to not block the customer. Only relevant if the status is PASSED_WITH_REQUIREMENTS. |
requirements |
array,null |
No | Nested list of KYC Requirement objects in [[Requirement]] format, where each inner list represents a combination of possible requirements to be provided. To fulfil the whole KYC Review, at least one item from each inner list should be provided. For example, if the requirements are [[a, b], [c, d]] then it should be read as (a or b) and (c or d). |
status |
enum: NEW, PASSED, PASSED_WITH_REQUIREMENTS, WAITING_CUSTOMER_INPUT, PROCESSING |
No | Aggregated state of the underlying requirement set. Any of the states below could move into any other state. |
triggerReferences |
array of object |
No | List of trigger reference objects. |
triggerReferences[].triggerData |
object |
No | Key-value object containing metadata of the underlying product object that triggered the KYC Review. For QUOTE, TRANSFER and ADD_MONEY types, triggerData contains an id field that refers to their respective IDs. For BANK_ACCOUNT_DETAILS, triggerData has a field called currencies which contains a list of currencies (for example USD, SGD, EUR) that the bank details have been created for. Fields and their data types for each triggerReference.type: - QUOTE - id (uuid) - TRANSFER - id (long) - ADD_MONEY - id (long) - BANK_ACCOUNT_DETAILS - currencies (list of string) |
triggerReferences[].type |
string |
No | Type of the underlying action or process this KYC Review is for. Usually a reference to which product this KYC Review pertains to (like QUOTE or TRANSFER) or a reference to a KYC process on the profile that isn't related to a specific product (like REFRESH_CYCLE or REPAPERING). Currently supported types: - QUOTE - TRANSFER - PROACTIVE_SEND_MONEY - ADD_MONEY - CARD - BANK_ACCOUNT_DETAILS - INFO_REQUEST |
updatedAt |
string (date-time) |
No | Timestamp marking the last update of the KYC Review. |
400: Invalid request (for example not a valid URI)
401: User is not authorised to access the resource
404: KYC Review not found
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header
application/json
The response is object.