API

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.