Cow swap

Cow swap lets you review a quote, authorize an order and check token delivery.

Cow swap lets you submit a token trade after reviewing its quote and authorizing the order. Check the sell token, amount, minimum output and recipient before signing. For a regular token order, sufficient spending approval must also exist before settlement. Competing solvers then seek execution within your signed conditions. A successful order submission confirms receipt of your instructions; completion requires a fill record and delivered tokens. If the order stays open, inspect its balance, allowance and expiry before submitting another trade.

A submitted order can still be waiting for execution; match its settlement record with the tokens delivered to the intended recipient.

The quote, signed order and received tokens

A quote describes the proposed exchange, while a submitted order gives solvers permission to execute its signed conditions. Settlement creates the record of the actual trade. These records answer different questions: what you considered, what you authorized and what executed. Keep the order identifier available for tracking. An approval transaction alone won’t establish that a swap occurred, and an order identifier alone won’t establish delivery. The final check concerns the selected buy token at the intended recipient.

Token identity and available balance

The selected network and token contract determine which balance a regular token order can spend. Compare the connected account with the account holding your sell tokens. Then check the token contracts behind both selectors. A familiar symbol doesn’t establish that you’ve selected the intended contract on the intended network. For a cross-chain selection, also confirm the destination network before reviewing the output amount.

Your available sell balance must cover the amount that execution requires. A buy order that targets a particular output can require more input than a simple exchange-rate calculation suggests. Fees and the permitted price movement affect that requirement. Read the complete quote amounts rather than deriving the required balance from a displayed rate. Any separate approval or native-token transaction also needs enough native currency for its network fee.

Token identity and available balance: The selected network and token contract determine which balance a regular token order can spend. Compare the connected account with the account holding your sell tokens. Then check the token contracts behind both selectors.; A familiar symbol doesn’t establish that you’ve selected the intended contract on the intended network. For a cross-chain selection, also confirm the destination network before reviewing the output amount.

View image file

What does the minimum received amount protect?

The minimum received amount sets the output floor for a sell order that executes under its signed conditions. Read that amount in buy-token units alongside the expected output. Slippage tolerance allows movement between the quoted price and execution, so a wider tolerance can permit a lower receipt. It doesn’t promise execution or preserve the tokens’ value in a separate currency.

For a buy order, inspect the maximum input alongside the target output. The side that you fix changes which amount needs protection. Refresh an outdated quote before signing, then review the resulting amounts again. A refreshed quote is a new proposal, not confirmation of the earlier price. If its permitted outcome is unacceptable, leave the order unsigned rather than treating a looser tolerance as a routine troubleshooting step.

Approval and the final signing check

The spending allowance determines how much of a token the approved contract may transfer. Regular ERC-20 wallet-balance orders use spending approval granted to the GPv2VaultRelayer contract. Compare the spender and allowance in the wallet request with the intended permission. Approval to a different spender doesn’t supply the permission that this execution path needs.

An allowance limited to the required amount restricts spending capacity. A larger allowance can remain useful for later trades, but any unused allowance also persists beyond this order. Where a separate approval transaction is necessary, wait for confirmation and check the resulting allowance. A submitted transaction that hasn’t confirmed doesn’t establish permission to transfer the tokens.

For a regular same-chain swap, compare the final order’s token contracts, amounts, receiver and expiry with the confirmation screen. The spender handles permission to move sell tokens; the receiver identifies where proceeds belong. Matching one address doesn’t validate the other. An unexpected receiver changes the destination of the trade, even when the displayed token pair looks correct.

Decline a mismatched request before signing. After submission, changing the form doesn’t change the authorized order; correcting its terms requires cancellation and a new order.

Order history and settlement records

The order’s full identifier lets you find its status without guessing from a wallet balance. CoW Explorer distinguishes open orders from filled, expired and cancelled orders. Match the identifier and signing account before interpreting those labels. Similar token pairs can appear in separate orders, particularly after a retry, so the pair alone doesn’t identify the trade.

For a filled same-chain market order, inspect the associated settlement transaction and recorded amounts. The settlement transaction differs from any earlier approval transaction. Its successful receipt establishes that the transaction executed; the order details identify the trade within it. Compare the recorded recipient with the address that you intended to receive the output.

Reconcile the amount bought with the token movement to that recipient. Compare token units before using a wallet’s estimated currency value, which can move independently of the swap. The explorer also records fees, so avoid counting a fee again when an amount already includes it. Keep the received amount and the total sell debit distinct.

A wallet balance alone may include unrelated transfers. Match the specific settlement record before treating a balance change as confirmation of this order.

Native-token and destination-chain checks

A native-token sale can require an upfront transaction rather than only a signed message. Through Eth-flow, that transaction deposits the native funds and places the order after confirmation. The deposit can therefore leave the wallet before the buy tokens arrive. Its transaction receipt proves order placement, not a completed exchange. Upfront gas remains spent if the order doesn’t fill. Where the interface uses wrapping first, check the wrapping transaction separately from the subsequent swap.

A cross-chain selection adds destination delivery to the completion check. The source order sends its output to your Account Proxy, a helper contract that deposits it into the bridge. Inspect the destination recipient, final minimum amount and bridge cost before authorizing that path. Review and sign the bridge post-hook authorization before authorizing the order; this permits the Account Proxy to make the bridge deposit. A successful source swap can precede a bridging-in-progress state. Once the bridge deposit has occurred, the transfer follows the bridge provider’s completion or refund rules; cancelling the source order can’t recall it. Use the destination transfer record to establish that the requested output arrived.

Why is my signed order still unfilled?

A signed order can remain unfilled because spending conditions aren’t satisfied or solvers can’t execute within its price boundary. Start with the actual order status. A missing record calls for checking the full identifier, network and submission outcome. An open record establishes that the order exists, so repeatedly signing another order won’t diagnose why the first one remains open.

For a regular order that spends tokens from your wallet, check the current sell balance and allowance, including any changes after submission. A pending approval, reduced allowance or outgoing transfer can prevent settlement. If both are sufficient, compare the order’s price boundary with a fresh quote. Available liquidity and execution costs can prevent an acceptable fill. Changing a setting only affects a new order; the existing signature keeps its original terms.

The settlement contract rejects an order once its validity deadline has passed. Expiry prevents a future fill, but it doesn’t erase a trade that executed earlier. Inspect the execution history before deciding that all the original input remains available for another attempt.

Cancellation and retry boundaries

The available cancellation method depends on how you placed the order. Off-chain cancellation asks the order book to stop execution attempts, while confirmed on-chain invalidation changes contract state. Either request can lose a race with settlement before it takes effect. These options address different starting conditions:

Available action Effect and recovery boundary
Decline an unsigned order Withholds authorization for that order. Any earlier confirmed approval remains in place.
Request off-chain cancellation Stops order-book execution attempts after processing. It doesn’t invalidate the signature on-chain.
Invalidate a regular order on-chain Prevents later execution once confirmed, provided settlement hasn’t already occurred. Requires gas.
Wait for order expiry Ends future validity at the signed deadline. Execution remains possible beforehand.
Revoke the token allowance Removes spending permission after confirmation. It doesn’t cancel the order signature, which could become executable again if permission returns before expiry.
Cancel an Eth-flow order Requires an on-chain transaction. Successful cancellation refunds the unfilled native deposit; it can’t undo an earlier fill.

Before retrying, inspect the old order for a fill and confirm the cancellation or expiry that you’re relying on. Use the balance that remains available, then review a fresh quote. If the old order already settled, its output belongs in your balance reconciliation; submitting another swap would authorize an additional trade.

Details worth knowing about Cow swap

Why does my wallet show a zero receiver address in the order?

The protocol interprets the zero receiver address as an instruction to deliver proceeds to the order signer. That field doesn’t mean the tokens will be burned. A nonzero receiver specifies an explicit destination, so compare it with your intended recipient. This convention concerns the order’s receiver field, not an ordinary token transfer.

Does rejecting an order signature create a failed blockchain transaction?

Rejecting a regular off-chain order-signing request doesn’t submit a blockchain transaction. There’s therefore no failed settlement transaction associated with that rejection. A separate approval, wrapping or native-token deposit transaction has its own outcome and network cost. Check which request the wallet presented before interpreting an entry in its activity history.

Will an expired swap remove my token approval?

Order expiry doesn’t revoke an existing token allowance. The validity deadline belongs to the order, while the allowance belongs to the token’s spending permissions. An unused allowance can remain available for later authorized trades. Review the remaining permission separately if you no longer want the spender to have access.

Can someone inspect my swap order without connecting my wallet?

Someone with the order identifier can inspect its public details in CoW Explorer without signing into your wallet. Viewing a record doesn’t grant trading authority. The record can reveal the signing account, recipient and execution details, so sharing an order identifier also makes those associated details easier to locate.

How does importing a custom token affect whether my first swap can fill?

Importing a custom token makes that contract available for selection; it doesn’t create trading liquidity. A correct contract address can still produce no usable quote or an unfilled order. Confirm the network and contract identity first, then judge the quote on its actual execution terms rather than the token’s presence in the selector.

· updated