TL;DR. In an institutional crypto stack, execution, credit, custody, and connectivity are frequently bound to a single counterparty. When they are, a failure in one layer can cascade into the others, even when the failing layer is not technical. Reducing that blast radius means decoupling the layers and keeping connectivity vendor-neutral and independent of credit and custody risk. The catch is that decoupling connectivity is harder than it looks, because symbol formats, precision, order statuses, and timestamps diverge across venues and have to be normalized before anything downstream can trust them.
An institutional crypto trading operation runs on four distinct layers, whether or not the desk thinks about them separately:
These are different risks with different failure modes. The problem is that a single vendor often sells several of them as one bundle. When execution, credit, and custody all resolve to the same counterparty, the counterparty becomes a single point of failure for functions that have nothing to do with each other. A credit event then takes down execution access and custody at the same time, not because they are technically linked, but because they share one balance sheet.
The mitigation is structural, not clever: keep the layers separable, and in particular keep the connectivity layer vendor-neutral so that losing one counterparty does not also mean losing market access.
In March 2026, BlockFills — an institutional crypto trading firm operating through Reliz Ltd. — filed for Chapter 11 bankruptcy protection in Delaware. The filing followed a halt of client withdrawals in February and losses of about $75M. Before the collapse, BlockFills processed more than $61B in trading volume in 2025, serving clients such as hedge funds, asset managers, market makers, and mining companies.
The point here is not blame, and the human cost was real — a large number of institutional clients lost access at once. The point is to read the collapse as an autopsy of which layer failed.
The failure was in the credit / counterparty / liquidity layer — financing, OTC, and the balance sheet behind the trades. It was not a technology outage. But because clients reached the market through that same counterparty, the credit failure propagated into their execution access and, for those who custodied there, their assets. That is coupling doing exactly what coupling does.
Worth stating plainly: a robust, low-latency connectivity setup would not have prevented this loss. Connectivity is a different layer, and treating it as protection against a credit event conflates the two. The next section draws that line explicitly.
If the fix is "keep connectivity vendor-neutral and separate," the obvious question is why desks do not just do that. The answer is that a neutral connectivity layer has to absorb the differences between venues, and those differences are larger and more fiddly than exchange docs make them look. This is the part the docs do not tell you: the same economic instrument is represented differently at every venue, and a normalization layer has to reconcile all of it before execution or reconciliation can rely on it.
Take spot BTC against USD. Three major venues, three different symbol conventions:
| Venue | Symbol for BTC spot | Price increment field | Quantity increment field |
|---|---|---|---|
| Binance | BTCUSDT - concatenated, no separator | tickSize (in filters) | stepSize (in filters) |
| Kraken | id XXBTZUSD, wsname XBT/USD, altname XBTUSD - X/Z asset prefixes, BTC represented as XBT | tick_size / pair_decimals | lot_decimals |
| Coinbase | BTC-USD - hyphen separator | quote_increment | base_increment |
Note: Binance quotes against USDT (a stablecoin), Kraken and Coinbase against USD (fiat) — that quote-asset difference is itself a normalization concern, not a typo. Kraken also exposes a separate cost-precision field ( cost_decimals), distinct from price and quantity.
Two things break here if you do not normalize. First, symbol identity: BTCUSDT, XXBTZUSD, and BTC-USD are the same trade intent but share no common string, and Kraken alone exposes three different identifiers for one pair. Second, precision: the field that tells you the minimum price movement is called tickSize on one venue, tick_size / pair_decimals on another, and quote_increment on a third — and some express it as an increment while others express it as a number of decimals. Get this wrong and orders are rejected for violating a filter you did not know applied.
Downstream reconciliation depends on a consistent notion of what happened to an order. Venues do not share one. Binance publishes an order-status enum that includes venue-specific values such as EXPIRED_IN_MATCH, which arises from self-trade prevention.
This is where a normalization layer earns its keep. If you are presenting a unified FIX 4.4 view downstream, FIX 4.4 OrdStatus offers only a generic Expired (value C) and no value that specifically denotes an STP-driven expiry — so the normalizing layer has to map EXPIRED_IN_MATCH onto that generic status and carry the reason in a separate field, or the reason is lost. Every such venue-native state is a design decision the connectivity layer has to own.
Kraken and Coinbase each define their own order-status and reject vocabularies, which differ again in naming and granularity — one more set of mappings the same layer has to maintain.
Even time is not uniform. Binance reports execution and event times in milliseconds by default (e.g. transactTime, time), while also allowing a finer time unit to be selected. Other venues differ in precision and in whether a timestamp marks the matching event or the transaction record. A full treatment of ms vs µs and event-vs-transaction time is its own article; the point here is only that timestamp semantics are one more thing a normalization layer cannot assume is consistent.
A connectivity layer that speaks FIX to its clients has to land every one of these venue differences onto stable FIX fields: OrdStatus (tag 39) and ExecType (tag 150) for order state, Symbol (tag 55) and SecurityExchange (tag 207) for instrument identity and venue, TransactTime (tag 60) for timing. The FIX layer is the stable target; the work is the mapping onto it.
The single most important distinction here is also the easiest one to blur:
A connectivity / normalization layer covers: venue connections, symbol and precision normalization, market data, and execution routing. It reconciles the differences above so downstream systems see one consistent representation.
It does not cover — and cannot substitute for: the counterparty you trade against, the credit or financing extended to you, or the custody of your assets. Those live in other layers, with their own risk, and no amount of connectivity engineering touches them.
To close the BlockFills loop: decoupled, vendor-neutral connectivity would have kept market access from being hostage to one counterparty. It would not have protected credit exposure or custodied assets at that counterparty. Those are separate problems that need separate answers — diversified counterparties, independent or self-custody, credit limits. Anyone selling connectivity as protection against a credit event is selling the wrong layer.
Axon Trade is the connectivity layer behind this analysis. This section is Axon describing its own layer, kept separate from the neutral discussion above.
Axon Trade operates at the connectivity and normalization layer specifically — venue connections, symbol and precision normalization, market data, and execution routing. Counterparty selection, credit, and custody sit in other layers and are outside what Axon provides. It is one concrete instance of the decoupled, vendor-neutral connectivity the analysis above argues for — not a replacement for a counterparty, credit, or custody provider.
On the normalization specifics this article is about:
That is the extent of what this layer claims to solve. Credit, custody, and counterparty selection remain the client's decisions, in their own layers.
Run these against your own architecture:
If the answers reveal that execution, credit, and custody all resolve to one name, the layers are coupled — and the BlockFills anatomy above is the failure mode you are exposed to.
What does it mean to decouple layers in a crypto trading stack
It means keeping execution, connectivity, credit, and custody as separate functions with separate providers, so a failure in one does not automatically take down the others.
What kind of failure was the BlockFills Chapter 11 filing
It was a credit and counterparty failure in the liquidity and financing layer, not a technology outage. Clients were affected because they reached the market through the same counterparty.
Does using a connectivity provider protect my assets
No. Connectivity and normalization are a non-custodial layer. Custody and credit are separate layers with separate risk and are not covered by connectivity.
Why is normalizing order status across exchanges hard
Because venues use different order-status vocabularies, including venue-native states like Binance EXPIRED_IN_MATCH that map only to a generic Expired status in FIX 4.4, so a normalization layer must decide how to represent them and where to carry the reason.
What is EXPIRED_IN_MATCH on Binance
It is a Binance order status produced by self-trade prevention.
Facts verified as of July 2026. Principles are stable, but specific venue strings should be re-checked against live docs before reuse.
Axon Trade provides advanced trading infrastructure for institutional and professional traders, offering high-performance FIX API connectivity, real-time market data, and smart order execution solutions. With a focus on low-latency trading and risk-aware decision-making, Axon Trade enables seamless access to multiple digital asset exchanges through a unified API.
Explore Axon Trade’s solutions:
Contact Us for more info.