Skip to main content
Build seamless fiat-to-crypto and crypto-to-fiat flows for your exchange. FYATU provides the payment rails to connect African users to the crypto economy.

The Challenge

Crypto exchanges operating in Africa face significant hurdles:
  • Banking restrictions - Traditional banks often refuse to work with crypto businesses
  • Limited fiat rails - Few payment providers support crypto-related transactions
  • Slow settlements - Bank transfers can delay trading by days
  • High fees - International payment options are expensive
  • Regulatory complexity - Varying regulations across countries

The FYATU Solution

Fiat On-Ramp

Accept fiat deposits from 1M+ Fyatu users paying from their Fyatu wallets

Fiat Off-Ramp

Send fiat payouts instantly to users’ Fyatu wallet balances

P2P Escrow

Power peer-to-peer trading with secure escrow

Instant Settlement

Real-time payment confirmations for faster trading

On-Ramp Flow (Buy Crypto)

User initiates crypto purchase

Calculate fiat amount + fees

Create FYATU collection request

User pays from their Fyatu wallet

Webhook confirms payment instantly

Execute crypto purchase/transfer

Credit crypto to user's wallet

Off-Ramp Flow (Sell Crypto)

User initiates crypto sale

Lock/debit crypto from wallet

Calculate fiat payout amount

Call FYATU Payouts API

Fiat sent instantly to user's Fyatu wallet

Webhook confirms delivery

Complete transaction

Implementation Example

Fiat On-Ramp

// User wants to buy $100 worth of BTC
const cryptoAmount = await getCryptoPrice('BTC', 100, 'USD');

const deposit = await fyatu.collections.create({
  amount: 100.00,
  currency: 'USD',
  reference: `BUY-${userId}-${Date.now()}`,
  description: `Purchase ${cryptoAmount} BTC`,
  customer: {
    email: user.email,
    name: user.fullName,
    externalId: userId
  },
  metadata: {
    userId: userId,
    cryptoCurrency: 'BTC',
    cryptoAmount: cryptoAmount,
    exchangeRate: 100 / cryptoAmount,
    type: 'on_ramp'
  },
  redirectUrl: 'https://yourexchange.com/buy/success',
  webhookUrl: 'https://yourexchange.com/webhooks/fyatu'
});

return { checkoutUrl: deposit.checkoutUrl };

Fiat Off-Ramp

// User sells 0.005 BTC for fiat
const fiatAmount = await calculateFiatValue('BTC', 0.005, 'USD');

// First, lock the crypto
await lockCrypto(userId, 'BTC', 0.005);

// Then initiate payout to user's Fyatu wallet
const payout = await fyatu.payouts.create({
  amount: fiatAmount,
  currency: 'USD',
  reference: `SELL-${userId}-${Date.now()}`,
  description: 'Crypto sale proceeds',
  recipient: {
    accountId: user.fyatuClientId  // User's Fyatu account ID
  },
  metadata: {
    userId: userId,
    cryptoCurrency: 'BTC',
    cryptoAmount: 0.005,
    type: 'off_ramp'
  }
});

P2P Trading Integration

Power peer-to-peer crypto trading with FYATU as the fiat escrow:

P2P Buy Order Flow

// Buyer creates order to buy BTC from a seller
const order = await createP2POrder({
  buyer: buyerId,
  seller: sellerId,
  cryptoAmount: 0.01,
  fiatAmount: 500,
  currency: 'USD'
});

// Create collection for buyer's fiat payment
const payment = await fyatu.collections.create({
  amount: 500.00,
  currency: 'USD',
  reference: `P2P-${order.id}`,
  description: `P2P BTC purchase - Order #${order.id}`,
  customer: {
    email: buyer.email,
    externalId: buyerId
  },
  metadata: {
    orderId: order.id,
    type: 'p2p_escrow'
  },
  // Auto-expire if not paid
  expiresAt: new Date(Date.now() + 30 * 60 * 1000).toISOString()
});

// Buyer pays, crypto released to buyer, fiat released to seller

P2P Settlement

// On payment confirmation, release crypto and fiat
app.post('/webhooks/fyatu', async (req, res) => {
  const event = req.body;

  if (event.type === 'collection.completed') {
    const orderId = event.data.metadata.orderId;
    const order = await getP2POrder(orderId);

    // Release crypto to buyer
    await transferCrypto(order.seller, order.buyer, order.cryptoAmount);

    // Release fiat to seller
    await fyatu.payouts.create({
      amount: order.fiatAmount * 0.99, // Minus platform fee
      currency: order.currency,
      reference: `P2P-SETTLE-${orderId}`,
      recipient: { accountId: order.seller.fyatuAccountId }
    });

    await completeOrder(orderId);
  }

  res.status(200).send('OK');
});

Key Features for Exchanges

Real-Time Confirmations

  • Fyatu wallet payments: Confirmed in seconds
  • Instant webhooks for automated processing
  • No payment delays or pending states

Multi-Currency Support

Accept local currencies and settle in USD:
CurrencyOn-RampOff-Ramp
USD
CDF (DRC)
KES (Kenya)
UGX (Uganda)
TZS (Tanzania)
NGN (Nigeria)

Transaction Limits

Configure limits based on user verification level:
LevelDaily LimitMonthly Limit
Basic (email only)$100$500
Verified (ID)$1,000$10,000
Enhanced (full KYC)$10,000$100,000

Compliance Features

  • Transaction monitoring
  • Velocity checks
  • Suspicious activity alerts
  • Exportable reports for audits
  • Webhook events for AML systems

Handling Edge Cases

Payment Timeout

// Handle expired payment attempts
if (event.type === 'collection.expired') {
  const order = await getOrder(event.data.metadata.orderId);

  // Cancel the order
  await cancelOrder(order.id);

  // Notify user
  await sendNotification(order.userId, 'Payment expired. Please try again.');
}

Payout Failure

// Handle failed off-ramp payouts
if (event.type === 'payout.failed') {
  const trade = await getTrade(event.data.metadata.tradeId);

  // Reverse the crypto sale
  await unlockCrypto(trade.userId, trade.cryptoCurrency, trade.cryptoAmount);

  // Notify user
  await sendNotification(trade.userId,
    `Payout failed: ${event.data.failureReason}. Crypto has been returned.`
  );
}

Security Considerations

  1. Rate limiting - Prevent rapid-fire transactions
  2. Amount verification - Validate amounts match expected values
  3. Address whitelisting - For crypto withdrawals
  4. Cooling periods - Delay large withdrawals
  5. IP monitoring - Flag suspicious login locations

Why Fyatu for Crypto Exchanges?

BenefitDescription
1M+ User BaseAccess Fyatu’s growing user base across Africa
Instant On-RampUsers pay from their Fyatu wallet in seconds
Instant Off-RampPayouts arrive in users’ Fyatu wallets immediately
No Banking DependenciesDirect wallet-to-wallet transfers
Simple IntegrationOne API for both on-ramp and off-ramp
Fyatu users can fund their wallets using various local payment methods, giving you access to African crypto traders without integrating multiple payment providers.

Getting Started

1

Apply for Business Account

Sign up with your exchange details
2

Complete Compliance Review

Provide required documentation for crypto business verification
3

Configure APIs

Set up Collection App for on-ramp and Payouts for off-ramp
4

Implement Integration

Use our SDKs for faster integration
5

Test Thoroughly

Test all flows including edge cases in sandbox
6

Launch

Go live and start serving African crypto traders

Resources