Whitelabel API

A complete API solution for building custom on/off ramp experiences.

View as Markdown

The Transak Whitelabel API enables partners to integrate Transak products directly into their own platforms using APIs, without displaying any third-party user interface (such as the Transak Widget).

Partners maintain complete control over the user interface and end-to-end user journey, while Transak manages the backend complexities through APIs, including KYC, compliance, liquidity, payment processing, and fraud management.

Who Should Use This?

This solution is ideal for partners who want to fully own and control the E2E user journey, including the user interface, experience, and flow.

Wallets

Integrate fiat on/off-ramps directly into wallet interfaces for seamless user experience.

DEXs or CEXs

Enable users to buy and sell crypto within your exchange platform using fiat.

DApps

Add fiat payment options to decentralized applications for broader user accessibility.

Fintech Apps

Power remittances, neobanks, and cross-border payment solutions with crypto rails.

Key Capabilities

Build and control the complete user journey, from authentication and KYC to order creation and tracking, without any third-party UI.

Partner Integration Prerequisites

1

Contact & Request Whitelabel APIs access

Follow the steps in the Need help in Integration section to reach us. Then raise the request to enable Whitelabel APIs for your API key and share your public IP addresses with Transak for whitelisting to use our APIs in your backend.

2

Start Whitelabel API Integration

Start by designing and implementing the complete user flow, including error handling. See the Lookup API reference to begin.

3

Include Transak's Terms & Conditions

You must include Transak’s Terms of Service within their own Terms & Conditions. End users must be able to review and acknowledge Transak’s T&C as part of the user journey.

Current Limitations & Known Constraints

ProductSupportedLimitations
On RampYes

Card / Apple Pay: Semi-widget flow required. Navigate to Transak’s Widget to add cards and place orders.

Google Pay: Not supported.

Bank Transfers: Fully supported through APIs.

Lite KYC: Fully supported through APIs (Personal & Address details).

Standard KYC: Navigate to Transak’s provider widget to upload Document ID Proof and conduct Liveness checks.

Off RampNo

NA

NFT CheckoutNo

NA

KYC Reliance Via SumsubYes

Not supported for US KYC users

Transak Stream - Off RampNo

NA

Transak Stream - On RampNo

NA

Whitelabel APIs are to be called only from the partner backend and subjected to the whitelisting of partner IP addresses. Direct API calls from the frontend apps are not supported.

API Overview

Logged In User Flow Chart
2

Get User Details

Pass the existing User Access Token to Get User Details to fetch the user’s KYC status. Route the user as follows:

ConditionNext step

response = 200 and data.kyc.status === “APPROVED”

Proceed to Create Order — Bank Transfer or Create Order — Cards, Apple Pay flow

response = 200 and data.kyc.status === “NOT_SUBMITTED”

Proceed to KYC Flow

response = 200 and data.kyc.status === “ADDITIONAL_FORMS_REQUIRED”

Proceed to Additional KYC Flow

response = 401

Proceed to Not Logged In Flow — the User Access Token is missing, expired, or invalid. Re-authenticate using the Not Logged In Flow tab (Send User OTP → Verify User OTP).

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 Flow 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.

All forms must be submitted in the sequence provided in the Get Additional Requirements API.

KYC Flow - Step-by-Step Guide

1

Fetch KYC Status

Use this step to fetch the current status of the user’s KYC, based on the quoteId.

Call Get KYC Requirement with the quoteId (and the User Access Token as required by the API).

ConditionNext step

data.kyc.status = APPROVED

Move forward with the Create Order Flow

data.kyc.status = NOT_SUBMITTED

Follow Step 2

data.kyc.status = ADDITIONAL_FORMS_REQUIRED

Follow Step 3

2

Patch User Details

Call Patch User Details to collect and submit the user’s profile and address information.

Personal Information

firstName
stringRequired

User’s first name

lastName
stringRequired

User’s last name

mobileNumber
stringRequired

Mobile number with country code

dateOfBirth
stringRequired

Date of birth (ISO 8601)

Address Information

addressLine1
stringRequired

Street address

city
stringRequired

City

state
stringRequired

State or province

postCode
stringRequired

Postal or zip code

country
stringRequired

Country code (ISO 3166-1 alpha-2)

Once submitted, return to Step 1 to re-fetch the updated KYC status.

3

Get Additional Requirements

Call Get Additional Requirements to check which forms still need to be completed.

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
4

Post Purpose of Usage

Call Update Purpose of Usage to record the user’s reason for buying crypto.

Ask user for their reason to buy crypto (e.g., investing, remittance).

5

Complete ID Proof & Liveness Check

Standard KYC only

Redirect the user to the Transak-hosted KYC widget using the kycUrl returned in the Additional Requirements response.

ID Proof Upload
action

Upload a photo ID — Passport, Driver’s License, or National ID

Liveness Check
action

Submit a selfie for real-time identity validation

Widget-based step

This step is handled by the Transak KYC widget. Use the kycUrl from the previous API response to redirect the user.

6

Submit SSN

US users only

Call Submit SSN to validate the user’s identity using their Social Security Number.

ssn
stringRequired

9-digit Social Security Number

Required before virtual bank creation

SSN must be submitted before a virtual bank account can be created for the user.

7

Submit Source of Income

Enhanced KYC only

Call Submit Source of Income to capture the user’s primary income source. Required for higher transaction limits.

sourceOfIncome
stringRequired

Accepted values: SALARY, BUSINESS, INVESTMENTS, SAVINGS

8

Upload Proof Document

Enhanced KYC only

Call Upload Proof Document to submit supporting documentation for the income source selected in the previous step.

Document type depends on income source

The required document type is determined by the source of income submitted in Step 7.

Different KYC Levels Guide

KYC TypeKYC StatusUser StatusAction
nullNOT_SUBMITTEDACTIVECall GET KYC Requirement API → Complete KYC Forms
SIMPLESUBMITTEDACTIVEPoll GET User Details API
SIMPLEAPPROVEDACTIVECall GET KYC Requirement API → If APPROVED place order → If ADDITIONAL_FORMS_REQUIRED call Get Additional Requirements API → If NOT_SUBMITTED patch user details
SIMPLEREJECTEDACTIVECall GET KYC Requirement API → If ADDITIONAL_FORMS_REQUIRED call Get Additional Requirements API → If NOT_SUBMITTED patch user details
STANDARDSUBMITTEDACTIVEPoll GET User Details API
STANDARDAPPROVEDACTIVECall GET KYC Requirement API → If APPROVED place order → If ADDITIONAL_FORMS_REQUIRED call Get Additional Requirements API
STANDARDREJECTEDACTIVECall GET KYC Requirement API → If APPROVED place order → If ADDITIONAL_FORMS_REQUIRED call Get Additional Requirements API → If NOT_SUBMITTED patch user details
STANDARDREJECTEDDISABLEDShow static screen — Contact Support
ENHANCEDSUBMITTEDACTIVEPoll GET User Details API
ENHANCEDAPPROVEDACTIVECall GET KYC Requirement API → If APPROVED place order
ENHANCEDREJECTEDACTIVECall GET KYC Requirement API → If APPROVED place order → If ADDITIONAL_FORMS_REQUIRED call Get Additional Requirements API → If NOT_SUBMITTED patch user details
ENHANCEDREJECTEDDISABLEDShow static screen — Contact Support
KYC Reliance Flow Chart

API Sequence

1

Get KYC Reliance Quote

Call Get KYC Reliance Quote with kycShareTokenProvider and kycShareToken alongside the common fields used in the standard Get Quote API.

On success, you will receive a quoteId to use in the next step.

2

Get KYC Reliance Status

Call Get KYC Reliance Status with the quoteId and kycShareToken to fetch the user’s KYC status, then route accordingly:

kycStatus
FAILED · 401 · 500

Generate a new KYC Share Token and repeat from Step 1.

kycStatus
IMPORTED · DONE

Proceed to Get KYC Steps.

Things to Consider

  1. KYC Reliance supports only SumSub providers, and more are coming soon.
  2. KYC Reliance supports only Standard KYC as the default process, where Document ID and Selfie checks are mandatory. The partners should pass the Document ID and Selfie documents to get the complete whitelabel experience to onboard their users seamlessly as per the steps mentioned in the docs.
  3. Purpose Of Purchase is a mandatory step in Transak’s KYC system, even for KYC Reliance flows.
  4. Refer to the detailed step-by-step guide to generating the KYC Share token using SumSub docs.
Bank Transfer Flow Chart
1

Get KYC Requirement

Call Get KYC Requirement with the quoteId to fetch the user’s KYC status and route accordingly:

WhenNext step

data.kyc.status = APPROVED

No further steps in the KYC process. Proceed to Get User Limits.

data.kyc.status = NOT_SUBMITTED

User details need to be submitted. Proceed to Patch User Details.

data.kyc.status = ADDITIONAL_FORMS_REQUIRED

More steps in the KYC process are required. Proceed to Get Additional Requirements.

2

Get User Limits

Call Get User Limits with paymentMethod = bank_transfer and fiatCurrency to fetch the user’s monthly, daily, and yearly limits along with available limits to place an order.

On success → proceed to Get Active Orders.

3

Get Active Orders

Call Get Active Orders to check for any existing pending orders. Transak doesn’t support placing multiple orders simultaneously.

activeOrder
exists

Proceed to Cancel Order

activeOrder
not exists

Proceed to Create Order

4

Create Order

Call Create Order passing quoteId, paymentInstrumentId (payment method), and walletAddress.

Case 1
status = AWAITING_PAYMENT_FROM_USER · errorMessage = null

Proceed to Confirm Payment

Case 2
status = AWAITING_PAYMENT_FROM_USER · errorMessage = Order exists

Cancel Order → repeat Get User Limits

Case 3
statusCode = 400 · message = Order exists

Get Quote → repeat Get User Limits

5

Confirm Payment

Call Confirm Payment with orderId and paymentMethod to confirm the bank transfer.

On success → proceed to Get Order By ID.

6

Cancel Order

Call Cancel Order with orderId and cancelReason to cancel a pending order.

Cancel before re-ordering

This step is only required when an existing active order is detected. After cancellation, return to Get User Limits to start a fresh order.

7

Get Order By ID

Call Get Order By ID with orderId to poll the final order status.