{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "fee-on-transfer-tokens",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/fee-on-transfer-tokens/",
  "collection": "defi",
  "title": "Fee-on-transfer tokens: when the received amount is smaller",
  "description": "Understand token transfer deductions and why quoted or requested amounts can differ from what an integrating contract actually receives.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:19:48.887Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "A fee-on-transfer token deducts a charge under its transfer rules, so a recipient may receive fewer units than the sender requested to move. Integrations that assume the requested amount always arrives can fail or misaccount. Compatibility depends on the exact token and route; Uniswap’s cited warning specifically concerns its v3 router contracts.",
    "claimId": "fee-on-transfer-tokens-quick-answer",
    "sourceIds": [
      "uniswap-token-issues",
      "erc20"
    ]
  },
  "keyFacts": [
    {
      "label": "Amount received",
      "value": "A transfer deduction can make received units smaller than the requested amount.",
      "sourceIds": [
        "uniswap-token-issues"
      ],
      "id": "amount-received",
      "claimId": "fee-on-transfer-tokens-fact-amount-received"
    },
    {
      "label": "V3 scope",
      "value": "Uniswap documents fee-on-transfer tokens as incompatible with its v3 router contracts.",
      "sourceIds": [
        "uniswap-token-issues"
      ],
      "id": "v3-scope",
      "claimId": "fee-on-transfer-tokens-fact-v3-scope"
    },
    {
      "label": "Possible adaptation",
      "value": "The cited documentation mentions token wrappers or customized routers as possible workarounds.",
      "sourceIds": [
        "uniswap-token-issues"
      ],
      "id": "possible-adaptation",
      "claimId": "fee-on-transfer-tokens-fact-possible-adaptation"
    }
  ],
  "prerequisites": [
    "erc-20-tokens"
  ],
  "sections": [
    {
      "id": "example",
      "heading": "Calculate the recipient’s balance change",
      "sourceIds": [
        "uniswap-token-issues",
        "erc20"
      ],
      "paragraphs": [
        "If a hypothetical token deducts 2% from a requested 100-unit transfer, the recipient receives 98 units. The destination of the other two units depends on that token’s implementation.",
        "A swap expecting the full 100 units cannot safely pretend the same input arrived. The example illustrates accounting; it does not assert a fee for any live token."
      ]
    },
    {
      "id": "route",
      "heading": "Check every transfer used by the integration",
      "sourceIds": [
        "uniswap-token-issues"
      ],
      "paragraphs": [
        "A route can move tokens between a wallet, router and pool. Compatibility is a property of that complete interaction, rather than proof supplied by an ERC-20-like symbol or interface.",
        "The Uniswap integration page identifies v3 router incompatibility. It should not be broadened into a claim that every exchange, protocol version or custom route treats all such tokens identically."
      ]
    },
    {
      "id": "wrapper",
      "heading": "An adapter adds its own requirements",
      "sourceIds": [
        "uniswap-token-issues"
      ],
      "paragraphs": [
        "A wrapper or custom router must account correctly for the token’s actual transfers. Its existence does not establish that it is deployed, supported by the selected interface or safe to use.",
        "Before relying on an output quote, inspect how the route measures received amounts and enforces the holder’s execution limit. Treat any displayed fee assumption as part of the calculation, not a universal property of token transfers."
      ]
    }
  ],
  "faq": [
    {
      "question": "Is a token’s transfer fee the same as Ethereum gas?",
      "answer": "No. Gas pays for transaction execution under Ethereum’s fee rules. A token transfer deduction is behavior of the token contract; a transaction can involve both.",
      "sourceIds": [
        "eth-gas",
        "uniswap-token-issues"
      ]
    }
  ],
  "claims": [
    {
      "id": "fee-on-transfer-tokens-quick-answer",
      "articleSlug": "fee-on-transfer-tokens",
      "statement": "A fee-on-transfer token deducts a charge under its transfer rules, so a recipient may receive fewer units than the sender requested to move. Integrations that assume the requested amount always arrives can fail or misaccount. Compatibility depends on the exact token and route; Uniswap’s cited warning specifically concerns its v3 router contracts.",
      "sourceIds": [
        "source-1dfb73e432851474",
        "source-ac4ad503a55127bb"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1dfb73e432851474",
          "locator": "Fee-on-transfer tokens; Rebasing tokens"
        },
        {
          "sourceId": "source-ac4ad503a55127bb",
          "locator": "totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:19:48.887Z",
        "reviewer": "automated independent verification — Codex root, separate from final-ten DeFi author",
        "notes": [
          "Read fresh v3 Token Integration Issues, ERC-20 transfer/allowance interface and Ethereum gas documentation. V3-router limitation correctly scoped; wrappers/custom routers are possibilities, not assurance. Recomputed100×(1−.02)=98; token deduction is distinct from execution gas."
        ]
      }
    },
    {
      "id": "fee-on-transfer-tokens-fact-amount-received",
      "articleSlug": "fee-on-transfer-tokens",
      "statement": "Amount received: A transfer deduction can make received units smaller than the requested amount.",
      "sourceIds": [
        "source-1dfb73e432851474"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1dfb73e432851474",
          "locator": "Fee-on-transfer tokens; Rebasing tokens"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:19:48.887Z",
        "reviewer": "automated independent verification — Codex root, separate from final-ten DeFi author",
        "notes": [
          "Read fresh v3 Token Integration Issues, ERC-20 transfer/allowance interface and Ethereum gas documentation. V3-router limitation correctly scoped; wrappers/custom routers are possibilities, not assurance. Recomputed100×(1−.02)=98; token deduction is distinct from execution gas."
        ]
      }
    },
    {
      "id": "fee-on-transfer-tokens-fact-v3-scope",
      "articleSlug": "fee-on-transfer-tokens",
      "statement": "V3 scope: Uniswap documents fee-on-transfer tokens as incompatible with its v3 router contracts.",
      "sourceIds": [
        "source-1dfb73e432851474"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1dfb73e432851474",
          "locator": "Fee-on-transfer tokens; Rebasing tokens"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:19:48.887Z",
        "reviewer": "automated independent verification — Codex root, separate from final-ten DeFi author",
        "notes": [
          "Read fresh v3 Token Integration Issues, ERC-20 transfer/allowance interface and Ethereum gas documentation. V3-router limitation correctly scoped; wrappers/custom routers are possibilities, not assurance. Recomputed100×(1−.02)=98; token deduction is distinct from execution gas."
        ]
      }
    },
    {
      "id": "fee-on-transfer-tokens-fact-possible-adaptation",
      "articleSlug": "fee-on-transfer-tokens",
      "statement": "Possible adaptation: The cited documentation mentions token wrappers or customized routers as possible workarounds.",
      "sourceIds": [
        "source-1dfb73e432851474"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-1dfb73e432851474",
          "locator": "Fee-on-transfer tokens; Rebasing tokens"
        }
      ],
      "scope": {
        "collection": "defi",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:19:48.887Z",
        "reviewer": "automated independent verification — Codex root, separate from final-ten DeFi author",
        "notes": [
          "Read fresh v3 Token Integration Issues, ERC-20 transfer/allowance interface and Ethereum gas documentation. V3-router limitation correctly scoped; wrappers/custom routers are possibilities, not assurance. Recomputed100×(1−.02)=98; token deduction is distinct from execution gas."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "uniswap-token-issues",
      "label": "Token integration issues",
      "publisher": "Uniswap",
      "url": "https://docs.uniswap.org/concepts/protocol/integration-issues",
      "locator": "Fee-on-transfer tokens; Rebasing tokens",
      "note": "Token behavior can break assumptions or impose costs on pool positions.",
      "version": "Uniswap documentation",
      "checkedAt": "2026-10-02T17:03:45.896Z",
      "contentSha256": "0fe6244df66381a1c89b47698d361b13122ad38cac5abbfce7c9c52edda23fe4",
      "recordId": "source-1dfb73e432851474"
    },
    {
      "id": "erc20",
      "label": "ERC-20 Token Standard",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-20",
      "locator": "totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer",
      "note": "Token supply, displayed units and balance accounting.",
      "version": "ERC-20",
      "checkedAt": "2026-10-02T17:03:45.826Z",
      "contentSha256": "98bda5e4707841a68684879878c4c165fdaa47d89ed69ebf232ab9be06ff050e",
      "recordId": "source-ac4ad503a55127bb"
    },
    {
      "id": "eth-gas",
      "label": "Gas and fees",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/gas/",
      "locator": "What is gas?; Base fee; Priority fee",
      "note": "Execution resource units, fee components and gas expenditure.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:41.688Z",
      "contentSha256": "566e61b7dce594a477ef28bab1f5a23279feb4f782e2838623fc7491c9daec66",
      "recordId": "source-5cadd0da692ffaa8"
    }
  ],
  "related": {
    "articles": [
      "slippage-and-price-impact",
      "rebasing-tokens",
      "swap-routing-and-aggregators"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Fee-on-transfer tokens: when the received amount is smaller.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/fee-on-transfer-tokens/"
}
