Sell Bitcoin, Ethereum,
USDT & 10+ coins
for instant Naira
Accept any major cryptocurrency from your users and convert to Nigerian Naira at live market rates. Supports TRC20, ERC20, BEP20 and more. Settlement confirmed by webhook.
POST https://api.sogo.africa/v1/crypto/deposit-address Authorization: Bearer sogo_sk_live_•••••••••••••••• Content-Type: application/json Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000 { "asset": "usdt", "network": "trc20" }
200 OK 87ms { "message": "Deposit address retrieved successfully.", "data": { "asset": "usdt", "network": "trc20", "address": "TQn9Y2khEsLJW1CpqjZ...", "destination_tag": null, "is_active": true, "created_at": "2026-05-24T10:30:00Z" } }
10+ cryptocurrencies across multiple networks
All major assets your users trade, across the networks they already use. Live rates updated in real time.
Network & destination tag details
| Asset | Ticker | Networks | Destination Tag |
|---|---|---|---|
| Bitcoin | BTC | Native BTC network | Not required |
| Ethereum | ETH | ERC20 | Not required |
| Tether | USDT | TRC20, ERC20 | Not required |
| USD Coin | USDC | ERC20 | Not required |
| BNB | BNB | BEP20 (BSC) | Not required |
| TRON | TRX | TRC20 | Not required |
| Solana | SOL | Solana | Not required |
| Dogecoin | DOGE | Native DOGE | Not required |
| XRP | XRP | XRP Ledger | Required - included in response |
| Litecoin | LTC | Native LTC | Not required |
From deposit address to Naira in four steps
Webhook-driven settlement means you never have to poll. Your system is notified the moment funds are confirmed on-chain.
Fetch live rate
Call GET /v1/crypto/assets/{asset}/rate to get the current NGN market rate. Present this to your user before they deposit.
Create deposit address
Call POST /v1/crypto/deposit-address with the asset and network. Sogo provisions a unique deposit wallet for your user.
User sends crypto
Your user sends any amount to the returned address. Sogo monitors the blockchain and detects the deposit once it is confirmed.
Webhook + Naira settled
A transaction.completed webhook fires with the exact Naira payout. Funds are settled to your Sogo wallet instantly.
KYC & KYB requirements for Crypto API access
Sandbox environment: Crypto API access is available from Tier 2 (BVN or NIN verification).
Live environment: Crypto API requires Tier 3 KYC (identity document, address proof, selfie video) plus completed KYB (business verification) for your platform. These requirements ensure compliance with Nigerian financial regulations.
Crypto sell (your users sending crypto): Sogo notifies your admin team for any single settlement of ₦5 million or more.
Crypto API endpoints
Five endpoints cover the complete crypto settlement workflow - from asset discovery to deposit address provisioning.
Returns all supported crypto assets with their slugs, display names, supported networks, and whether they require a destination tag (memo). Use this to populate your UI dynamically without hardcoding asset lists.
GET https://api.sogo.africa/v1/crypto/assets Authorization: Bearer sogo_sk_live_••••••••••••••••
200 OK 62ms { "data": [ { "slug": "usdt", "name": "Tether USD", "ticker": "USDT", "networks": [ { "slug": "trc20", "label": "TRC-20 (TRON)", "requires_tag": false }, { "slug": "erc20", "label": "ERC-20 (Ethereum)", "requires_tag": false } ], "is_active": true }, // ... 9 more assets ] }
Returns the estimated NGN payout for a given crypto amount, including the current exchange rate, platform fee, and net amount your wallet will receive. Pass ?amount= to estimate for a specific quantity (e.g. ?amount=0.5). Defaults to 1 if omitted. Rates are live and may change between fetch and deposit confirmation.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string (path) | required | Asset slug from /v1/crypto/assets (e.g. btc, usdt, eth). |
| amount | numeric (query) | optional | Crypto amount to estimate (e.g. 0.01). Defaults to 1 if omitted. |
GET https://api.sogo.africa/v1/crypto/assets/usdt/rate Authorization: Bearer sogo_sk_live_••••••••••••••••
200 OK 44ms { "data": { "asset": "usdt", "crypto_amount": "1", "rate": "1632.50", "usd_ngn_rate": 1500.00, "estimated_ngn": 1632.50, "fee_rate": 0.01, "fee_percent": 1.0, "fee_ngn": 16.33, "user_receives_ngn": 1616.17 } }
Retrieves an existing deposit address for a specific asset and network combination. Use this to display a previously provisioned address to a returning user, or to check whether an address has already been created before calling the POST endpoint.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | required | Asset slug (e.g. btc, usdt). |
| network | string | optional | Network slug (e.g. trc20, erc20). Defaults to the asset's default network if omitted. |
Provisions a new deposit address for the specified asset and network. The same address is reused for subsequent deposits from the same user for that asset/network pair. Sogo monitors the address on-chain and fires settlement webhooks automatically.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | required | Asset slug from /v1/crypto/assets (e.g. usdt, btc). |
| network | string | optional | Network slug (e.g. trc20, erc20, bep20). Defaults to the asset's default network if omitted. Must be a valid network for the asset. |
POST https://api.sogo.africa/v1/crypto/deposit-address Authorization: Bearer sogo_sk_live_•••••••••••••••• Content-Type: application/json Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000 { "asset": "usdt", "network": "trc20" }
200 OK 87ms { "message": "Deposit address retrieved successfully.", "data": { "asset": "usdt", "network": "trc20", "address": "TQn9Y2khEsLJW1CpqjZGMtwc...", "destination_tag": null, "is_active": true, "created_at": "2026-05-24T10:30:00Z" } }
// PHP - provision a USDT (TRC20) deposit address $client = new \GuzzleHttp\Client; $response = $client->post( 'https://api.sogo.africa/v1/crypto/deposit-address', [ 'headers' => [ 'Authorization' => 'Bearer ' . getenv('SOGO_SECRET_KEY'), 'Content-Type' => 'application/json', 'Idempotency-Key' => \Ramsey\Uuid\Uuid::uuid4()->toString(), ], 'json' => [ 'asset' => 'usdt', 'network' => 'trc20', ], ] ); $address = json_decode($response->getBody(), true)['data']; // Display $address['address'] to user as QR code + text // XRP requires $address['destination_tag'] - warn users if non-null
import { randomUUID } from 'crypto'; const res = await fetch( 'https://api.sogo.africa/v1/crypto/deposit-address', { method: 'POST', headers: { Authorization: `Bearer ${process.env.SOGO_SECRET_KEY}`, 'Content-Type': 'application/json', 'Idempotency-Key': randomUUID(), }, body: JSON.stringify({ asset: 'usdt', network: 'trc20', }), } ); const { data } = await res.json(); // Render data.address as QR code for user to scan
Simulates an incoming crypto deposit against a previously created sandbox deposit address. This fires the full webhook pipeline - identical to a real on-chain deposit - so you can test your integration end-to-end without real crypto. No Idempotency-Key required for this diagnostic endpoint.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset | string | required | Asset symbol (e.g. btc, usdt). |
| network | string | optional | Network slug (e.g. trc20, bitcoin). |
| crypto_amount | numeric | required | Amount of cryptocurrency to deposit (e.g. 100.0). |
| test_reference | string | required | Custom reference for outcome control (e.g. ending in 0000, 9999, or other). Webhook event will include this reference. |
Real-time settlement notifications
Sogo fires HMAC-signed webhook events as each crypto deposit progresses through the settlement pipeline.
Fired when the crypto deposit is confirmed on-chain and Naira is successfully credited to your wallet. The payload confirms the exact NGN amount, the asset, the crypto amount, the rate at the time of settlement, and the blockchain transaction hash (tx_hash) for easy reconciliation.
Each webhook delivery includes an X-Sogo-Signature-256 header. Securely verify this signature using your webhook secret key before processing:hash_hmac('sha256', $rawBody, $secret)
Accept crypto, pay out Naira
Get API keys in minutes. Test the full deposit flow - including webhooks - against our sandbox before any real crypto moves.