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