home / skills / openclaw / skills / transak
/skills/0xterrybit/transak
This skill helps you integrate Transak fiat-to-crypto on-ramp to buy or sell crypto across 170+ countries with 100+ payment methods.
npx playbooks add skill openclaw/skills --skill transakReview the files below or copy the command above to add this skill to your agents.
---
name: transak
description: Transak fiat-to-crypto on-ramp for Web3. Buy and sell crypto with 100+ payment methods across 170+ countries.
metadata: {"clawdbot":{"emoji":"🚀","always":true,"requires":{"bins":["curl","jq"]}}}
---
# Transak 🚀
Web3 payment infrastructure. Fiat on/off-ramp trusted by 600+ DeFi, NFT, and wallet projects.
## Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `TRANSAK_API_KEY` | API Key | Yes |
| `TRANSAK_SECRET` | Secret for webhooks | No |
| `TRANSAK_ENV` | `STAGING` or `PRODUCTION` | No |
## 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
```bash
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
```bash
curl -s "${BASE_URL}/api/v2/currencies/fiat-currencies" | jq '.response[:10] | .[] | {symbol: .symbol, name: .name, paymentOptions: .paymentOptions}'
```
## Get Price Quote
```bash
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
```bash
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
```bash
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
| Network | ID | Tokens |
|---------|-----|--------|
| Ethereum | ethereum | ETH, USDT, USDC, DAI |
| Polygon | polygon | MATIC, USDT, USDC |
| Arbitrum | arbitrum | ETH, ARB, USDC |
| Optimism | optimism | ETH, OP, USDC |
| BSC | bsc | BNB, BUSD, USDT |
| Solana | solana | SOL, USDC |
| Avalanche | avaxcchain | AVAX, USDC |
| Base | base | ETH, USDC |
| Bitcoin | bitcoin | BTC |
## Payment Methods
| Method | Regions | Speed |
|--------|---------|-------|
| Credit/Debit Card | Global | Instant |
| Apple Pay | Global | Instant |
| Google Pay | Global | Instant |
| Bank Transfer | Global | 1-3 days |
| SEPA | Europe | 1-2 days |
| PIX | Brazil | Instant |
| UPI | India | Instant |
| GCash | Philippines | Instant |
| GrabPay | SEA | Instant |
## Order Status Codes
| Status | Description |
|--------|-------------|
| `AWAITING_PAYMENT_FROM_USER` | Waiting for payment |
| `PAYMENT_DONE_MARKED_BY_USER` | Payment submitted |
| `PROCESSING` | Processing order |
| `PENDING_DELIVERY_FROM_TRANSAK` | Sending crypto |
| `COMPLETED` | Order completed |
| `CANCELLED` | Order cancelled |
| `FAILED` | Order failed |
| `REFUNDED` | Payment refunded |
| `EXPIRED` | Order expired |
## Webhook Events
```bash
# Webhook payload
{
"eventID": "ORDER_COMPLETED",
"webhookData": {
"id": "order-123",
"status": "COMPLETED",
"cryptoAmount": 0.05,
"cryptoCurrency": "ETH",
"transactionHash": "0x...",
"walletAddress": "0x..."
}
}
```
## Verify Webhook
```bash
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
```bash
# 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
| Error | Cause | Solution |
|-------|-------|----------|
| `INVALID_API_KEY` | Bad API key | Check credentials |
| `UNSUPPORTED_CRYPTO` | Currency unavailable | Check supported list |
| `AMOUNT_TOO_LOW` | Below minimum | Increase amount |
| `AMOUNT_TOO_HIGH` | Above maximum | Decrease amount |
## Links
- [Transak Docs](https://docs.transak.com/)
- [Dashboard](https://dashboard.transak.com/)
- [Widget Demo](https://global.transak.com/)
This skill integrates Transak fiat-to-crypto on-ramp and off-ramp capabilities into Web3 apps. It exposes APIs and widget generation utilities to let users buy and sell crypto using 100+ payment methods across 170+ countries. The skill includes examples for price quotes, order status, webhook verification, and widget customization to accelerate integration.
The skill wraps Transak REST endpoints and provides shell examples to fetch supported fiat/crypto, get price quotes, create widget URLs, and poll order status. It also documents webhook payloads and a simple HMAC-SHA256 verification function to validate events. Environment variables are used for API keys and environment selection (staging or production).
How do I switch between staging and production?
Set TRANSAK_ENV to STAGING or PRODUCTION; the code selects the base URL accordingly.
How are webhooks verified?
Compute HMAC-SHA256 of the raw payload using TRANSAK_SECRET and compare to the signature header.