Skip to main content

Off-Ramp Integration Guide

This guide walks you through integrating the Zet Off-Ramp API to let your users sell crypto and receive Nigerian Naira (NGN) in their bank account.

Overview

Step 1: Get available banks

Fetch the list of supported Nigerian banks:
Cache the bank list — it changes infrequently. Refresh it once per day.

Step 2: Verify the bank account

Before quoting, verify the user’s bank account to confirm the recipient name:
Always verify and display the account name to the user before proceeding. This prevents sending NGN to the wrong person.

Step 3: Get a quote

Request a quote with the crypto amount to sell, token, and bank details:

Quote response

Fee breakdown

Step 4: Initiate the off-ramp

Custodial flow (Zet-managed wallet)

For custodial wallets, the crypto is automatically debited and the process begins immediately.

Non-custodial flow (user-managed wallet)

For non-custodial, the response includes a depositAddress where the user must send the crypto. Once received, the off-ramp process begins.

Response

Step 5: Handle completion

Listen for the offramp.completed webhook:

Processing timeline

Best practices

  1. Always verify the bank account first — show the resolved name to your user
  2. Display clear fee breakdown — users should know exactly what they’ll receive
  3. Handle failures gracefully — inform users their crypto is returned on failure
  4. Use webhooks — don’t poll for off-ramp status in production
  5. Cache bank list — refresh once per day, not on every page load