Onramp to Any Token from 160+ Countries

Universal Bridge now supports extended onramping via Transak

Onramp to Any Token from 160+ Countries

We've added Transak to our suite of supported onramp providers in the Universal Bridge. Along with Coinbase and Stripe, Transak brings the total supported countries to over 160, and supported direct onramp tokens to over 170. Explore all the countries and tokens Transak supports.

When used with Universal Bridge, our onchain routing allows you to onramp to thousands of tokens. Some of the notable countries the Universal Bridge now supports:

  • Philippines
  • South Korea
  • Brazil
  • Japan
  • Indonesia
  • Hong Kong

Onramping with the API

To get an onramp link and quote using the Universal Bridge API, use the following:

const res = await fetch('https://bridge.thirdweb.com/v1/onramp/prepare', {
    method : 'POST',
    headers: {
      'Content-Type': 'application/json',
      'x-secret-key': process.env.THIRDWEB_SECRET_KEY,
    },
    body: JSON.stringify({
      onramp:      'transak',
      chainId:     4337,
      tokenAddress:'0xAFf7314Bc869f4AB265ec7EfA8E442F1D978d7a',
      maxSteps:    2,
      amount:      '200000000000000000',
      currency:    'USD',
      receiver:    '0x2a4f24f935eb178e3e7ba9b53a5ee6d8407c0709',
    }),
});

const data = await res.json();

The returned quote will look something like this:

{
    "data": {
        "id": "3179cf89-e915-4103-b61e-991bf3a33e93",
        "link": "https://global.transak.com/...",
        "destinationAmount": "2000010000000000",
        "timestamp": 1747165958956,
        "expiration": 1747169558945,
        "intent": {
            "chainId": 4337,
            "tokenAddress": "0xAff7314Bc869ff4AB265ec7Efa8E442F1D978d7a",
            "amount": "2000010000000000",
            "receiver": "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709",
            "onramp": "transak",
            "currency": "USD",
            "maxSteps": 2
        },
        "steps": [
            {
                "originToken": {
                    "chainId": 4337,
                    "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
                    "symbol": "BEAM",
                    "name": "Beam",
                    "decimals": 18,
                    "priceUsd": 0.00974066,
                    "iconUri": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384"
                },
                "destinationToken": {
                    "chainId": 4337,
                    "address": "0xAff7314Bc869ff4AB265ec7Efa8E442F1D978d7a",
                    "symbol": "FP",
                    "name": "Forgotten Playland",
                    "decimals": 18,
                    "priceUsd": 0.0006662,
                    "iconUri": "https://coin-images.coingecko.com/coins/images/35339/small/FP-Token-Icon_%281%29.png?1744266332"
                },
                "transactions": [
                    {
                        "type": "eip1559",
                        "to": "0xF8Ab2dBE6c43bf1a856471182290f91D621Ba76d",
                        "from": "0x2a4f24F935Eb178e3e7BA9B53A5Ee6d8407C0709",
                        "value": "142478928995176",
                        "data": "...",
                        "chainId": 4337,
                        "action": "buy",
                        "id": "0xb15a4e9999fc5504e64085dd812b33090e33e3b3b84f4d1adbaf52e6587af8f1",
                        "spender": "0x965B104e250648d01d4B3b72BaC751Cde809D29E"
                    }
                ],
                "originAmount": "142478928995176",
                "destinationAmount": "2000010000000000",
                "estimatedExecutionTimeMs": 12000
            }
        ],
        "currency": "USD",
        "currencyAmount": 1.06
    }
}

You can then use the top-level id to get the onramp's status:


const res = await fetch('https://bridge.thirdweb.com/v1/onramp/status?id=3179cf89-e915-4103-b61e-991bf3a33e93', {
    method : 'GET',
    headers: {
      'Content-Type': 'application/json',
      'x-secret-key': process.env.THIRDWEB_SECRET_KEY,
    },
});

const data = await res.json();

The returned status:

{
    "data": {
        "status": "COMPLETED",
        "transactions": [
            {
                "chainId": 4337,
                "transactionHash": "0xd36a649a23044e980446a3183c6cfe9016d539a6ff88f31b611a1614b1d265aa"
            }
        ],
        "purchaseData": null
    }
}

To learn more about how to use thirdweb's Universal Bridge for onramping, bridging, or swapping, check out the API reference or docs.