πŸͺͺ 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

KYCFlow Diagram
KYC TypeRequirements
Simple KYCPersonal Details, Address Details, SSN (for US users only)
Standard KYCPersonal Details, Address Details, SSN (for US users only), ID Proof Upload, Liveness Check (Selfie)
Enhanced KYCPersonal 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 StatusDescription
APPROVEDKYC is done and approved by Transak. User can proceed with the order creation flow.
SUBMITTEDKYC personal and address details or additional forms are submitted.
NOT_SUBMITTEDKYC personal and address details are not submitted.
ADDITIONAL_FORMS_REQUIREDAll 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

StepDescriptionAPI Calls
Step 1: Fetch KYC StatusUse 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 DetailsCollect 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 RequirementsCheck 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 UsageAsk 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 TypeKYC StatusUser StatusAction
nullNOT_SUBMITTEDACTIVECall GET KYC Requirement API
Complete KYC Forms
SIMPLESUBMITTEDACTIVEPoll GET User Details API
SIMPLEAPPROVEDACTIVECall 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
SIMPLEREJECTEDACTIVECall GET KYC Requirement API
β€’ If status = ADDITIONAL_FORMS_REQUIRED β†’ Call Get Additional Requirements API
β€’ If status = NOT_SUBMITTED β†’ Patch User Details
STANDARDSUBMITTEDACTIVEPoll GET User Details API
STANDARDAPPROVEDACTIVECall GET KYC Requirement API
β€’ If status = APPROVED β†’ Place Order
β€’ If status = ADDITIONAL_FORMS_REQUIRED β†’ Call Get Additional Requirements API
STANDARDREJECTEDACTIVECall 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
STANDARDREJECTEDDISABLEDShow static screen
Contact Support
ENHANCEDSUBMITTEDACTIVEPoll GET User Details API
ENHANCEDAPPROVEDACTIVECall GET KYC Requirement API
β€’ If status = APPROVED β†’ Place Order
ENHANCEDREJECTEDACTIVECall 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
ENHANCEDREJECTEDDISABLEDShow static screen
Contact Support

API Sequence Table

API EndpointLogic Overview
Get KYC RequirementPass 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 DetailsUpdates the user's personal and address details.

Proceed to Get KYC Requirement again to check KYC status.
Get Additional RequirementsPass 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 UsageUpdates 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 CheckSubmit 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 IncomeSubmit 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 DocumentUpload Proof Document for the declared income.

Proceed to Get KYC Requirements again to check if KYC is approved.


What’s Next