CoW Protocol for accountants: intents, solvers and fees inside the price
On CoW Protocol you sign an intent, a solver settles it in a shared batch, and fees are netted into the price. Here is what that means for records.
When your treasury trades through CoW Protocol or the CoW Swap interface, you usually do not send the trade transaction yourself and you do not see a separate fee transfer. Your records need to tie each fill to a signed order, book proceeds net of fees that sit inside the execution price, and handle a settlement transaction that other traders share.
How an order moves through the protocol
Instead of submitting an on-chain swap, you sign a message stating what you will sell, what you want to buy, the minimum you will accept and an expiry [1]. The protocol gathers these signed intents into a batch and auctions them to solvers, which are bonded third parties that compete to settle the batch [2]. The winning solution is the one that gives the orders the most surplus, and orders of the same token pair in a batch clear at a uniform price, which the protocol says removes the advantage of ordering transactions to extract MEV [2].
Solvers first look for coincidences of wants: two traders in the same batch who each want what the other is selling can be matched directly, without touching an AMM pool, saving pool fees and gas [3]. Matches can be partial, in which case the remainder is filled from on-chain liquidity [3].
The winning solver submits the batch to the settlement contract. Before any trade executes, the contract checks the order signature, that the order has not expired or already been filled, and that the price is at least as good as the one you signed [4]. Solvers can call outside liquidity during settlement but cannot move user funds directly; your tokens are pulled only through a separate relayer contract you approved, as part of the trade [4].
What lands in your wallet
| Event | On-chain footprint | Who pays gas |
|---|---|---|
| Approve the relayer for a token | Ordinary approval transaction from your wallet | You, once per token |
| Sign, change or cancel a limit order | None; an off-chain signature | No gas [5] |
| Fill | Sell token out and buy token in, inside the solver's settlement transaction | Built into your execution, paid in the sell token [1] |
| Sell native ETH | ETH sent to the Eth-flow contract when you place the order; buy token arrives at settlement | You pay gas on the placement transaction |
Two practical consequences follow. First, the settlement transaction hash is shared with other users in the batch, so your ledger should identify a fill by your own legs in that transaction plus the order's unique identifier, not by the hash alone. Second, selling native ETH works through Eth-flow, a contract that wraps the ETH and places the order on your behalf [6]. The ETH leaves your wallet when you create the order and the bought tokens arrive in a later settlement, so the two legs carry different transaction hashes and need matching.
Fees are inside the price
CoW Protocol's fee page says fees are not charged as separate transfers; you receive less of the buy token on a sell order, or pay more of the sell token on a buy order, than a fee-free execution would give [7]. As documented in October 2026, the fees include a volume fee of 2 basis points on standard assets and 0.3 basis points on correlated assets such as stablecoins, and a fee of 50% of any improvement on the quoted price for market orders, capped at 0.98% of volume [7]. Out-of-market limit orders pay 50% of surplus instead, under the same cap, and integrating partners can add their own fee [7]. Protocol fees are taken in the surplus token, which is the buy token for a sell order [7].
Because the fee policies and executed amounts are public, the fee on a fill can be reconstructed. The fee page gives the formula for a volume fee on a sell order as the executed amount times f divided by one minus f [7].
- Order: sell 100 ETH for USDC, standard asset, volume fee only (no quote improvement)
- Executed buy amount received: 301,200.00 USDC
- Volume fee = 301,200.00 x 0.0002 / 0.9998 = 60.25 USDC
- Fee-free amount = 301,200.00 + 60.25 = 301,260.25 USDC
| Account | Debit | Credit |
|---|---|---|
| Fill of the 100 ETH sell order, gross presentation of the protocol fee ETH carrying amount $220,000. USDC received valued at $1.00. Proceeds before fee $301,260.25. | ||
| Digital assets — USDC | 301,200.00 | |
| Trading fees expense | 60.25 | |
| Digital assets — ETH | 220,000.00 | |
| Realised gain on digital assets | 81,260.25 | |
Surplus and limit orders
Surplus is the difference between the executed price and your minimum, and on limit orders CoW passes market upside and solver price improvements to the trader rather than filling at the limit price [5][7]. For accounting, there is nothing separate to book: surplus simply shows up as more of the buy token. Record the fill at what you actually received, and keep the signed minimum and the quote as evidence.
Tax view
For US tax, the IRS treats exchanging one virtual currency for another as producing capital gain or loss equal to the fair market value received less your basis, and the received property's basis is its fair market value [8]. A CoW match against another trader is still an exchange; the absence of an AMM does not change that. Partial fills and TWAP slices are separate disposals at their own times.
What to do
- Store the order identifier, signed minimum, quote and expiry for each order as evidence.
- Match fills by your own token movements in the settlement transaction, not by hash alone.
- Decide whether to present protocol fees gross or net, and apply it consistently.
- Pair Eth-flow placement transactions with their later settlements.
- Book each partial fill as its own disposal at its own execution time.
- Review token approvals to the relayer contract as part of treasury access controls.
Sources
- Intents (CoW Protocol docs)
- Fair Combinatorial Batch Auction (CoW Protocol docs)
- Coincidence of Wants (CoW Protocol docs)
- GPv2Settlement (CoW Protocol docs)
- Limit orders (CoW Protocol docs)
- Eth-flow (CoW Protocol docs)
- Fees (CoW Protocol docs)
- Frequently asked questions on virtual currency transactions (IRS)
General information for finance teams, current as of publication. Not legal, tax or accounting advice.