Skip to main content
Execute trades against the Strails FX orderbook using one of three execution modes: quote-based (recommended for price certainty), direct market (best available price), or targeted (against a specific liquidity provider’s order). All trades settle through an on-chain escrow: your cNGN is locked at the time of matching and released to the counterparty only after the blockchain transaction confirms. Use the status endpoints to track each trade through its full lifecycle.

Endpoints Overview


Get Quote

Generate a price quote by matching your requested cNGN amount against live orderbook liquidity. The response includes the matched order(s), the resulting stablecoin amount you will receive, and a quoteId you can pass directly to POST /fx/trade. The quote is valid for five minutes.
Quotes expire exactly five minutes after generation. If you pass an expired quoteId to POST /fx/trade, the request is rejected. Generate a fresh quote and retry.
string
required
Trading pair in the format CNGN-TOKEN. Accepted values: "CNGN-USDC" or "CNGN-USDT".
string
required
Trade direction. Use "sell" to exchange cNGN for the quote currency, or "buy" to acquire cNGN by spending the quote currency.
string
The cNGN amount to trade, expressed as a human-readable decimal (e.g., "50000" means 50,000 cNGN). Provide this or tokenAmount, not both. Minimum is 1,000 cNGN.
string
The pair-currency amount to trade, expressed as a human-readable decimal (e.g., "37.04" for USDC or "37.04" for USDT). Use this when you want the quote denominated in the pair token instead of cNGN. Provide this or cngnAmount, not both.

Execute Trade

Execute an FX trade. Choose from three execution modes depending on how much price certainty and targeting you need.
Before calling this endpoint, ensure the cNGN you intend to trade is held in your Fintech Smart Wallet. You can retrieve your smart wallet address from GET /getfintechwallet.

Create Market Order

Submit an immediate market order that executes at the current best available price from the orderbook. Market orders skip the quote step and settle based on your auto-signing configuration.
Market orders execute against the best available limit order at the time of submission. If orderbook liquidity changes between your request and matching, the final fill price may differ slightly from what you observed in the orderbook stats. Use POST /fx/quote followed by POST /fx/trade (Mode 1) if exact price certainty is required.
string
required
Trading pair. Accepted values: "CNGN-USDC" or "CNGN-USDT".
string
required
Trade direction: "sell" to exchange cNGN for the quote currency, or "buy" to acquire cNGN.
string
required
Amount of cNGN to trade, in human-readable format (e.g., "50000" = 50,000 cNGN). Your wallet must hold at least this amount.
string
On-chain address to receive the output tokens. Defaults to your registered fintech wallet if omitted.
string
Client-generated unique key to prevent duplicate order execution on retry.

Get Trade Status

Retrieve the full details and current status of a single trade. Poll this endpoint to track a trade from pending through to completed or failed.
string
required
The tradeId returned when the trade was created.

List Trades

List your fintech’s FX trades with optional filters. Results are paginated using a cursor-based approach with startAfter.
string
Filter by trading pair. Accepted values: "CNGN-USDC" or "CNGN-USDT".
string
Filter by trade direction. Accepted values: "buy" or "sell". Case-insensitive.
string
Filter by trade status. Case-insensitive. See the Trade Status Lifecycle section for all accepted values.
number
Maximum number of trades to return. Defaults to 50; maximum is 100.
string
The tradeId of the last trade in the previous page. Pass this value to fetch the next page of results.

Trade Status Lifecycle

Every trade passes through the following statuses as it progresses from submission to final settlement:

Status Flow

When a trade expires or fails, the escrowed cNGN is automatically released back to your wallet.

Common Errors


Additional Notes

All cNGN and stablecoin amounts in request bodies use human-readable decimal notation (e.g., "50000" = 50,000 cNGN). All amounts in orderbook fields (price, minAmount, maxAmount, availableLiquidity) use the smallest unit with 6 decimal places. Divide those values by 1,000,000 to convert to human-readable form.
Quotes and trade locks both expire after exactly five minutes. Structure your integration to execute the trade immediately after generating a quote, and to poll GET /fx/trades/status for settlement confirmation rather than relying on synchronous responses.