Overview
An offramp gives your customer a crypto address for sending USDC or USDT into Daya. Daya records the incoming crypto as a deposit, then sends the value as Naira to a Nigerian bank account. New integrations create offramps with Funding Accounts. In the API, an offramp is a funding account with:| Field | Value |
|---|---|
rail | CRYPTO_ADDRESS |
asset | USDC or USDT |
chain | Supported network |
type | TEMPORARY or PERMANENT |
The older
/v1/offramps routes still exist for existing integrations. New integrations should create offramps with /v1/funding-accounts.Customer
Every offramp belongs to a customer. Create the customer first withPOST /v1/customers, then pass customer.customer_id when creating the funding account.
A customer can have multiple temporary offramps. Permanent offramps are reused when there is already a live one for the same customer, asset, and chain.
Temporary Offramps
Use a temporary offramp for one crypto deposit that should pay out to a Nigerian bank account.| Behavior | Details |
|---|---|
| Purpose | One-off crypto deposit |
| Asset and chain | Required |
| Reuse | Never reused |
| Address expiry | Yes. Funds must arrive before the address expires |
| Settlement | NGN_PAYOUT only |
| Rate | Valid SELL rate_id required |
| Bank account | Resolve before creating the offramp |
- Get a SELL rate with
GET /v1/rates?side=SELL. - List banks with
GET /v1/banks. - Resolve the destination account with
POST /v1/banks/resolve. - Create the offramp with
/v1/funding-accounts. - Display the crypto address, asset, chain, and expiry time to the customer.
Temporary offramp to NGN payout
Permanent Offramps
Use a permanent offramp when the same customer should keep the same crypto address for repeat deposits.| Behavior | Details |
|---|---|
| Purpose | Long-lived crypto deposit address |
| Asset and chain | Required |
| Reuse | One live permanent address per merchant, customer, asset, and chain |
| Address expiry | No expiry while active |
| Settlement | INTERNAL_BALANCE or NGN_PAYOUT |
| Rate | Applied when each deposit settles |
Permanent offramp to Daya balance
Bank Payouts
ForNGN_PAYOUT, resolve the bank account before creating the offramp:
- List supported banks with
GET /v1/banks. - Resolve the account with
POST /v1/banks/resolve. - Send the verified
account_numberandbank_codeindestination_bank.
account_name in the funding account request.
Settlement
Choose where the crypto value goes after Daya receives the deposit.| Settlement destination | What happens | Allowed types |
|---|---|---|
INTERNAL_BALANCE | Funds are credited to your Daya balance | PERMANENT |
NGN_PAYOUT | Funds are converted to NGN and paid to a Nigerian bank account | TEMPORARY, PERMANENT |
NGN_PAYOUT only. Permanent offramps support INTERNAL_BALANCE and NGN_PAYOUT.
Developer Fees
To keep a percentage of each offramp deposit, senddeveloper_fee.percentage when creating the funding account. Use a decimal string from 0 to 50. Deposit responses and deposit webhooks show the developer fee and the customer amount separately from Daya fees.
For offramps, the developer fee is deducted before the final customer amount is calculated. The deposit response and webhook show the exact fee in developer_fee and the amount left for the customer in customer_amount.
developer_fee.percentage is a percentage value, not basis points. For example, 0.5 means 0.5%, 2 means 2%, and 50 means 50%.
Supported Chains
Offramps support APTOS, BASE, CELO, ETHEREUM, POLYGON, SOLANA, and TRON. See Supported Chains for the full deposit and withdrawal matrix per environment.Track Deposits
Use/v1/deposits to reconcile money received through offramps. Deposit responses include funding_account_id, asset, chain, and tx_hash.
For funding-account offramps with NGN_PAYOUT, NGN payout delivery happens in the background as part of deposit settlement. Track the customer-facing state from the deposit status, settlement_status, and deposit.* webhooks. Show states such as Deposit received, Settlement processing, Settlement settled, Settlement failed, or Requires review. Do not wait for a separate transfer or payout webhook for this flow.
Listen for:
| Event | Meaning |
|---|---|
funding_account.active | Crypto address is ready |
deposit.received | Daya recorded the incoming crypto deposit |
deposit.processing | Settlement has started |
deposit.completed | Settlement reached its destination |
deposit.requires_review | The deposit needs review before continuing |
Next Steps
Create Funding Account
Create an offramp with a crypto address.
Banks
Resolve a bank account before NGN payout.
Deposits
Reconcile crypto deposits.