Skip to main content
Match exposes three order endpoints: one to submit an order, one to list orders with filters, and one to fetch a single order with full detail. This guide covers all three, including BURN-specific and MINT-specific required fields, market versus limit orders, filter options for listing, and how to read lineage and fill data on individual orders. If you’re new to Match, start with the quickstart before continuing here.

Prerequisites

Before you begin, ensure that you’ve:
  • Obtained a Circle API key with Match access
  • Created a Circle Mint wallet with sufficient USDC balance and linked a fiat account to receive settlement proceeds (BURN orders only)
  • Reviewed the funding model and auction mechanics

Steps

Step 1. Place a BURN order

A BURN order converts USDC to fiat. It requires two fields that MINT orders omit: sourceWalletId (the wallet that funds the burn) and fiatAccountId (the bank account that receives the settlement proceeds). The idempotencyKey you supply in the request body becomes the orderId for all subsequent lookups. Use a unique UUID v4 for each new order. Reusing an idempotency key with different parameters returns a 409 with error code 137004.
A successful request returns 202 Accepted:
Required fields for BURN orders:

Step 2. Place a MINT order

A MINT order converts fiat to USDC. It uses the same endpoint and most of the same fields, but you must omit sourceWalletId and fiatAccountId. Including either field in a MINT order returns a validation error.
Required fields for MINT orders:

Step 3. Place a market order

A market order matches at whatever clearing fee the auction produces, with no fee ceiling. To place a market order, omit feeBps entirely, or explicitly set it to null.
A limit order (with feeBps set) only matches when the clearing fee does not exceed your limit. If the clearing fee is higher, the order ends the auction cycle unfilled and follows your postFillAction election.

Step 4. List orders with filters

Use GET /v1/match/orders to retrieve a paginated list of your orders. All parameters are optional.
Available query parameters: The response includes a pagination object alongside the orders array:

Step 5. Get a single order and read lineage and fill

Use GET /v1/match/orders/{id} to fetch full detail for one order, including its lineage and fill result.
Reading lineage fields When an order rolls into a new auction cycle, Match creates a new order linked to the original. The lineage object lets you trace the full chain:
  • lineage.parentOrderId: the UUID of the order this one rolled from. null if this is the original order.
  • lineage.childOrderId: the UUID of the order this one rolled into. null if the order hasn’t rolled yet, or if it was cancelled.
To reconstruct the full history of a rolled order, start with any order in the chain and follow parentOrderId backward or childOrderId forward until you reach null. Reading the fill object The fill field is null until the order is matched. Once matched, it contains:
A non-zero unfilledAmount indicates a partial fill. In that case, check lineage.childOrderId to find the follow-on order that was created for the unfilled portion according to your postFillAction election.

Order status lifecycle

Error reference