Skip to main content
POST
Preview an onramp or offramp payout
Preview the amount a customer receives after Daya fees and an optional developer fee. Supports NGN → USDC/USDT and USDC/USDT → NGN on supported networks. The request does not create a funding account, initiate a payout, reserve funds or move money.
The result is an estimate (is_estimate: true), not a guaranteed payout. expires_at is the rate expiry. Fee changes can invalidate the preview earlier.

Authentication

string
required
Your merchant API key. Scoped API keys require business:read.
Send Content-Type: application/json. Keep API keys on your server.

Request body

string
required
Currency the customer sends: NGN, USDC or USDT.
string
required
Currency the customer receives: NGN, USDC or USDT. One side must be NGN and the other must be USDC or USDT.
string
required
Total amount received by Daya, including applicable fees. Send a positive decimal string with at most two decimal places for NGN or six for crypto. JSON numbers and exponent notation are not accepted.
string
required
The destination crypto network for onramp or the source crypto network for offramp. Use the asset/network combinations available in your environment: supported chains.
object
Optional object with a percentage decimal string from 0 to 50, with up to four decimal places. For example, {"percentage": "1.5"} means 1.5%. Omission means zero. Send the same percentage you will use for the funding account; the preview does not read an existing account’s fee configuration.

Request examples

source_amount is the input budget; destination_amount is the net output. Do not subtract the returned fees from destination_amount again.

Response

Returns HTTP 200 with a quote object, without a data wrapper. This onramp example assumes a rate of 1,500 NGN per USD, a 100 NGN deposit fee and a 0.1 USDC payout fee. These values are illustrative; use your response’s current rate, fees and expiry.
Amounts are decimal strings: NGN uses two decimal places and crypto/USD uses six. The rate uses eight decimal places.

Rates and fee currencies

The preview uses NGN/USD BUY for onramp and USD/NGN SELL for offramp, matching funding settlement without a locked rate. USDC and USDT follow the existing USD settlement accounting. A token-specific rate from GET /v1/rates can differ from the USD rate used here. Do not sum fees with different currencies. The FX spread is already included in rate. Sender bank fees and wallet gas paid outside Daya are excluded. The final NGN bank payout must be at least NGN 100.

Use the preview in a payment flow

  1. Request a preview for the intended source amount, currencies, chain and developer fee.
  2. Show destination_amount, the fee breakdown and rate expiry to the customer.
  3. Create the funding account using the existing transaction contract. For temporary flows that accept a rate ID, pass the returned rate_id in settlement_destination.rate_id.
  4. Follow the funding-account response for the exact amount and payment deadline. Track the actual result through deposits and deposit webhooks.
Permanent funding accounts reject rate_id and use the current USD-pair rate at settlement. A temporary rate lock does not freeze all fees or guarantee settlement. Refresh the preview when inputs change or the rate expires. The endpoint does not accept rate_id or quote_id, calculate a source amount from a desired destination amount, or preview internal merchant/customer balance settlement. Use it for NGN-to-wallet and crypto-to-NGN-bank payout previews.

Errors

Errors use the standard error envelope. No partial quote is returned.