On-Ramp and Off-Ramp Query Params
walletAddressesData
In the case of currencies that use a secondary address identifier/tag/memo, it can be specified in the addressAdditionalData field.
Data Format
{
networks: {
ethereum: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
polygon: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1', addressAdditionalData: '123456' },
},
coins: {
BTC: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
DAI: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
BNB: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1', addressAdditionalData: '123456' },
},
}
Convert the JSON to encoded data
encodeURIComponent(JSON.stringify({
networks: {
ethereum: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
polygon: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1', addressAdditionalData: '123456' },
},
coins: {
BTC: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
DAI: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1' },
BNB: { address: '0x6353D15E8A61df4eD412746654D44B8188a737C1', addressAdditionalData: '123456' },
},
}))
Usage
&walletAddressesData=%7B%22networks%22%3A%7B%22ethereum%22%3A%7B%22address%22%3A%220x6353D15E8A61df4eD412746654D44B8188a737C1%22%7D%2C%22polygon%22%3A%7B%22address%22%3A%220x6353D15E8A61df4eD412746654D44B8188a737C1%22%2C%22addressAdditionalData%22%3A%22123456%22%7D%7D%2C%22coins%22%3A%7B%22BTC%22%3A%7B%22address%22%3A%220x6353D15E8A61df4eD412746654D44B8188a737C1%22%7D%2C%22DAI%22%3A%7B%22address%22%3A%220x6353D15E8A61df4eD412746654D44B8188a737C1%22%7D%2C%22BNB%22%3A%7B%22address%22%3A%220x6353D15E8A61df4eD412746654D44B8188a737C1%22%2C%22addressAdditionalData%22%3A%22123456%22%7D%7D%7D
userData
Data Format
{
firstName: 'Satoshi',
lastName: 'Nakamoto',
email: '[email protected]',
mobileNumber: '+15417543010',
dob: '1994-08-26',
address: {
addressLine1: '170 Pine St',
addressLine2: 'San Francisco',
city: 'San Francisco',
state: 'CA',
postCode: '94111',
countryCode: 'US',
},
}
Convert the JSON to encoded data
encodeURIComponent(JSON.stringify({
firstName: 'Satoshi',
lastName: 'Nakamoto',
email: '[email protected]',
mobileNumber: '+15417543010',
dob: '1994-08-26',
address: {
addressLine1: '170 Pine St',
addressLine2: 'San Francisco',
city: 'San Francisco',
state: 'CA',
postCode: '94111',
countryCode: 'US',
},
}))
Usage
&userData=%7B%22firstName%22%3A%22Satoshi%22%2C%22lastName%22%3A%22Nakamoto%22%2C%22email%22%3A%22satoshi.nakamoto%40transak.com%22%2C%22mobileNumber%22%3A%22%2B15417543010%22%2C%22dob%22%3A%221994-08-26%22%2C%22address%22%3A%7B%22addressLine1%22%3A%22170%20Pine%20St%22%2C%22addressLine2%22%3A%22San%20Francisco%22%2C%22city%22%3A%22San%20Francisco%22%2C%22state%22%3A%22CA%22%2C%22postCode%22%3A%2294111%22%2C%22countryCode%22%3A%22US%22%7D%7D
The correct format of a US postal code can be either the first 5 digits alone or the complete 9 digits with a hyphen after the first 5 digits. For example, the valid formats are:
Five-digit format: "XXXXX" (e.g., 12345)
Nine-digit format: "XXXXX-XXXX" (e.g., 12345-6789)
redirectURL
User will be redirected to the partner page passed in redirectURL
along with the following parameters appended to the URL:
orderId
: Transak order IDfiatCurrency
: Payout fiat currencycryptoCurrency
: Token symbol to be transferredfiatAmount
: Expected payout fiat amountcryptoAmount
: Amount of crypto to be transferredisBuyOrSell
: Will be 'Sell' in case of off rampstatus
: Transak order statuswalletAddress
: Destination wallet address where crypto should be transferredtotalFeeInFiat
: Total fee charged in local currency for the transactionpartnerCustomerId
: Partner's customer ID (if present)partnerOrderId
: Partner's order ID (if present)network
: Network on which relevant crypto currency needs to be transferred
For example, if you submit redirectURL=https%3A%2F%2Fwww.url.com, we will redirect the customer to https://www.url.com/?orderId={{id}}&fiatCurrency={{code}}&cryptoCurrency={{code}}&fiatAmount={{amount}}&cryptoAmount={{amount}}&isBuyorSell=Sell&status={{orderStatus}}&walletAddress={{address}}&totalFeeInFiat={{amount}}&partnerCustomerId={{id}}&partnerOrderId={{id}}&network={{code}}
walletRedirection
Usage
-
When
walletRedirection=true
is passed along withredirectURL
query param in case of SELL flow i.e.productsAvailed=SELL
then:- User will be redirected to the redirect URL with order info appended as parameters as mentioned here when user clicks on 'Transfer Crypto' CTA on 'Complete Your Transfer' page.
- An event called TRANSAK_WALLET_REDIRECTION is sent across with the following javascript object:
{
orderId
: <Transak order ID>
fiatCurrency
: <Payout fiat currency>
cryptoCurrency
: <Token symbol to be transferred>
fiatAmount
: <Expected payout fiat amount>
cryptoAmount
: <Amount of crypto to be transferred>
isBuyOrSell
: <Will be 'Sell' in case of off ramp>
status
: <Transak order status>
walletAddress
: <Destination wallet address where crypto should be transferred>
totalFeeInFiat
: <Total fee charged in local currency for the transaction>
partnerCustomerId
: <Partner's customer ID (if present)>
partnerOrderId
: <Partner's order ID (if present)>
network
: <Network on which relevant crypto currency needs to be transferred>
} - It is upto the partner to redirect users to their crypto withdrawal page by pre-filling the relevant withdrawal details from the URL parameters or the frontend event json object.
- If
redirectURL
query param is not passed along withwalletRedirection
then:- Only the TRANSAK_WALLET_REDIRECTION frontend event is sent along with the order metadata as mentioned above in point 1. (ii)
- Partner can read the above event and redirect users to their crypto withdrawal page by pre-filling the relevant withdrawal details (from the above mentioned js object) like:
cryptoCurrency
cryptoAmount
network
walletAddress
- Note that for the Redirect Link Integration Method, it is mandatory to pass the
redirectURL
query parameter alongside thewalletRedirection
query parameter.
calldata
In case, you don't know how to generate calldata, refer this.
In case of multiple NFTs and a complicated contract, the size of calldata can exceed header limits.
To prevent this, you need to compress the calldata using a lossless compression library like Pako.
Data Format
0xf6ad734200000000000000000000000008d30445495bbcb3bab60ef5b4d1ecc3fcc65ae76334586972637676557a4e6d545756716e353456785a0000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000018b04b4d2650000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000000300000000000000000000000021b51ec6fb7654b7e59e832f9e9687f29df94fb800000000000000000000000021b51ec6fb7654b7e59e832f9e9687f29df94fb800000000000000000000000088320b06e132dc1020e47fff61022e943466f51b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000006423b872dd00000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006423b872dd00000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000b6e5b4c297d6b504f830d66093af4756a5ba798500000000000000000000000000000000000000000000000000000000000dbba00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4234af04600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000005330425000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a4223a1f675cf721b541bdfbce04162a35f57f5564b07a8165033dab325cf2a15495aac7dffb7d7bbf5c4211a536e8a98ed79728c47ceda5c8758a9726902fb41b00000000000000000000000000000000000000000000000000000000000000
Convert the string to encoded Base64-encoded ASCII compressed data
import pako from 'pako';
const callData = '0xf6ad734200000000000000000000000008d30445495bbcb3bab60ef5b4d1ecc3fcc65ae76334586972637676557a4e6d545756716e353456785a0000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000018b04b4d2650000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000000300000000000000000000000021b51ec6fb7654b7e59e832f9e9687f29df94fb800000000000000000000000021b51ec6fb7654b7e59e832f9e9687f29df94fb800000000000000000000000088320b06e132dc1020e47fff61022e943466f51b00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000006423b872dd00000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000186a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006423b872dd00000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000b6e5b4c297d6b504f830d66093af4756a5ba798500000000000000000000000000000000000000000000000000000000000dbba00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4234af04600000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000092b676d4caf95c07e33866d6e8cb40e65177f88a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000005330425000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a4223a1f675cf721b541bdfbce04162a35f57f5564b07a8165033dab325cf2a15495aac7dffb7d7bbf5c4211a536e8a98ed79728c47ceda5c8758a9726902fb41b00000000000000000000000000000000000000000000000000000000000000'
encodeURIComponent(btoa(String.fromCharCode.apply(null, pako.deflate(callData))))
Usage
&calldata=eJzFVkuuHDEIvJLN38cBY86Q44e3yqqjUVuT1KrVBmEXoorxq8RTkWA8wRIHEdPiiB0YHjJOcVDOszfW3sJ%2BVBCJTZaCoIoKszodSSZWFp1ykDtC1Ngfa73Gvkuf9DLPYlAzAcJX9f9C%2F4fApwOYwd0oqeieUOjhdQyh1lliWrCyFlXYt%2FKtg0cMORMh9xwwDmlVSX%2FCWYQkUjzjW%2B%2F%2FDHKXPu%2FSx7wdCSHAMIXMp4gF0VOZtL0W76EH0URSju2gcYSnapndXuSGiWnyBWn4CN%2FnL%2BS0Zm5YmhI8qAxHioyFXtQK6Ryuy250JCP%2BF3%2Bn%2BSOvQZeDdK2Dl5P4XP%2FfzM9LH%2FqD9%2B9nbJ%2BHOx97DZpOAOizRHmX%2FrgOzciKffpQwJGLtZiFYqjbbMdFTA%2BEjgefPwuK%2B9asdqrUiOJNMKczdo982Unt5cQ26T7pvE25f%2Fe6sgZU0K0D%2FQY6newc
nftData
Data Format
[
{
imageURL: "https://pokemon-nfts.s3.ap-southeast-2.amazonaws.com/images/1.png",//String
nftName: "Pokemon Metadata Legends", //String
collectionAddress: "0x8a20e9e8e736643161ce6a2fe8dd8dd62050cd1e",//String
tokenID: ["6","7","8"],//Array(string)
price: [15,15,15],//Array(number)
quantity: 3,//Number
nftType: "ERC721"//String (ERC721 or ERC1155)
}
]
Convert the JSON to encoded Base64-encoded ASCII data
encodeURIComponent(btoa(JSON.stringify([
{
imageURL: "https://pokemon-nfts.s3.ap-southeast-2.amazonaws.com/images/1.png",//String
nftName: "Pokemon Metadata Legends", //String
collectionAddress: "0x8a20e9e8e736643161ce6a2fe8dd8dd62050cd1e",//String
tokenID: ["6","7","8"],//Array(string)
price: [15,15,15],//Array(number)
quantity: 3,//Number
nftType: "ERC721"//String (ERC721 or ERC1155)
}
])))
Usage
&nftData=WwogICAgICAgIHsKICAgICAgICAgIGltYWdlVVJMOiAiaHR0cHM6Ly9wb2tlbW9uLW5mdHMuczMuYXAtc291dGhlYXN0LTIuYW1hem9uYXdzLmNvbS9pbWFnZXMvMS5wbmciLC8vU3RyaW5nCiAgICAgICAgICBuZnROYW1lOiAiUG9rZW1vbiBNZXRhZGF0YSBMZWdlbmRzIiwgLy9TdHJpbmcKICAgICAgICAgIGNvbGxlY3Rpb25BZGRyZXNzOiAiMHg4YTIwZTllOGU3MzY2NDMxNjFjZTZhMmZlOGRkOGRkNjIwNTBjZDFlIiwvL1N0cmluZwogICAgICAgICAgdG9rZW5JRDogWyI2IiwiNyIsIjgiXSwvL0FycmF5KHN0cmluZwogICAgICAgICAgcHJpY2U6IFsxNSwxNSwxNV0sLy9BcnJheShudW1iZXIpCiAgICAgICAgICBxdWFudGl0eTogMywvL051bWJlcgogICAgICAgICAgbmZ0VHlwZTogIkVSQzcyMSIvL1N0cmluZyAoRVJDNzIxIG9yIEVSQzExNTUpCiAgICAgICAgfQpd
cryptoCurrencyData
Data Format
[
{
"cryptoCurrencyCode": "AUSDC",
"cryptoCurrencyName": "Aave USDC",
"cryptoCurrencyImageURL": "https://assets.coingecko.com/coins/images/11674/standard/aUSDC.png?1696511564"
}
]
Convert the JSON to encoded Base64-encoded ASCII data
encodeURIComponent(btoa(JSON.stringify([
{
"cryptoCurrencyCode": "AUSDC",
"cryptoCurrencyName": "Aave USDC",
"cryptoCurrencyImageURL": "https://assets.coingecko.com/coins/images/11674/standard/aUSDC.png?1696511564"
}
])))
sourceTokenData
[
{
"sourceTokenCode": "USDC",
"sourceTokenAmount": 10
}
]
Convert the JSON to encoded Base64-encoded ASCII data
encodeURIComponent(btoa(JSON.stringify([
{
"sourceTokenCode": "USDC",
"sourceTokenAmount": 10
}
])))
tokenData
[
{
nftName: "Fight Club", //String
imageURL: "https://i.seadn.io/s/raw/files/c9c65ccb29917aa39b449573090b9222.png", //String
collectionAddress: "0xc491a4a3601e9923366823523efe29415f6430c3", //String
tokenID: ["0","1","2"], //Array(string) OR Array(number)
marketplace: "opensea", //String
normalizeRoyalties: false //boolean
}
]
Convert the JSON to encoded Base64-encoded ASCII data
encodeURIComponent(btoa(JSON.stringify(
[
{
nftName: "Fight Club",
imageURL: "https://i.seadn.io/s/raw/files/c9c65ccb29917aa39b449573090b9222.png",
collectionAddress: "0xc491a4a3601e9923366823523efe29415f6430c3",
tokenID: ["0","1","2"],
marketplace: "opensea",
normalizeRoyalties: false
}
])))
How to generate calldata
In this example we are creating calldata for depositing WBTC into Testnet AAVE protocol but same method can be used to generate calldata for NFT trades, staking, borrowing/lending or any other smart contract function.
Updated 4 days ago