KYC Reliance

Reuse a user's existing KYC verification with Transak to avoid redundant checks
View as Markdown

KYC Reliance lets partners reuse a user’s existing, already-completed KYC verification instead of asking the user to verify again with Transak. When a user has been verified, whether through a provider like Sumsub or directly by the partner, that verified data is shared with Transak so the user skips redundant KYC. This reduces drop-off, speeds up onboarding, and keeps a single, consistent verification across your platform and Transak.

Transak supports two approaches to KYC Reliance:

Watch: KYC Reliance and its Types

A short walkthrough of KYC Reliance and its two approaches: using Sumsub and using API.

KYC Comparison

KYC Reliance (API)KYC Reliance (Sumsub)Transak Widget KYC
Use caseUse this when KYC has already been completed on your platform and you don’t want users to repeat the same KYC process on Transak.Use when you rely on Sumsub for KYC and want Transak to use the same KYC data using Sumsub.Use when users complete KYC directly inside the Transak widget using the Transak KYC Provider.
Identity checksPass User’s KYC information to Transak and Transak verifies users information using via KYC Reliance using APITransak verifies users data from the Sumsub token shared with Transak via Sumsub integrationTransak verifies users within the widget with the Transak KYC Provider
Data flowPartner sends all user data (profile details, documents, biometrics) via KYC Reliance using APIUser completes KYC in Sumsub, data is shared with Transak via Sumsub integrationWidget collects user data and documents directly from the user
Supported KYC levelsStandard KYC onlyStandard KYC onlyLite KYC, Standard KYC & Enhanced KYC

KYC Reliance using API (Recommended)

KYC Reliance using API lets you submit KYC your platform has already completed (via Sumsub, Onfido, or any provider), so end-users don’t repeat KYC for Transak. Transak validates the submission and relies on your KYC instead of re-running it, cutting friction and drop-off while meeting Transak’s compliance requirements.

Our Solution

Provider agnostic

Partners are not limited to a single KYC vendor. They can collect KYC data using providers like Sumsub, Onfido, and map that data via Transak’s KYC Reliance using API.

Aggregated payloads

All required data such as personal details, address, purpose of usage, and country-specific ID documents can be submitted together in a single API call, instead of multiple calls.

How to integrate?

1

Whitelist Your API Keys

Action
Follow the steps in the Need help in Integration section
Request API key whitelisting and ask to enable KYC Reliance using API for your API key
Share your public IP addresses with Transak for whitelisting to use our APIs in your backend
2

Submit user details (profile, address, purpose, and ID Document details)

Call the Identity Details API with a single combined payload.

This should include the following data:

Personal Details (required)

KeySub KeyTest data
personalDetailsfirstNameJane
lastNameDoe
dob1998-01-01
mobileNumber+33791112345
addressDetailsaddressLine1170 Rue du Faubourg Saint-Denis
countryCodeFR
postCode75010
stateParis
cityParis
addressLine2optional

PURPOSE OF USAGE (required)

keydescription
purposeList*"Buying/selling crypto for investments",
"Buying NFTs",
"Buying crypto to use a web3 protocol"

TIN Details (optional)

keydescription
documentType*[US_SSN]
documentNumber*Identification number

Use the same allowed purposeList values as existing API contract. Country-specific tax ID details are required only when applicable, for example US_SSN for the United States.

3

Submit identity documents

Call the Document Details API with this below fields:

KeyDescription
idType*Type of Document IDs (see Supported Document IDs section below)
idCountryCode*Country code where the document was issued
idNumber*Document identification number
frontImage*Front image of the document (base64, max 5MB)
backImageBack image of the document (base64, max 5MB) (optional)
4

Submit biometrics (selfie and liveness)

Call the Biometrics Details API to submit the user’s biometric verification media.

Both values must be base64-encoded and sent as data URIs. See Supported formats for the accepted file types.

data:<mime-type>;base64,<base64_encoded_data>

Example: data:image/png;base64,<base64_encoded_data>

Either both or any other can be submitted for selfie and liveness to complete the KYC submission.

Supported Formats

Media typeAccepted formats
Selfie Image (document ID front/back, selfie)JPEG PNG WEBP
liveness VideoMP4

Supported Document IDs

idTypeAccepted documents
PASSPORTpassport
DRIVING_LICENCEDriving Licence
ID_CARDNational Identity Card
PROOF_OF_RESIDENCEBank Statement, Resident Permit, Utility Bill, Payslip
VISAvisa
UNKNOWNAny other value not listed above

Field Validation

Personal & Address Fields

FieldConstraint
firstName / lastName1–50 characters. ASCII only.
Cannot contain ^ ! # $ % * = < > ; { }
addressLine13–200 characters. ASCII only. Cannot contain ! $ % ^ * = < >
addressLine2Optional Same character restrictions as addressLine1
city2–50 characters
state2–100 characters
postCodeMust be a valid postal code for the given countryCode
dobISO 8601 date (YYYY-MM-DD). User must be ≥ 18 and < 150 years old
mobileNumberMust be a valid international phone number (E.164 format, e.g. +33791112345)

Tin Details

ValueApplicable countrydocumentNumber format
US_SSNUS9 digits (e.g. 123456789)

How to encode images and video as Base64

All document images, selfies, and liveness media should be sent as Base64-encoded strings.

  • The encoded value must be a single continuous string (no line breaks or spaces).
  • Ensure the full file is encoded — do not truncate the string.

Encode a file as Base64 (example snippets)

Node.js
1const fs = require('fs');
2
3// Supported image formats: JPEG, PNG, WEBP
4// Supported video format: MP4
5const filePath = './id-front.jpg';
6const mimeType = 'image/jpeg'; // e.g. image/png, image/webp, video/mp4
7
8const base64Data = fs.readFileSync(filePath, { encoding: 'base64' });
9const encoded = `data:${mimeType};base64,${base64Data}`;
10// Send `encoded` in the API request body

How does it work?

KYC Reliance Using API

Current Limitations

The KYC Reliance API must be called only from the partner’s backend. and subjected to the whitelisting of partner IP addresses. Direct API calls from the frontend apps are not supported.

API Overview

API Errors

HTTP CodeError CodeMessage
4009001userCountryCode is required
4009001personalDetails is required
4009001firstName is required in personalDetails
4009001lastName is required in personalDetails
4009001dob is required in personalDetails
4009001addressDetails is required
4009001countryCode is required in addressDetails
4009001postCode is required in addressDetails
4009001purposeList is required and must be a non-empty array
4009001documentType must be US_SSN or PAN_NUMBER
4009001documentNumber is required in tinDetails
4009001documentProof is required
4009001idType must be one of PASSPORT, DRIVING_LICENSE, ID_CARD, VISA, PROOF_OF_RESIDENCE, UNKNOWN
4009001idCountryCode must be a 2-letter ISO uppercase country code
4009001idNumber is required in documentProof
4009001frontImage is required in documentProof
4009001frontImage must not exceed MAX_BASE64_IMAGE_CHARS characters in documentProof
4009001backImage must not exceed MAX_BASE64_IMAGE_CHARS characters in documentProof
4009001at least one of selfie or liveness is required
4009001selfie must not be empty
4009001selfie must not exceed MAX_BASE64_IMAGE_CHARS characters
4009001liveness must not be empty
4009001liveness must not exceed MAX_BASE64_VIDEO_CHARS characters
4011002Invalid or missing authentication token.
4039001Required role not found in user roles
4003011partnerApiKey, kycLevel and userCountryCode are required
4003011user not found
4033011KYC reliance v2 is not allowed for partner
4003012user not found
4033012KYC reliance v2 is not allowed for partner
4033012userId does not match this KYC request
4003012Invalid kycDataUnit; expected one of valid units
4003012KYC is already approved
4043012KYC request not found
4003012KYC request is not a Reliance V2 staged request
4003012KYC request is already complete
4003012document-details to be called first
4003012at least one of selfie or liveness is required for biometrics step
4003012liveness must be a string or object
4003012reliancePayload is required
4003012Missing required reliance data
4003012Invalid vendor verificationSteps
4003012Missing personalDetails fields
4003012Missing addressDetails fields
4003012Missing tinDetails fields
4003012Missing idType in idDocuments
4003012Missing idNumber in idDocuments
4003012Missing idCountry in idDocuments
4003012Missing idDocument front image / Missing idDocument front link
4003012Missing selfie image / Missing selfie link
4003012Missing documentProof.frontImage
4003012Missing documentProof.selfieImage
4003012Invalid date of birth
4003012Invalid countryCode
4003012tinDetails.countryCode mismatch
4003012tinDetails is required for country
4003012tinDetails.type mismatch
4003012Invalid purposeOfUsage
4003012Invalid base64: must be a non-empty base64 string
4003012Invalid base64: base64 data is empty
4003012Invalid image: unsupported MIME type. Allowed: image/png, image/jpeg, image/gif, image/bmp, image/webp
4003012Invalid image: decoded size exceeds 5MB limit
4003012Invalid liveness: decoded size exceeds 20MB limit
4003012Invalid URL: must be a non-empty string
4003012Invalid URL: must use http or https
4003012Invalid URL: URL is not valid
4003012Invalid URL: URL must have a file extension
4003012Invalid URL: SVG is not allowed. Use jpeg, jpg, png, or pdf
4003012Invalid URL: extension not allowed. Allowed: jpeg, jpg, png, pdf, webp, mp4, webm
5003012Something went wrong!
5009999Transport failure
4003011Unable to get KYC reliance requirements
4003012Unable to submit KYC reliance data
4002020This phone number is already registered.

KYC Reliance using Sumsub

KYC Reliance using Sumsub allows partners to reuse their existing Sumsub KYC data with Transak, eliminating the need for users to complete verification again.

How does it work?

kyc-reliance-sumsub

Mandatory Fields

For seamless user onboarding, ensure the following fields are validated in Sumsub and included in the shared token:

FieldValidationValid Format
First Name

1 to 50 characters

John

Last Name

1 to 50 characters

Doe

Date of Birth (DOB)

Age 18–150 years

dd/mm/yyyy, dd-mm-yyyy, dd.mm.yyyy

Mobile Number

Valid number with + and country code

+11234567890, +919876543210

Address Line 1

1 to 200 chars, at least one alphabetic, valid postcode format

123 Main Street, 2nd Avenue

Address Line 2

Optional, 1 to 200 chars

City

1 to 50 characters

Austin

State

1 to 100 characters

Texas

Post Code

Valid postcode

45123

Country Code

Valid country code

FRA, IND

ID Document

Valid supported country document

Passport, Driver’s License, Residence Permit, ID Card

Advanced Liveliness

Valid live selfie

Live selfie

How to integrate?

Sumsub Configurations

1

Log in to Sumsub Dashboard

Access your Sumsub account at cockpit.sumsub.com.

Sumsub Dashboard
2

Create Application Level

Go to Integrations → Application Levels → Individual, click Create Level, and name it Transak KYC Reliance (or use your preferred identifier).

Create Application Level
Level Name
3

Configure Required Documents

Enable Identity document and Selfie verification types. Ensure all document types and selfie options are properly configured.

Document Configuration
1

Request Donor Access Token From Transak

Partners need to share their respective email IDs with Transak to receive the donor access token via a secure link.

2

Log in to Sumsub Dashboard

Access your Sumsub account at cockpit.sumsub.com.

4

Add Recipient

Click Add Recipient and enter the donor token provided via secure link in the pop-up.

Add Recipient

Integration Options

Integration Steps

The steps below cover generating a Sumsub KYC share token and passing it to Transak.

User Flow Demo

1

Load the Widget

Initialize the widget with the appropriate query parameters using any integration method.

Load the Widget
2

Email Verification

Enter your email address and verify using the OTP sent to your inbox. Proceed upon successful verification.

Email Verification
3

KYC Data Fetching

The system fetches KYC data using the shared token from Sumsub.

KYC Data Fetching
4

Order Placement

Transak has secured the KYC data. The user is ready to place an order instantly.

Order Placement