Track order status
On this page
/cash/v1/merchant/exchange/orders/{orderId} Auth: API key (Bearer)exchange:readReturns the live state of an order. Reads trigger a throttled upstream status sync (at most once per 10 s), so polling every 10 s is the right cadence.
Status model
status | Meaning |
|---|---|
pending | waiting for your deposit |
processing | deposit seen; confirming / exchanging / sending |
completed | payout sent; deliveryTxHash filled |
expired | no deposit before expiresAt. If a payment still arrives after expiry, the order moves to reconciliation_required |
failed | the exchange could not complete; refund handled per the rules shown on the order page |
reconciliation_required (orderStatus: MANUAL_REVIEW) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| orderId | path | string | yes | Order id or order number returned at creation. |
{
"ok": true,
"code": 200,
"message": "OK",
"data": {
"orderId": "order_6b1e6d3d-…",
"status": "completed",
"orderStatus": "COMPLETED",
"providerStatus": "done",
"paymentAddress": "0x9a1f…c3e2",
"paymentAmount": "50",
"paymentTxHash": "0x3c5e…9d1a",
"deliveryTxHash": "7f0b…e4c2",
"actualFromAmount": "50",
"actualToAmount": "145.02",
"payinConfirmations": 15,
"completedAt": 1789305412000,
"feeBreakdown": {
"total": "0.728715",
"currency": "TRX",
"totalPercentage": "1.00"
}
}
}Code samples
curl -X GET 'https://api.moin.cash/cash/v1/merchant/exchange/orders/<orderId>' \
-H 'Authorization: Bearer ck_live_xxxxxxxxxxxxxxxx'Try it
Requests go through this site to the same gateway your integration uses. Use a sandbox key (ck_test_…): quotes are synthetic and orders are simulated. A live key creates real quotes and real orders.