Written by Pablo Gómez
Founder & CEO at Metlabs · Reviewed on October 11, 2026
ERC-1404 keeps full compatibility with the ERC-20 interface and adds its compliance layer through two functions. detectTransferRestriction takes sender, recipient and amount and returns a restriction code, where by convention 0 means the transfer is allowed and any other value represents a blocking reason (whitelist, lock-ups, jurisdiction limits). messageForTransferRestriction maps that code to a human-readable message, such as the recipient not being on the whitelist. The usual pattern evaluates detectTransferRestriction inside transfer and transferFrom and reverts when the code is non-zero.
Its value lies in deliberate simplicity versus the modularity of ERC-1400. It offers a lightweight path to issue regulated tokens without adopting the full document and partition machinery, and the split between detecting and explaining lets wallets and exchanges show users why a transfer would fail before sending it. The status matters: it works as a de facto industry standard, with its own reference repository, rather than as a Final EIP.
It was created by the Project Zero team at TokenSoft (Ron Gierlach, James Poole, Mason Borda and Lawson Baker) in 2018. TokenSoft later became part of the Securitize ecosystem. Alongside ERC-1400 and ERC-3643, ERC-1404 is one of three approaches to the same problem, compliant transfer: minimalist (ERC-1404), modular and document-based (ERC-1400) and on-chain identity-based (ERC-3643). It applies to security tokens, regulated stablecoins and RWA with per-holder restrictions.
Also known as
- ERC1404
- Simple Restricted Token Standard





