Skip to main content
Spot reads are available on Mainnet and Testnet. Margin account fields and Perpetual references on this page are Testnet-Only.
Fill history for one address, used for reconciliation and accounting.

Get Own Trades

Difference from the Public Feed

Each match writes a maker leg and a taker leg. Market Data returns the maker leg only. This endpoint returns whichever leg belongs to the address, so takerOrMaker can be either value and fee.rate follows accordingly. Unlike the public feed, order and cloid are populated here, which is what lets you group fills back to the order that produced them.

Reconciling an Order

Sum the fills sharing one order:
  • Executed quantity: sum of amount
  • Average price: quantity-weighted mean of price
  • Gross quote notional: sum of cost
  • Fees: sum of fee.cost separately for each fee.currency
Spot receipts are truncated to integer token base units per fill. A weighted execution price and the net credited balance can therefore differ by rounding as well as fees. Use info.paid / info.received and confirmed balance movements when reconciling settlement. Never add a base-asset fee directly to quote notional. For example, buying 100 AULT at 2 USDC has 200 USDC of gross notional. A 0.1 AULT fee reduces the received amount to 99.9 AULT; it does not make the quote cost 200.1 USDC. A quote-asset fee instead changes the quote debit or proceeds. REST uses the realized fee amount and denomination when the indexer recorded them. Older rows without that information fall back to cost * rate in quote currency. Confirm actual settlement against the recorded asset movements and chain events when the distinction matters. WebSocket userFills uses the indexed fee amount and feeToken when available. Records without that value fall back to a quote-currency estimate. The frame has no explicit realized-versus-estimated flag. Reconcile by asset with REST and chain movements, and do not count the same fee twice.

Notes

Cursor paging works the same as on Market Data, including the 503 when cursor paging is temporarily unavailable. An invalid address returns 400 BAD_REQUEST. For fills as they happen, subscribe to userFills on Subscriptions.