<!-- canonical: https://0xsimao.com/findings/singularity-support-fee-transfer-tokens -->

# No support for fee on transfer tokens

Crit/High · Three Sigma · Private DeFi access · 26th February, 2024

Finding 3S-SG-M04 of the Singularity security review.

- Protocol: https://www.thesingularity.network/
- Report: /reports/singularity
- Source: https://cdn.sanity.io/files/qoqld077/production/45b8aac56a2b8e3b557df4329ac9bf8220b64012.pdf

---

### Description

Fee on transfer tokens are not correctly dealt, as the transferFrom() call is expected to
transfer exactly the requested amount. However, this is not the case for tokens that charge
a fee on transfer.

### Recommendation

To support these tokens, check the balance before calling safeTransferFrom() and
compare with the new balance, getting the actual transferred amount.

### Status

Acknowledged

---

Related findings:

- [Fee on transfer tokens transfer less tokens than what is stored in the receipt on deposits](https://0xsimao.com/findings/clip-finance-i-fee-transfer-receipt-deposits): Clip Finance Strategies
- [BasicVault is incompatible with fee-on-transfer tokens](https://0xsimao.com/findings/mitosis-basic-incompatible-fee-transfer): Mitosis
- [`LenderCommitmentGroup` pools will have incorrect exchange rate when fee-on-transfer tokens are used](https://0xsimao.com/findings/teller-finance-pools-exchange-fee-transfer): Teller Finance
- [Halted withdrawals in BatchOut:withdrawFulfill() due to tokens transfer() reverting on 0 transfer amount](https://0xsimao.com/findings/clip-finance-i-halted-withdrawals-withdraw-transfer): Clip Finance Strategies
