CtrlK
BlogDocsLog inGet started
Tessl Logo

transak

Transak fiat-to-crypto on-ramp for Web3. Buy and sell crypto with 100+ payment methods across 170+ countries.

67

Quality

56%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Advisory

Suggest reviewing before use

Optimize this skill with Tessl

npx tessl skill review --optimize ./public/skills/0xterrybit/transak/SKILL.md
SKILL.md
Quality
Evals
Security

Transak 🚀

Web3 payment infrastructure. Fiat on/off-ramp trusted by 600+ DeFi, NFT, and wallet projects.

Environment Variables

VariableDescriptionRequired
TRANSAK_API_KEYAPI KeyYes
TRANSAK_SECRETSecret for webhooksNo
TRANSAK_ENVSTAGING or PRODUCTIONNo

Features

  • 🌍 170+ Countries - Global coverage
  • 💳 100+ Payment Methods - Cards, bank, mobile
  • ⛓️ 75+ Blockchains - EVM, Solana, Bitcoin, etc.
  • 🔄 Off-Ramp - Sell crypto to fiat
  • 🎨 NFT Checkout - Direct NFT purchases
  • 🔌 Widget SDK - Easy integration

API Base URLs

  • Staging: https://api-stg.transak.com
  • Production: https://api.transak.com

Get Supported Cryptocurrencies

API_KEY="${TRANSAK_API_KEY}"
ENV="${TRANSAK_ENV:-STAGING}"
[[ "$ENV" == "PRODUCTION" ]] && BASE_URL="https://api.transak.com" || BASE_URL="https://api-stg.transak.com"

curl -s "${BASE_URL}/api/v2/currencies/crypto-currencies" | jq '.response[:10] | .[] | {symbol: .symbol, name: .name, network: .network.name}'

Get Supported Fiat Currencies

curl -s "${BASE_URL}/api/v2/currencies/fiat-currencies" | jq '.response[:10] | .[] | {symbol: .symbol, name: .name, paymentOptions: .paymentOptions}'

Get Price Quote

FIAT="USD"
CRYPTO="ETH"
FIAT_AMOUNT="100"
NETWORK="ethereum"
PAYMENT_METHOD="credit_debit_card"

curl -s "${BASE_URL}/api/v2/currencies/price" \
  -G \
  --data-urlencode "fiatCurrency=${FIAT}" \
  --data-urlencode "cryptoCurrency=${CRYPTO}" \
  --data-urlencode "fiatAmount=${FIAT_AMOUNT}" \
  --data-urlencode "network=${NETWORK}" \
  --data-urlencode "paymentMethod=${PAYMENT_METHOD}" \
  --data-urlencode "isBuyOrSell=BUY" | jq '{
    cryptoAmount: .response.cryptoAmount,
    fiatAmount: .response.fiatAmount,
    totalFee: .response.totalFee,
    conversionPrice: .response.conversionPrice
  }'

Generate Widget URL

API_KEY="${TRANSAK_API_KEY}"
WALLET_ADDRESS="<USER_WALLET>"
CRYPTO="ETH"
NETWORK="ethereum"
FIAT_AMOUNT="100"
FIAT_CURRENCY="USD"

# Build widget URL
WIDGET_URL="https://global.transak.com/?apiKey=${API_KEY}"
WIDGET_URL+="&walletAddress=${WALLET_ADDRESS}"
WIDGET_URL+="&cryptoCurrencyCode=${CRYPTO}"
WIDGET_URL+="&network=${NETWORK}"
WIDGET_URL+="&fiatAmount=${FIAT_AMOUNT}"
WIDGET_URL+="&fiatCurrency=${FIAT_CURRENCY}"
WIDGET_URL+="&productsAvailed=BUY"

echo "Widget URL: $WIDGET_URL"

Get Order Status

ORDER_ID="<ORDER_ID>"

curl -s "${BASE_URL}/api/v2/partners/order/${ORDER_ID}" \
  -H "api-key: ${API_KEY}" | jq '{
    status: .response.status,
    cryptoAmount: .response.cryptoAmount,
    transactionHash: .response.transactionHash,
    walletAddress: .response.walletAddress
  }'

Supported Networks

NetworkIDTokens
EthereumethereumETH, USDT, USDC, DAI
PolygonpolygonMATIC, USDT, USDC
ArbitrumarbitrumETH, ARB, USDC
OptimismoptimismETH, OP, USDC
BSCbscBNB, BUSD, USDT
SolanasolanaSOL, USDC
AvalancheavaxcchainAVAX, USDC
BasebaseETH, USDC
BitcoinbitcoinBTC

Payment Methods

MethodRegionsSpeed
Credit/Debit CardGlobalInstant
Apple PayGlobalInstant
Google PayGlobalInstant
Bank TransferGlobal1-3 days
SEPAEurope1-2 days
PIXBrazilInstant
UPIIndiaInstant
GCashPhilippinesInstant
GrabPaySEAInstant

Order Status Codes

StatusDescription
AWAITING_PAYMENT_FROM_USERWaiting for payment
PAYMENT_DONE_MARKED_BY_USERPayment submitted
PROCESSINGProcessing order
PENDING_DELIVERY_FROM_TRANSAKSending crypto
COMPLETEDOrder completed
CANCELLEDOrder cancelled
FAILEDOrder failed
REFUNDEDPayment refunded
EXPIREDOrder expired

Webhook Events

# Webhook payload
{
  "eventID": "ORDER_COMPLETED",
  "webhookData": {
    "id": "order-123",
    "status": "COMPLETED",
    "cryptoAmount": 0.05,
    "cryptoCurrency": "ETH",
    "transactionHash": "0x...",
    "walletAddress": "0x..."
  }
}

Verify Webhook

verify_webhook() {
  local payload="$1"
  local signature="$2"
  
  local expected=$(echo -n "$payload" | openssl dgst -sha256 -hmac "$TRANSAK_SECRET" | cut -d' ' -f2)
  
  [[ "$signature" == "$expected" ]]
}

Widget Customization

# Additional widget parameters
WIDGET_URL+="&themeColor=0066FF"           # Custom color
WIDGET_URL+="&hideMenu=true"               # Hide menu
WIDGET_URL+="&disableWalletAddressForm=true"  # Lock wallet
WIDGET_URL+="&exchangeScreenTitle=Buy%20Crypto"  # Custom title
WIDGET_URL+="&defaultPaymentMethod=credit_debit_card"

Safety Rules

  1. VERIFY webhook signatures
  2. NEVER expose API keys client-side
  3. CHECK order status before fulfilling
  4. VALIDATE wallet addresses

Error Handling

ErrorCauseSolution
INVALID_API_KEYBad API keyCheck credentials
UNSUPPORTED_CRYPTOCurrency unavailableCheck supported list
AMOUNT_TOO_LOWBelow minimumIncrease amount
AMOUNT_TOO_HIGHAbove maximumDecrease amount

Links

  • Transak Docs
  • Dashboard
  • Widget Demo
Repository
Demerzels-lab/elsamultiskillagent
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.