πŸ“œ KYC Reliance using Sumsub: A Comprehensive guide to integrate with Transak KYC system

Overview

Transak has introduced an exciting new feature that allows partners to share their KYC data from their platform with Transak using Sumsub. This feature enables partners to seamlessly onboard users to Transak using their existing KYC data.

Instant Offramp Demo

πŸ”— Quick Links


⭐ Key Benefits

  1. No Need to Repeat the KYC Process πŸ”„ - Users don't have to go through the KYC process again on Transak.
  1. Quick Onboarding⚑: - Onboard users from your platform to Transak in just a minute.
  1. ** Self-Serve, Secure, and Powerful IntegrationπŸ”’** - Easy and secure partner integration.
  1. No Physical Documents or Liveliness Checks πŸ“„ - It's just a shared token away.

πŸ§‘πŸ»β€πŸ’» Quick Setup

Step 1: Log in to Cockpit Sumsub

Log in to https://cockpit.sumsub.com/

Sumsub Cockpit Login

Step 2: Create a Level in the dashboard

Navigate to Integrations -> Application Levels -> Individualand click Create Level CTA

Create Level Navigation

Step 3: Create a New Level

Create a New Level name as Transak KYC Reliance or any identifier on your choice.

Create New Level

Step 4: Enable Identity document and Selfie

Enable the Identity document and Selfie in a given format mentioned in the screenshot below.

Enable Identity Document and Selfie
πŸ“˜

Note: Ensure all the mentioned Document type and Selfie type mentioned are updated for a seamless KYC reliance experience with Transak.

🎬 Getting Started

Follow these steps to integrate and share KYC data with Transak:

Step 1: Log in to Your Sumsub Dashboard

Log in to your Sumsub dashboard at Sumsub Dashboard and open your project.

Sumsub Dashboard

Step 2: Retrieve Your IDs

Retrieve your APPLICANT_ID (e.g., 665xxxxxxxxxxxx6a0) from the dashboard.

Step 3: Generate Your KYC Share Token

Generate your KYC share token by passing applicationId (retrieved in Step 2), forClientId as transak, ttlInSecs using the API below.

βœ…

Note: The forClientId should always be transak in order to fetch the data from your platform.

curl --request POST \
  --url https://api.sumsub.com/resources/accessTokens/shareToken \
  --header 'content-type: application/json' \
  --data '{
    "applicantId": "<APPLICANT_ID>",
    "forClientId": "transak",
    "ttlInSecs": "600"
 }'
{
  "token": "eyJhbGciOiJub25lIn0.eyJqdGkiOiJfYWN0LTZmODI2ZTU0LTE2MzctNDViMS05NzMyLWY1MjZiN2YxNWE3YyIsInVybCI6Imh0dHBzOi8vYXBpLnN1bXN1Yi5jb20ifQ."
}
πŸ“˜

The KYC Share Token is valid only for 20 minutes. Make sure to complete any actions required with this token within that timeframe to avoid expiration and the need to request a new token.

Step 4: Pass the KYC Shared Token to Transak

Pass the kycShareToken, kycShareTokenProvider along with the apiKey to the Transak Widget or SDK or Browser Redirection using the following query parameters.

ParameterValue
kycShareTokenProviderSUMSUB (This value should be hardcoded as the provider is Sumsub)
kycShareTokenA secured KYC share token generated in Step 3
apiKeyTransak's Partner API key.

πŸ“ Code Samples

import transakSDK from '@transak/transak-sdk';

let transak = new transakSDK({
  apiKey: '<YOUR_API_KEY>', // (Required)
  environment: '<STAGING/PRODUCTION>', // (Required),
  kycShareTokenProvider: "SUMSUB", 
  kycShareToken:"665xxxxxxxxxxxx6a0" 
  // .....
  // For the full list of customisation options check the link above
});

transak.init();

// To get all the events
transak.on(transak.ALL_EVENTS, (data) => {
  console.log(data);
});

// This will trigger when the user closed the widget
transak.on(transak.EVENTS.TRANSAK_WIDGET_CLOSE, (orderData) => {
  transak.close();
});

// This will trigger when the user marks payment is made
transak.on(transak.EVENTS.TRANSAK_ORDER_SUCCESSFUL, (orderData) => {
  console.log(orderData);
  transak.close();
});
https://global-beta.transak.com/?apiKey=<YOUR_API_KEY>&kycShareTokenProvider=SUMSUB&kycShareToken=eyJhbGciOiJub25lIn0.eyJqdGkiOiJfYWN0LTZmODI2ZTU0LTE2MzctNDViMS05NzMyLWY1MjZiN2YxNWE3YyIsInVybCI6Imh0dHBzOi8vYXBpLnN1bXN1Yi5jb20ifQ.
<iframe
  id="transakIframe"
  src="https://global-beta.transak.com/?apiKey=<YOUR_API_KEY>&kycShareTokenProvider=<KYC_SHARE_TOKEN_PROVIDER>&kycShareToken=<KYC_SHARE_TOKEN>"
  allow="camera;microphone;payment"
  style="height: 100vh; width: 100%; border: none;">
</iframe>

πŸ’» Flow demo

Step 1: Load the Widget

Flow Step 1

Step 2: Email Verification

  • Enter your email address.
  • Verify your email using the OTP (One-Time Password) sent to your inbox.
  • Proceed to the next step upon successful verification.
Flow Step 2

Step 3: KYC Data Fetching

  • Our system will begin fetching the KYC data using the shared token from Sumsub.
Flow Step 3

Step 4: Order Placement

  • Transak has successfully secured the KYC data.
  • The user is now ready to place an order instantly.
Flow Step 4

βœ” Mandatory Fields

Transak performs checks for the seamless onboarding of the users using Sumsub. The flow will be seamless upon passing the following fields to Transak via Sumsub shared token.

Fields

Validation

Valid Format

First Name

Should range between 1 to 35 characters.

John

Last Name

Should range between 1 to 35 characters.

Doe

Date of Birth (DOB)

The user's age should be >= 18 years and <= 150

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

Mobile Number

Should be a valid mobile number starting with + and valid country code matching the user's region.

+11234567890, +919876543210

Address Line 1

Should range between 3 to 50 characters.
Should contain at least one alphabetic character.
Should be of a valid format matching the Post code.

  1. Mischelin Street, 2nd Avenue

Address Line 2

This field is optional, and the format should be same as Address Line 1

City

Should range between 2 to 25 characters.

Austin

State

Should range between 2 to 100 characters.

Texas

Post Code

Should be a valid post code.
Note: For countries doe

45123

Country Code

Should be a valid country code.

FRA, IND

ID Document

Should be a valid supported country document

Passport, Driver's License, Residence Permit, ID Card.

Advanced Liveliness

Should be a valid live selfie.

Live selfie