Skip to main content
Coins adds a small set of primitives on top of the Daya API. Shared primitives (customers, funding, webhooks) live there — this page covers only the Coins delta.

Assets

Assets are caid-keyed (<chain>:<contract> or <chain>:native). Majors and stablecoins are curated; memecoins and other long-tail tokens resolve by contract address.
Memecoins are supported only on BSC (bsc), Robinhood Chain (robinhood), and Solana (solana). Tokens on any other network cannot be listed or traded.

Balances

GET /balance returns your USD cash position — available, held, and total. held currently returns "0", so total equals available. GET /wallet/portfolio breaks the position into per-asset holdings with 24h stats.
Coins balances are separate from Stocks and the Business API — value in one product is not automatically available in another.

Trade: quote → order

Trading a coins asset is quote-driven. POST /quote prices a conversion between two assets; POST /orders executes it.
1

Quote

POST /quote with input_asset, output_asset, and exactly one of input_amount / output_amount. Returns an id, a rate, and an expires_at.
2

Execute

POST /orders with the quote id as quote_id. Save one Idempotency-Key for the logical order and reuse it for every retry.
Quote amounts are shown fee-inclusive so you can render real numbers; the taker fee settles as a separate component at execution.

Cash out: FX quote → withdrawal

A fiat withdrawal converts your USD balance to NGN, so it needs a currency quote — separate from the trade quote above. POST /fx/quotes locks a USD→NGN rate; POST /fiat-withdrawals pays it out to a bank account.
1

FX quote

POST /fx/quotes with amount_usd. Returns an id, the USD→NGN rate, and an expires_at.
2

Withdraw

POST /fiat-withdrawals with the bank_account_id and the FX quote id as quote_id.
Quotes expire after a few seconds. An expired quote returns 410 Gone; a reused quote returns 409 Conflict. Request a fresh quote and retry — the price you show a customer is the price they get.

Orders

POST /orders executes a trade quote_id. List them with GET /orders, fetch one with GET /orders/{id}. Each order also carries executed amounts (base_amount, quote_amount), an executed_price, and a fee (with its fee_asset).
The execution venue is never part of the contract — you request the economic result, and Daya routes and settles.

Transactions

GET /transactions is a cursor-paginated statement of money movements — deposits and withdrawals. Trades are not activity here; read them under Orders. Filter with ?direction=in (deposits) or ?direction=out (withdrawals), optionally filter by asset, and pass the returned next_cursor to page. A movement is described by two orthogonal fields — the rail (method) and which way value moved (direction): So bank_transfer + in is a fiat deposit; onchain + out is a crypto withdrawal. Each entry also carries id, asset, amount (native), amount_usd, created_at, and completed_at.

Withdrawals

Coins supports two rails: Both rails report a status: pending · processing · completed · failed.

Response envelope

Every Coins response uses the standard Daya envelope: