πͺͺ KYC
This document provides a detailed explanation of KYC flows, covering Simple KYC, Standard KYC and Enhanced KYC, along with the required API interactions and processes. KYC is a mandatory step in compliance with regulatory requirements before users can place orders on Transak.
KYC FlowChart
| KYC Type | Requirements |
|---|---|
| Simple KYC | Personal Details, Address Details, SSN (for US users only) |
| Standard KYC | Personal Details, Address Details, SSN (for US users only), ID Proof Upload, Liveness Check (Selfie) |
| Enhanced KYC | Personal Details, Address Details, SSN (for US users only), Source of Income, Proof Document Upload, ID Proof Upload, Liveness Check (Selfie) |
Fetch KYC Requirement Based on Quote ID
The KYC requirements are determined dynamically using the quote ID. Transak supports multi-level KYC, meaning different users may have different requirements based on country, regulations, and transaction limits.
When fetching KYC Requirement, there can be three status -
| KYC Status | Description |
|---|---|
| APPROVED | KYC is done and approved by Transak. User can proceed with the order creation flow. |
| SUBMITTED | KYC personal and address details or additional forms are submitted. |
| NOT_SUBMITTED | KYC personal and address details are not submitted. |
| ADDITIONAL_FORMS_REQUIRED | All details are submitted but some more additional requirements need to be fulfilled for KYC approval. |
- Personal Details β First name, last name, email, and mobile number.
- Address Details β Userβs residential details (address, city, state, zip code).
- Purpose of Usage β Used for compliance with regulations.
- ID Proof β Required only if Standard or Enhanced KYC is needed.
- SSN β Required only for US KYC users.
- Source of Income -> Required only if Enhanced KYC is needed.
- Proof Document -> Required only if Enhanced KYC is needed.
Note: All forms must be submitted in the sequence provided in the Get Additional Requirements API.
KYC Flow - Step-by-Step Guide
| Step | Description | API Calls |
|---|---|---|
| Step 1: Fetch KYC Status | Use this step to fetch the current status of the user KYC, based on the quoteId. 1. If data.kyc.status = APPROVED β Move forward with the Create Order Flow. 2. If data.kyc.status = NOT_SUBMITTED β Follow Step 2. 3. If data.kyc.status = ADDITIONAL_FORMS_REQUIRED β Follow Step 3. | Get KYC Requirement |
| Step 2: Patch User Details | Collect and submit user's basic information: β’ First Name & Last Name β’ Mobile Number (with country code) β’ Date of Birth Collect and submit address fields: β’ Street Address β’ City β’ State β’ Postal/Zip Code β’ Country Once submitted β Follow Step 1 | Patch User Details |
| Step 3: Get Additional Requirements | Check if additional information must be provided for KYC Approval. Multiple forms may appear and must be submitted in the sequence provided in the API response: 1. If type = PURPOSE_OF_USAGE β Follow Step 4 2. If type = IDPROOF β Follow Step 5 3. If type = US_SSN β Follow Step 6 4. If type = SOURCE_OF_INCOME β Follow Step 7 5. If type = DOCUMENT_PROOF β Follow Step 8 | Get Additional Requirements |
| Step 4: Post Purpose of Usage | Ask user for their reason to buy crypto (e.g., investing, remittance). | Update Purpose of Usage |
| Step 5: Complete ID Proof & Liveness Check (Standard KYC only) | Upload photo ID (e.g., Passport, Driverβs License). Submit selfie for liveness validation via KYC widget using kycUrl. | Submit via widget link (kycUrl) |
| Step 6: Submit SSN (US KYC only) | Required for US users. Validate identity using Social Security Number. Must be submitted before virtual bank creation. Note: Appears only if KYC country = US. | Submit SSN |
| Step 7: Submit Source of Income (Enhanced KYC only) | Ask user for their source of income β Required for higher transaction limits. | Submit Source of Income |
| Step 8: Upload Proof Document (Enhanced KYC only) | Upload proof based on the selected option in Step 7. | Upload Proof Document |
Different KYC Levels Guide (SIMPLE, STANDARD, ENHANCED)
| KYC Type | KYC Status | User Status | Action |
|---|---|---|---|
| null | NOT_SUBMITTED | ACTIVE | Call GET KYC Requirement API Complete KYC Forms |
| SIMPLE | SUBMITTED | ACTIVE | Poll GET User Details API |
| SIMPLE | APPROVED | ACTIVE | Call GET KYC Requirement API β’ If status = APPROVED β Place Order β’ If status = ADDITIONAL_FORMS_REQUIRED β Call Get Additional Requirements API β’ If status = NOT_SUBMITTED β Patch User Details |
| SIMPLE | REJECTED | ACTIVE | Call GET KYC Requirement API β’ If status = ADDITIONAL_FORMS_REQUIRED β Call Get Additional Requirements API β’ If status = NOT_SUBMITTED β Patch User Details |
| STANDARD | SUBMITTED | ACTIVE | Poll GET User Details API |
| STANDARD | APPROVED | ACTIVE | Call GET KYC Requirement API β’ If status = APPROVED β Place Order β’ If status = ADDITIONAL_FORMS_REQUIRED β Call Get Additional Requirements API |
| STANDARD | REJECTED | ACTIVE | Call GET KYC Requirement API β’ If status = APPROVED β Place Order β’ If status = ADDITIONAL_FORMS_REQUIRED β Call Get Additional Requirements API β’ If status = NOT_SUBMITTED β Patch User Details |
| STANDARD | REJECTED | DISABLED | Show static screen Contact Support |
| ENHANCED | SUBMITTED | ACTIVE | Poll GET User Details API |
| ENHANCED | APPROVED | ACTIVE | Call GET KYC Requirement API β’ If status = APPROVED β Place Order |
| ENHANCED | REJECTED | ACTIVE | Call GET KYC Requirement API β’ If status = APPROVED β Place Order β’ If status = ADDITIONAL_FORMS_REQUIRED β Call Get Additional Requirements API β’ If status = NOT_SUBMITTED β Patch User Details |
| ENHANCED | REJECTED | DISABLED | Show static screen Contact Support |
API Sequence Table
| API Endpoint | Logic Overview |
|---|---|
| Get KYC Requirement | Pass the quoteId to fetch the KYC Status. β’ If data.kyc.status = APPROVED β No more steps in the KYC process. Proceed to Create Order β’ If data.kyc.status = NOT_SUBMITTED β User details need to be submitted. Proceed to Patch User Details β’ If data.kyc.status = ADDITIONAL_FORMS_REQUIRED β More steps required in KYC process. Proceed to Create Order |
| Patch User Details | Updates the user's personal and address details. Proceed to Get KYC Requirement again to check KYC status. |
| Get Additional Requirements | Pass the quoteId to fetch additional requirements. Forms must be submitted in the sequence provided in the API response: β’ If response.forms.type = PURPOSE_OF_USAGE β Update Purpose Of Usage (Simple KYC) β’ If response.forms.type = IDPROOF β Complete ID Proof & Liveness Check β’ If response.forms.type = US_SSN β Submit SSN β’ If response.forms.type = SOURCE_OF_INCOME β Submit Source of Income (Enhanced KYC) β’ If response.forms.type = DOCUMENT_PROOF β Upload Proof Document (Enhanced KYC) |
| Update Purpose Of Usage | Updates the selected options for Purpose Of Purchase. Proceed to IDPROOF (if Standard KYC required), otherwise proceed to Get KYC Requirements again to check if KYC is approved. |
| Complete ID Proof & Liveness Check | Submit ID Proof (Passport, National ID, Driverβs License) and Selfie Verification for liveness detection to complete the Standard KYC flow. Proceed to Get KYC Requirements again to check if KYC is approved. |
| Submit SSN (US only) | Submit SSN details for identity verification. Proceed to Get KYC Requirements again to check if KYC is approved. |
| Submit Source of Income | Submit Source of Income for income declaration as part of Enhanced KYC process. Proceed to Get KYC Requirements again to check if KYC is approved. |
| Upload Proof Document | Upload Proof Document for the declared income. Proceed to Get KYC Requirements again to check if KYC is approved. |
Updated about 2 hours ago
Whatβs Next