Real-time notifications for KYC V2 individual onboarding events.
Onboarding webhooks deliver real-time notifications of state changes in a KYC V2 individual account throughout the onboarding lifecycle, including approval, rejection, manual review, Requests for Information (RFI), and reviewed limits.
See the Individual Onboarding Overview for how webhooks fit into the end-to-end onboarding flow.
Events
| Event | Description |
|---|---|
account.individual.ready | The individual account has passed review and is ready for use. |
account.individual.rejected | The individual account has been rejected during review and cannot be activated. |
account.individual.under_review | The individual account is under manual compliance review. |
account.individual.rfi | Review has identified issues that require partner action before the account can proceed. |
account.individual.reviewed | The individual account's reviewed tier or limits have changed. |
account.individual.ready
account.individual.readyFired when an individual account passes review and becomes ready for use.
Payload
| Field | Type | Description |
|---|---|---|
event_name | string | Always account.individual.ready. |
data.account_id | string | Public account id of the individual account, such as IN-ABCD-1234. |
data.status | string | Account status. Always APPROVED for this event. |
resource.id | string | Public account id of the individual account. |
resource.type | string | Resource type. Always individual_account for this event. |
account.individual.rejected
account.individual.rejectedFired when an individual account is rejected during review.
Payload
| Field | Type | Description |
|---|---|---|
event_name | string | Always account.individual.rejected. |
data.account_id | string | Public account id of the individual account, such as IN-ABCD-1234. |
data.status | string | Account status. Always REJECTED for this event. |
resource.id | string | Public account id of the individual account. |
resource.type | string | Resource type. Always individual_account for this event. |
account.individual.under_review
account.individual.under_reviewFired when an individual account moves into manual compliance review.
Payload
| Field | Type | Description |
|---|---|---|
event_name | string | Always account.individual.under_review. |
data.account_id | string | Public account id of the individual account, such as IN-ABCD-1234. |
data.status | string | Account status. Always UNDER_REVIEW for this event. |
resource.id | string | Public account id of the individual account. |
resource.type | string | Resource type. Always individual_account for this event. |
account.individual.rfi
account.individual.rfiFired when compliance review identifies one or more issues that require partner action before the individual account can proceed.
Use Get Individual Account to inspect the latest errors and document statuses, then respond with Update Individual Account and/or Upload Individual Document. Once all requested updates are complete, call Submit Individual Account again.
Payload
| Field | Type | Description |
|---|---|---|
event_name | string | Always account.individual.rfi. |
data.account_id | string | Public account id of the individual account, such as IN-ABCD-1234. |
data.status | string | Current account status. Usually ACTION_REQUIRED for this event. |
data.errors | array of Error | List of issues identified during review. Each error describes a problem and the affected field or document. |
resource.id | string | Identifier of the RFI snapshot. Stable per snapshot; use it to deduplicate retries of the same RFI delivery. |
resource.type | string | Resource type. Always account_rfi for this event. |
Error object
| Field | Type | Description |
|---|---|---|
type | string (optional) | Machine-readable issue type or code, when available. |
description | string | Human-readable description of the issue. |
target | Target | The account field or document the issue applies to. |
Target object
Only fields relevant to the issue are included.
| Field | Type | Description |
|---|---|---|
scope | string | Entity scope the issue applies to. |
data.account_id | string | Public account id of the individual account. |
data.property | string | Field path the issue applies to, when field-specific. |
data.document_type | string | Document type the issue applies to, such as ID_FRONT, ID_BACK, SELFIE, or POA. |
account.individual.reviewed
account.individual.reviewedFired when an individual account's reviewed tier or limits have changed.
Payload
| Field | Type | Description |
|---|---|---|
event_name | string | Always account.individual.reviewed. |
data.account_id | string | Public account id of the individual account, such as IN-ABCD-1234. |
data.limits | array of Limit | Current transaction limits for the account. |
resource.id | string | Public account id of the individual account. |
resource.type | string | Resource type. Always individual_account for this event. |
For the same limits shape outside webhooks, call Get Individual Account Limits.
Deduplication
Webhook delivery is at least once and may arrive out of order. Use this receiver-side dedup tuple:
(event_name, resource.type, resource.id)For RFI events, resource.id identifies the RFI snapshot. A later RFI for the same account may have a different resource.id and should be processed as a new event.
