Skip to main content
Available Countries: South Africa, Kenya

1. Transaction Initiation

Creating an onramp transaction with rate locking.

2. Fiat Payment Collection

Mobile Money Payment

Available Countries: All supported countries Networks: M-PESA

Bank Checkout Payment

Fiat Wallet Deduction


3. Crypto Delivery

Lightning Network Delivery

EVM Chain Delivery

Supported Networks: Ethereum, Polygon, Arbitrum, Base, Optimism Tokens: USDT, USDC, DAI

TRON Network Delivery

Tokens: USDT (TRC20)

Fiat Wallet Credit (No Crypto Wallet)


4. Webhook Notification


Transaction Statuses

StatusDescription
PENDINGAwaiting fiat payment
PENDING_PROVIDERPayment initiated with provider
CRYPTO_PENDINGFiat confirmed, crypto transfer in progress
PROCESSINGBlockchain transaction submitted
SUCCESSCrypto delivered successfully
FAILEDTransaction failed (fiat refunded to wallet)
TIMEOUTPayment not confirmed within 24 hours

Key Features

Rate Locking

  • Exchange rate locked at transaction creation
  • Valid for 30 minutes
  • Auto-refreshed upon payment confirmation

Flexible Delivery

  • Has Crypto Wallet: Crypto delivered to user’s address
  • No Crypto Wallet: Fiat credited at crypto rate

Safety Mechanisms

  • Failed crypto transfers automatically refund to fiat wallet
  • Up to 3 retry attempts for blockchain transactions
  • Balance never lost

Error Handling

Insufficient Fiat Wallet Balance

{
  "statusCode": 400,
  "message": "Insufficient balance in fiat wallet"
}

Invalid Crypto Address

{
  "statusCode": 400,
  "message": "Invalid crypto address"
}

Crypto Transfer Failed (Auto-Refund)

{
  "status": "FAILED",
  "message": "Crypto transfer failed after 3 attempts",
  "refund": {
    "amount": 10000,
    "currency": "KES",
    "destination": "Fiat Wallet",
    "status": "REFUNDED"
  }
}

Best Practices

  • Pre-Check Rates: Use /rates/onramp-rate before creating transaction
  • Validate Addresses: Verify address format matches network
  • Handle Callbacks: Implement webhook endpoint with HMAC verification
  • Monitor Status: Poll status endpoint and display transaction hash to users

Testing

Use sandbox mode with test credentials provided in sandbox documentation.