Skip to main content
This guide walks through creating a payment order using the Sender API, the recommended path for all new integrations. You’ll have a working offramp in under 10 minutes.

Prerequisites

  • A Paycrest Sender account (sign up at app.paycrest.io)
  • KYB verification completed (typically 1–3 business days)
  • Your API Key from the dashboard

Step 1: Get an Exchange Rate

The rate endpoint is public (no API key needed). Fetch a fresh quote immediately before creating each order. Path: GET /v2/rates/{network}/{token}/{amount}/{fiat} — network is the first path segment (e.g. base). The JSON data object has sell and buy sides; for a typical offramp, use data.sell.rate.
curl "https://api.paycrest.io/v2/rates/base/USDT/100/NGN"

Step 2: Create a Payment Order

Use POST /v2/sender/orders. Set source.type and destination.type to choose the direction.
curl -X POST "https://api.paycrest.io/v2/sender/orders" \
  -H "API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "100",
    "source": {
      "type": "crypto",
      "currency": "USDT",
      "network": "base",
      "refundAddress": "0xYourWalletAddress"
    },
    "destination": {
      "type": "fiat",
      "currency": "NGN",
      "recipient": {
        "institution": "GTBINGLA",
        "accountIdentifier": "1234567890",
        "accountName": "John Doe",
        "memo": "Payment"
      }
    },
    "reference": "my-order-001"
  }'

Step 3: Complete the Payment

The response includes a providerAccount that tells you (or your user) where to send funds.

Offramp

Send tokens to providerAccount.receiveAddress before validUntil. The total to send is amount + senderFee + transactionFee (all returned in the response).

Onramp

Show providerAccount details to the user. They transfer exactly amountToTransfer in currency to accountIdentifier before validUntil.

Step 4: Track Order Status

Poll GET /v2/sender/orders/:id or listen for webhooks configured in your dashboard.
curl "https://api.paycrest.io/v2/sender/orders/ORDER_ID" \
  -H "API-Key: YOUR_API_KEY"

Order Statuses

  • initiated — order created, awaiting deposit
  • deposited — deposit confirmed (offramp)
  • pending — assigned to provider
  • fulfilling — fiat/crypto disbursement in progress
  • validated — payout confirmed by provider
  • settling — onchain release in progress
  • settled — order complete
  • expired — no deposit received before deadline
  • refunding — refund in progress
  • refunded — deposit returned to sender

Timing

  • Typical completion: under 30 seconds for the majority of orders
  • expired: receive address or virtual account never funded
  • refunded: deposit received but order couldn’t complete
  • Minimum order: $0.50 on any supported chain

Next Steps

Full Integration Guide

Webhooks, signature verification, token transfers, v1 legacy API, and more

API Reference

Interactive endpoint docs with full request/response schemas

Supported Stablecoins

Tokens, networks, contract addresses, and decimals

Supported Currencies

Active fiat corridors and delivery channels