πŸ“œ 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.

πŸ”— 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.
2. Quick Onboarding⚑: - Onboard users from your platform to Transak in just a minute.
3. Self-Serve, Secure, and Powerful IntegrationπŸ”’ - Easy and secure partner integration.
4. 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/


Step 2: Create a Level in the dashboard

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


Step 3: Create a New Level

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


Step 4: Enable Identity document and Selfie

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

πŸ“˜

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.

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", // This should be 
    "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

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.

Step 3: KYC Data Fetching

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

Step 4: Order Placement

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

βœ” 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.

FieldsValidationValid Format
First NameShould range between 1 to 35 characters.John
Last NameShould range between 1 to 35 characters.Doe
Date of Birth (DOB)The user's age should be >= 18 years and <= 150dd/mm/yyyy, dd-mm-yyyy, dd.mm.yyyy
Mobile NumberShould be a valid mobile number starting with + and valid country code matching the user's region.+11234567890, +919876543210
Address Line 1Should range between 3 to 50 characters.
Should contain at least one alphabetic character.
Should be of a valid format matching the Post code.
10. Mischelin Street, 2nd Avenue
Address Line 2This field is optional, and the format should be same as Address Line 1
CityShould range between 2 to 25 characters.Austin
StateShould range between 2 to 100 characters.Texas
Post CodeShould be a valid post code.
Note: For countries doe
45123
Country CodeShould be a valid country code.FRA, IND
ID DocumentShould be a valid supported country documentPassport, Driver's License, Residence Permit, ID Card.
Advanced LivelinessShould be a valid live selfie.Live selfie