December 18, 2025

Why You Can’t Reconcile Market Orders to Limit Orders in Crypto

featured image

For years, crypto traders and developers have been asking the same question:

“Can I reconcile a market order to the exact limit order it matched against?”

It sounds reasonable. Crypto trading is digital. Market data is streamed in real time. Blockchains are transparent. Surely the order matching process should be reconstructable.

But crypto markets don’t work the way most people imagine.

Trying to reconcile market orders to limit orders across crypto exchanges is like watching ripples on water and asking which exact molecule absorbed the impact. You can see the trade. You can see the liquidity change. You just can’t see the private order IDs involved.

That’s not a data provider limitation. It’s how crypto market microstructure actually works.

Many traders assume crypto exchanges publish a complete execution graph:

  • a market order arrives
  • it matches a resting limit order
  • both order IDs are published
  • anyone can reconstruct the trade

That model exists in textbooks and traditional market diagrams.

It does not exist in most crypto market data feeds.

Crypto exchanges publish trades and order book updates, not the internal matching engine ledger. What you receive is a public, normalized representation of market activity, not a full per-order lineage.

This distinction is where many trading systems quietly fail.

In practice, requests for market order reconciliation fall into two distinct use cases.

This category focuses on understanding how the market behaved:

  • which price levels were consumed
  • how much liquidity was taken
  • whether an order swept the book
  • how quickly liquidity replenished

This category focuses on accountability:

  • where an order was filled
  • whether it was maker or taker
  • how execution quality compares to expectations
  • how fills should be reported to clients or regulators

These two goals sound similar, but they rely on fundamentally different data guarantees.

CoinAPI provides the same core datasets that crypto exchanges themselves make public - normalized across venues and delivered consistently.

Trades data represents confirmed executions, not the internal state of an exchange’s matching engine.

A typical crypto trade record contains:

  • symbol_id: the unified instrument identifier (for example, BINANCE_SPOT_BTC_USDT)
  • time_exchange: when the trade occurred on the venue, in high-precision UTC
  • time_coinapi: when the trade was received and normalized by CoinAPI
  • price: the executed price
  • size: the executed quantity, expressed in base-asset units (for example, BTC in BTC/USDT)
  • taker_side: BUY or SELL, when the venue exposes aggressor information
  • trade_id or uuid: a unique identifier (exchange-native, CoinAPI-generated, or both)

This data tells you that a trade happened, at a specific price and size, initiated by a buyer or seller.

What it usually does not contain is the counterparty’s resting limit order ID.

Most crypto exchanges simply do not publish that information in their public trade feeds.

That absence is not accidental, and it’s the core reason why deterministic market-to-limit order reconciliation is generally impossible in crypto markets.

A more detailed system-level explanation is covered in Tick Data vs Order Book Snapshots: Complete Guide for Crypto Trading Systems.

Order book data describes visible liquidity at each price level, not individual orders or matching engine internals.

CoinAPI’s order book data is Level 2 (price-level aggregated), meaning sizes are grouped by price rather than exposed per order.

A typical L2 order book snapshot or update contains:

  • symbol_id: the unified instrument identifier (for example, BINANCE_SPOT_BTC_USDT)
  • time_exchange: when the snapshot or update occurred on the venue, in high-precision UTC
  • time_coinapi: when the data was received and normalized by CoinAPI
  • bids: an array of price levels on the bid side
  • asks: an array of price levels on the ask side

Each price level includes:

  • price: the level price
  • size: total quantity resting at that price, expressed in base-asset units
  • num_orders: the count of individual orders at that price, when the venue exposes it

This data shows where liquidity is stacked and how it changes over time. It does not identify who placed the orders, nor does it expose private order IDs.

That distinction is critical. Even with full-depth order books, what you observe is liquidity behavior, not the identities or lineage of individual limit orders.

For research and backtesting, next-day Flat Files provide full-depth order book history across all price levels.

This enables realistic replay of crypto market conditions, but it remains level-based (Level 2), not per-order lineage.

The missing piece is simple: most crypto exchanges do not publish counterparty order IDs.

Even when Level 3 order book data exists, it is:

  • venue-specific
  • inconsistent across exchanges
  • often incomplete
  • not standardized in crypto markets

Without both sides of a trade being publicly disclosed by the exchange, no data provider can deterministically reconcile a market order to a specific resting limit order.

This is a venue disclosure constraint, not a tooling gap.

If you want a deeper breakdown of why Level 3 data doesn’t magically solve reconciliation in crypto, see What Everyone Gets Wrong About L3 Data in Crypto.

Here’s the part that actually matters for trading systems.

Even without limit order IDs, you can reconstruct market behavior with high confidence.

By combining:

  • trade prints
  • aggressor side information
  • order book depth changes
  • high-precision timestamps

You can infer:

  • whether liquidity was swept
  • how many price levels were consumed
  • the aggressiveness of order flow
  • short-term market impact
  • how liquidity responded and refilled

This is how crypto microstructure analysis is actually done - through inference, not fictional precision.

There is one scenario where reconciliation is real: your own executions.

When you trade through CoinAPI’s EMS Trading API and Exchange Link, you receive:

  • execution reports
  • fill prices and sizes
  • maker/taker flags
  • fees
  • venue-aligned timestamps

This enables accurate trade reconciliation and execution reporting for your own orders.

Even then, exchanges typically do not disclose the counterparty’s limit order ID.

“If I just combine trades and order books, I’ll get exact matches.”

You’ll get execution behavior, not private order identities.

“Level 3 market data solves this everywhere.”

It doesn’t. Availability and semantics vary widely across crypto exchanges.

“Traditional markets can do this, so crypto should too.”

Crypto exchanges operate under different technical and regulatory models.

Rather than promising impossible reconciliation, CoinAPI focuses on delivering market data that reflects how crypto markets actually operate:

  • normalized trades and order books across venues
  • consistent schemas across exchanges
  • precise timestamps for sequencing events
  • real-time WebSocket market data streams
  • research-grade historical Flat Files

The goal is not artificial certainty.

It’s accurate reconstruction of market behavior.

In most cases, no.

Crypto exchanges generally do not publish the counterparty limit order IDs involved in a trade. Without both sides of the match being publicly disclosed by the venue, deterministic reconciliation is not possible, regardless of the data provider.

No. CoinAPI does not provide a universal mapping that links a market order to the specific resting limit order IDs it matched against. This information is usually not published by crypto exchanges and therefore cannot be reconstructed reliably.

Only partially, and only on a small number of exchanges.

Level 3 data is:

  • not universally available
  • inconsistent across venues
  • often incomplete
  • not standardized in crypto markets

Even where L3 exists, it may not expose full counterparty relationships for all trades.

Traders can still accurately reconstruct market behavior, including:

  • which price levels were consumed
  • whether liquidity was swept
  • how aggressive order flow was
  • short-term market impact
  • how quickly liquidity refilled

This is typically done by combining trades, order book depth changes, aggressor side, and timestamps.

The expectation often comes from:

  • traditional market microstructure diagrams
  • assumptions about blockchain transparency
  • misunderstandings of what exchanges publish publicly

Crypto exchanges expose trades and order book updates, not their internal matching engine state.

Yes, to a degree.

If you execute trades yourself, CoinAPI’s EMS Trading API and Exchange Link provide high-fidelity execution reports, including fills, prices, sizes, maker/taker flags, fees, and timestamps.

However, even in this case, exchanges usually do not disclose the counterparty’s limit order ID.

No.

This is a venue-level disclosure limitation across crypto exchanges. No market data provider can reconstruct information that exchanges do not publish.

Traditional equity and futures markets often operate under stricter regulatory disclosure regimes and standardized reporting rules. Crypto exchanges are not obligated to expose the same level of execution detail, and most choose not to.

For serious analysis, traders typically use:

  • trade data (price, size, aggressor side)
  • real-time order book depth
  • historical full-depth order books (Level 2)
  • precise timestamps for sequencing events

This approach reflects how crypto markets actually behave.

Crypto markets are transparent in terms of outcomes, not identities.

You can observe:

  • what traded
  • at what price
  • how liquidity changed

You usually cannot observe:

  • who the private counterparty was
  • which specific limit order ID was matched

Designing systems with this reality in mind leads to more robust trading infrastructure.

Crypto markets are transparent, but not omniscient.

You can measure liquidity, aggressiveness, and market impact with extreme precision.

You usually cannot map a public market order to a named private limit order.

Once you design systems around that reality, execution models improve, research becomes more honest, and trading infrastructure becomes more robust.

If your goal is to understand how crypto markets actually behaved, not how you wish they behaved, that’s the level where CoinAPI’s market data is designed to operate.

background

Stay up-to-date with the latest CoinApi News.

By subscribing to our newsletter, you accept our website terms and privacy policy.

Recent Articles

Crypto API made simple: Try now or speak to our sales team