# Liquidating pending quotes doesn't return trading fee to party A

Liquidating a party's pending/locked quotes marks them LIQUIDATED but never refunds the prepaid trading fee to party A, leaving it with the fee collector.

- Payout: Contest reward
- Severity: medium
- Program: Symmetrical
- Credited: AkshaySrivastav
- Disclosed: 2023-06-05
- Write-up quality: 6/10
- Original: https://github.com/sherlock-audit/2023-06-symmetrical-judging/issues/71
- Library page: https://bugbountylibrary.com/r/sherlock%3A2023-06-symmetrical%3AM-1
- Tags: domain:web3 impact:funds-loss kind:contest platform:sherlock sev:medium tech:solidity technique:source-review vuln:accounting-error vuln:business-logic vuln:liquidation

**Target:** Solidity liquidation facet (LiquidationFacetImpl) of symmio-core
**Root cause:** liquidatePendingPositionsPartyA and liquidatePartyB set pending quotes to LIQUIDATED and zero pendingLockedBalances without routing the prepaid trading fee back to party A or toward the liquidation, unlike normal cancel paths which refund the fee.
**Steps:**
1. Read PartyAFacetImpl cancel paths (L136, L227) showing fee refunded to party A on cancel.
2. Compare with LiquidationFacetImpl liquidatePendingPositionsPartyA (L105-120) and liquidatePartyB (L277-293).
3. Observe liquidation sets quoteStatus=LIQUIDATED and makeZero()s pendingLockedBalances but never credits party A the trading fee.
4. Trigger liquidation of a partyA with LOCKED/CANCEL_PENDING quotes and confirm fee remains with fee collector.
**How found:** Compared the fee-refund logic in the normal quote-cancel paths against the liquidation paths, noticing the liquidation branches zero out locked balances without returning the trading fee.
**Insight:** When auditing liquidation code, diff it line-by-line against the normal cancel/close paths: any accounting step (refunds, fee returns, balance zeroing) present in cancel but missing in liquidation is a candidate finding.
