Skip to content

Crypto

Customers can pay with stablecoins on any of our checkouts. Each supported asset is offered on a specific network (for example USDT on Tron, USDC on Base), the customer sends the exact quoted amount to a deposit address we generate, and the payment confirms once it lands on-chain. It works the same across inline, standard, and invoice checkout.

Rolling out gradually

Crypto is being enabled account by account. If you do not see the Pay with Crypto option on your API keys in the dashboard, contact support to request access.

Enabling crypto

Crypto is configured per API key, in the dashboard under the key's payment methods:

  1. Toggle Crypto (USDC / USDT) on for the key.
  2. Choose how you want to be settled:
    • Settle in Naira: we convert the crypto and pay you through your existing settlement (bank or ZevPay balance). No wallet needed.
    • Settle in crypto: we pay out the same asset to your verified crypto wallet. You need a verified wallet for each asset you accept; add them under Settlement, then Crypto wallets. New and changed wallets pass a short security review before payouts flow to them.

Both modes settle on our standard T+1 schedule, like every other method.

How it appears to customers

When crypto is available on a session, each asset shows as its own option in the method list with its logo and an explicit network label, for example "USDT · Tron (TRC20)". After picking an asset the customer sees:

  • The exact amount of the asset to send, locked to a quote.
  • A deposit address with a QR code, plus a memo when the network requires one.
  • A clear warning that funds must be sent as that asset on that network only.

The page then waits for the on-chain confirmation and completes automatically. If the quote window lapses before payment, the session expires the same way other methods do.

When crypto is offered

An asset appears on a checkout only when all of these hold:

  • The API key has crypto enabled with a settlement mode set.
  • Your account has crypto access.
  • The checkout's value meets the minimum for that asset. Each asset has a platform minimum in its own units; a checkout worth less than the minimum (at the live rate) will not offer that asset.
  • For settle-in-crypto keys: you have a verified, payout-eligible wallet for the asset.

The decision is made when the session is created, and the offered assets are fixed for that session's lifetime.

Integration

No extra integration is needed beyond what you already have. Crypto rides the same session and webhook machinery:

  • The initialize response includes "crypto" in enabled_payment_methods and lists the offered assets in crypto_assets, each as { assetCode, network, displayName, decimals }.
  • A successful payment fires the same charge.success webhook with channel: "crypto" and a crypto object carrying the asset, network, and asset amount. The amount field stays the NGN presentment value in kobo.
  • Verify works unchanged; the session reports completed once the deposit confirms.
  • Invoices record crypto payments like any other method, so invoice.paid and invoice.payment_received fire as usual.

Amounts you price stay in your presentment currency; we handle the conversion quote for the customer.

Fees

Crypto payments use the same pricing configured for your account as our other methods, including the fee cap. With crypto settlement the fee is taken in the asset itself, and the naira cap is converted at that payment's own exchange rate, so a large payment never pays more than the cap's worth regardless of settlement mode.

Reliability

Payment confirmation is webhook-driven with an automatic reconciliation sweep behind it, so a confirmed on-chain deposit completes the checkout even if a webhook delivery is delayed. If a customer reports paying without the page confirming, the payment resolves automatically once the deposit confirms; the transaction also appears in your dashboard like any other.

ZevPay Checkout Developer Documentation