Create a sell order (USDT in, KES out)
Consumes a sell quote and returns your deposit address. Payout is asynchronous: nothing is paid out until you attach the transaction hash of your USDT send with PATCH /v1/orders/{id} and the order reaches a terminal state. A signed webhook tells you when it settles; polling is the fallback. Retry-safe: creating twice with the same partnerReference returns the original order rather than a second one. Your deposit address is the same for every order, so we cannot tell your orders apart by it — the transaction hash is what attributes a deposit.
Authorization
partner-key In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/orders/sell" \ -H "Content-Type: application/json" \ -d '{ "quoteId": "string", "partnerReference": "string", "payoutAccountId": "string" }'{ "orderId": "3a7c1f90-8b2d-4e56-9a01-cd23ef456789", "status": "awaiting_usdt", "kesAmount": "1281000.00", "usdtAmount": "10000.000000", "rate": "128.1000", "kesTotalAmount": "1256660.70", "fee": { "kesAmount": "24339.30", "currency": "KES", "percentBps": 190, "flatKesAmount": "0.30", "capKesAmount": null }, "expiresAt": "2026-09-01T09:30:00.000Z", "depositAddress": "TQiBwkXtUUNygiLdSwdeaZCKagwPsD1a7C", "chain": "tron", "sendBefore": "2026-09-01T09:30:00.000Z"}Create a buy order (KES in, USDT out) POST
Consumes a buy quote and debits the KES directly from your own VA balance — there is nothing to send and no payment instructions to read. Delivery is asynchronous: nothing is sent until the debit is confirmed and the order reaches a terminal state. Register a webhook endpoint rather than assuming a create means the trade is done. Retry-safe: creating twice with the same partnerReference returns the original order rather than a second one.
Attach the transaction hash of your USDT send PATCH
This is what attributes your deposit to this order. Attaching a different hash to an order that already has one is refused (409), never an overwrite — the first hash may already have been matched, and re-pointing the order would orphan a real deposit. Re-sending the SAME hash is safe and returns 200, so a retry after a lost response is fine.