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

Balances

GET /balance returns your USD cash position — available, held, and total. GET /wallet/portfolio breaks holdings down per asset.
Stocks balances are separate from Coins and the Business API — value in one product is not automatically available in another.

Assets & market hours

GET /assets is one endpoint that searches, filters, ranks, and paginates the catalog: Each asset reports price_usd, market_status, is_market_open, off-hours eligibility, and min_order_usd / max_order_usd — so you can validate an order before you quote it. market_status is one of open · regular · premarket · postmarket · overnight · closed · paused · off_hours.

Quote → execute

Trading is quote-driven — the price you show a customer is the price they get.
1

Request a quote

POST /quote with a symbol, a side (buy/sell), and either amount_usd or quantity. Returns an id, a price_usd, computed fee_usd / total_usd, and an expires_at.
2

Execute it

POST /orders with the quote_id. Save one Idempotency-Key for the logical order and reuse it for every retry.
Quotes expire (expires_at). If a quote id is no longer valid, request a fresh quote and retry.

Orders

POST /orders executes a quote. List them with GET /orders, fetch one with GET /orders/{id}. Each order also carries quantity, notional_usd, and fee_usd.

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 ?method=onchain|bank_transfer. 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 + in is a crypto deposit. Each entry also carries id, amount_usd, created_at, and completed_at.

Withdrawals

Cash out over the fiat rail:
1

Add a payout account

List banks (GET /fiat-withdrawals/banks), verify the account (POST /fiat-withdrawals/resolve-account), then save it (POST /fiat-withdrawals/accounts).
2

Lock the rate

POST /fx/quotes for the USD→NGN conversion — returns an id.
3

Withdraw

POST /fiat-withdrawals with the bank_account_id and the FX quote id as quote_id.

Response envelope

Every Stocks response uses the standard Daya envelope: