⬇️ Transak Stream

πŸ“Œ Overview

Transak Off-Ramp Stream is the latest innovation in crypto off-ramping, allowing users to receive fiat directly into their bank accounts/cards with just one click. As simple as sending crypto from one wallet to another, Transak Stream makes moving between crypto and fiat seamless and intuitive. With Transak's APIs, apps and platforms can build Streams into their workflows, enabling smooth, one-click flows for their users.

Transak Off-Ramp Stream Perfect for: Remittances, payroll systems, e-commerce payouts, and any app needing instant crypto-to-fiat conversion.

⚑ How It Works: User Experience

Imagine a user wants to withdraw $1,000 USDC from their Web3 wallet:

  1. Click the "Withdraw to Bank" button in their wallet
  2. Send USDC to their dedicated Transak wallet address (auto-created)
  3. Wait ~1 minute for fiat to land in their bank account
  4. Done βœ“ No extra apps, no complex forms

That's it. No redirects. No confusion. This smooth, hassle-free process redefines the off-ramp experience, making it incredibly user-friendly while giving wallet partners a competitive advantage.

πŸ”‘ Key Features

Quick ConfigurationConfigure your integration in minutes with just query parameters
Dedicated WalletEach user gets a personal Multi-Stream-Wallet for easy management
Fast SettlementSend crypto from any wallet to your user's dedicated wallet address to Off-Ramp in under one minute.
Multiple Payment MethodsSupports SEPA, FPS, and card withdrawals.
Global CoverageUsers can set a default crypto and network that are currently supported with Off Ramp .
Flexible Crypto SupportSupports all the countries supported for Off Ramp

πŸ”„ Product Flow

Transak Off-Ramp Stream consists of three main flows and can be configured to your apps in 3 easy steps.

Step 1️⃣Step 2️⃣Step 3️⃣
IntegrationWallet SetupCrypto Transfer Flow

Integrate Transak Off-Ramp Stream

Step 1: Choose your Integration Type that are supported by Transak.

Select how you want to integrate Transak Stream:

Step 2: Pass the Mandatory Query Params

Pass these required parameters to initialize Transak Stream:

Mandatory query parametersValue
apiKeyyour_api_key
environmentstaging/production
referrerDomainyourdomain.com
isTransakStreamOffRamptrue
cryptoCurrencyCodeUSDT(sample)
networkethereum(sample)

Step 3: Transak Stream flow will be loaded and ready to set up. Please refer the Code Samples and Flow Demo

Refer to the Create Widget URL guide to obtain the widgetUrl link.

πŸ’» Code Samples

import { Transak } from "@transak/ui-js-sdk";
import { useEffect } from "react";

const InstantOffRampEventsSDK = () => {
  useEffect(() => {
    const transak = new Transak({
      widgetUrl: "https://global-stg.transak.com?apiKey=YOUR_API_KEY&sessionId=<YOUR_SESSION_ID>", // (Required)
    });

    transak.init();

    // The .close() method contains the callback data for the Transak Stream for a user.
    Transak.on(Transak.EVENTS.TRANSAK_WIDGET_CLOSE, (eventData) => {
      console.log(Transak.EVENTS.TRANSAK_WIDGET_CLOSE, eventData);
      transak.close();
    });

    return () => {
      transak.cleanup();
    };
  }, []);

  return <div id="transakMount" />;
};

export default InstantOffRampEventsSDK;

https://global.transak.com/?apiKey=<YOUR_API_KEY>&sessionId=<YOUR_SESSION_ID>
  <body>
    <div>
      <iframe
        id="transak-iframe"
        title="Transak"
        src="https://global-stg.transak.com/?apiKey=YOUR_API_KEY&sessionId=<YOUR_SESSION_ID>
        allow="camera;microphone;fullscreen;payment"
        style="height: 650px; width: 400px; border: none"/>
    </div>
    <script>
      const iframe = document.getElementById("transak-iframe");
      const handleMessage = (event) => {
        if (!iframe || event.source !== iframe.contentWindow || !event.data?.event_id) 
          return;
        if (event.data.event_id === "TRANSAK_WIDGET_CLOSE") {
          console.log("TRANSAK_WIDGET_CLOSE", event.data.data);
        }
      };
      window.addEventListener("message", handleMessage);
      window.addEventListener("unload", () => {
        window.removeEventListener("message", handleMessage);
     });
    </script>
  </body>

Transak Stream callbacks:

When a user completes an off-ramp transaction, you'll receive a callback with details:

Integration TypeCallbackMessage
Browser RedirectionRedirection URLThe callbacks that are received for the Browser Redirection type in the form of Redirection URL.
SDK & iFrame{ "crypto": "ETH", "isTransakStreamOffRamp": "true", "network": "ethereum", "offRampStreamWalletAddress": "0x617d4XXXXXXXXXXXXXXXXXXXXDEE4F4", "withdrawalInstrument": "6V27", "withdrawalMethod": "BANK_ACCOUNT" }The callback data can be fetched from the Transak.EVENTS.TRANSAK_WIDGET_CLOSE events for SDK and event listener for iFrame method. Refer here for the code samples.

Callback Parameters:

FieldValue (Eg)Message
cryptoETHThe cryptocurrency code
isTransakStreamOffRamptrueBoolean to define the Transak Stream flow
networkethereumThe network of a token
offRampStreamWalletAddress0x617d4XXXXXXXXXXXXXXXXXXXXDEE4F4Dedicated wallet address of the user created for Transak Stream
withdrawalInstrument6V27Last four digits of the selected payment method
withdrawalMethodBANK_ACCOUNTSelected Payment method type.

πŸ’³ Wallet Setup Flow

β†’ Wallet Setup Flow Video


New User Flow

β‚Ώ Crypto Transfer Flow

β†’ Crypto Transfer Flow Video


Crypto Transfer Flow

πŸ§ͺ Test It Out - In Transak Widget

This feature is currently live in Transak Widget - Link. Access Level: Level 2 (Standard) KYC verified users only.

In Transak Widget:** Click "Transak Off-Ramp Stream" from the Hamburger Menu and click Transak Off-Ramp Stream
The Transak Off-Ramp Stream flow wallets can be configured by clicking the Explore Now option from the banner.