{"id":"ERC-7092","name":"Financial Bonds","status":"Final","chain":"both","category":{"id":"defi","name":"DeFi Patterns","description":"Vaults, bonds, and financial primitives"},"journeyStages":[{"id":"management","name":"Asset Management","description":"Managing assets over time"}],"uxImpact":"Users hold traditional financial bonds on-chain with familiar terms — ISIN, coupon rate, maturity date, denomination, principal.","officialUrl":"https://ercs.ethereum.org/ERCS/erc-7092","lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","kind":"proposal","hasDetailedContent":true,"content":{"id":"ERC-7092","specConstraints":[{"id":"optional-batch-transfers","constraint":"Batch transfer support is optional; supported batch transfers emit the specified batch event.","appliesTo":"application","normativity":"normative","specQuote":"* @notice MUST be emitted when multiple bond tokens are transferred, issued or redeemed, with the exception being during contract creation\n    * @param _from array of bondholders accounts\n    * @param _to array of accounts to transfer bonds to\n    * @param _amount array of amounts of bond tokens to be transferred\n    *\n    ** OPTIONAL - interfaces and other contracts MUST NOT expect this function to be present. MUST be emitted in `batchTransfer` and `batchTransferFrom` functions\n    */\n    event TransferBatch(address[] _from, address[] _to, uint256[] _amount);","specSection":"Specification / Token Interface / TransferBatch","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Detect the selected contract's batch-transfer support before offering bulk sends. Use its actual event and receipt data rather than inferring a completed batch from individual UI rows."},{"id":"optional-batch-allowances","constraint":"Batch approval and allowance reduction are optional interfaces.","appliesTo":"application","normativity":"normative","specQuote":"* @notice MUST be emitted when multiple accounts are approved or when the allowance is decreased from multiple accounts\n    * @param _owner bondholder account\n    * @param _spender array of accounts to be allowed to spend bonds, or to decrase the allowance from\n    * @param _amount array of amounts of bond tokens allowed by `_owner` to be spent by multiple accounts in `_spender`.\n    *\n    ** OPTIONAL - interfaces and other contracts MUST NOT expect this function to be present. MUST be emitted in `batchApprove` and `batchDecreaseAllowance` functions\n    */\n    event ApprovalBatch(address indexed _owner, address[] _spender, uint256[] _amount);","specSection":"Specification / Token Interface / ApprovalBatch","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Keep a supported single-spender approval path. Do not imply bulk approval or revocation is available on every bond contract, and update allowance state from the implemented interface."},{"id":"denomination-units","constraint":"The minimum issuance denomination is expressed in units of the principal currency.","appliesTo":"application","normativity":"normative","specQuote":"* @notice Returns the bond denominiation. This is the minimum amount in which the Bonds may be issued. It must be expressend in unit of the principal currency","specSection":"Specification / Token Interface / denomination","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Show the principal asset alongside the denomination and validate input in that currency's units. A coupon currency can differ; do not silently reuse its units."},{"id":"maturity-after-issue","constraint":"Maturity must be later than the bond's issue date.","appliesTo":"application","normativity":"normative","specQuote":"*         The maturity date MUST be greater than the issue date","specSection":"Specification / Token Interface / maturityDate","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Validate the date ordering on issuance forms and present an invalid-data state if contract metadata is inconsistent."},{"id":"amount-scaling","constraint":"The optional additional-parameters interface defines amount scaling through decimals; ten is only an example.","appliesTo":"application","normativity":"normative","specQuote":"* @notice Returns the number of decimals used by the bond. For example, if it returns `10`, it means that the token amount MUST be multiplied by 10000000000 to get the standard representation.","specSection":"Specification / Additional bond parameters Interface / decimals","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Read the deployed interface's actual precision and unit conventions. Do not hard-code ten decimals or assume every ERC-7092 bond exposes this optional extension."},{"id":"cross-chain-context","constraint":"Cross-chain functions must specify both the destination chain and target contract, and the extension is optional.","appliesTo":"application","normativity":"normative","specQuote":"The standard permits the implementation of the `IERC7092CrossChain` interface for cross-chain management of bond tokens. This interface is OPTIONAL and may be used by applications to allow cross-chain transactions. Any function initiating a cross-chain transaction MUST explicitly define the destination chain identifier `destinationChainID` and specify the target smart contract `destinationContract`.","specSection":"Specification / Cross-chain Interface","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Detect extension support and show the destination network and contract before an action or approval. Distinguish submission on the origin from the destination's reported outcome."},{"id":"owner-or-approved-authority","constraint":"Bond approval and transfer functions require validation of owner or approved-account authority.","appliesTo":"application","normativity":"security-considerations","specQuote":"Implementing this ERC requires careful consideration of security risks related to functions approving operators to manage owner's bonds and functions allowing bond transfers. The use of these functions necessitates robust validation to ensure only the bond owner or approved accounts can call them.","specSection":"Security Considerations","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Name the acting account and spender, show the amount and destination of an approval, and provide an unauthorized state instead of assuming ownership alone authorizes a relayed action."},{"id":"non-erc20-compatibility","constraint":"ERC-7092 does not automatically provide ERC-20 or ERC-1155 compatibility.","appliesTo":"application","normativity":"backwards-compatibility","specQuote":"This ERC is not backwards compatible with existing standards like [ERC-20](./eip-20.md) or [ERC-1155](./eip-1155.md) due to the absence of certain functions like `totalSupply` or `balanceOf`.","specSection":"Backwards Compatibility","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Check the actual bond interface before showing standard token actions. Obtain balances through the deployed bond's principal and denomination conventions rather than assuming balanceOf exists."},{"id":"bond-symbol-recommendation","constraint":"The bond symbol is RECOMMENDED to combine the issuer's shorter name and the maturity date.","appliesTo":"application","normativity":"normative","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Use the issuer-and-maturity convention as a recognizable bond label while keeping the source recommendation explicit.","specQuote":"*         It is RECOMMENDED to represent the symbol as a combination of the issuer Issuer'shorter name and the maturity date"},{"id":"bond-issue-volume-unit","constraint":"Issue volume is RECOMMENDED to be expressed in denomination units.","appliesTo":"application","normativity":"normative","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Label issue volume in denomination units and show the unit source instead of presenting a raw number without context.","specQuote":"* @notice Returns the issue volume (total debt amount). It is RECOMMENDED to express the issue volume in denomination unit."},{"id":"bond-interest-rate-unit","constraint":"Interest rate is RECOMMENDED to be expressed in basis-point units.","appliesTo":"application","normativity":"normative","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Show the rate's basis-point convention next to the value and preserve a clear conversion for percentage-oriented readers.","specQuote":"* @notice Returns the bond interest rate. It is RECOMMENDED to express the interest rate in basis point unit."},{"id":"bond-principal-unit","constraint":"Principal is RECOMMENDED to be expressed in the bond currency unit.","appliesTo":"application","normativity":"normative","specSection":"Specification","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Display principal with its bond currency and do not silently substitute coupon currency units.","specQuote":"* @notice Returns the principal of an account. It is RECOMMENDED to express the principal in the bond currency unit (USDC, DAI, etc...)"},{"id":"optional-esg-interface","constraint":"The IERC7092ESG interface is OPTIONAL and MAY be used to improve standard usability.","appliesTo":"application","normativity":"normative","specSection":"Specification > Additional bond parameters Interface","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Feature-detect ESG and coupon-term fields before offering schedule or day-count controls; keep the base bond view usable without them.","specQuote":"The `IERC7092ESG` interface is OPTIONAL for contracts implementing this proposal. This interface MAY be used to improve the standard usability."},{"id":"coupon-currency-option","constraint":"Coupon currency MAY differ from the currency used to repay principal.","appliesTo":"application","normativity":"normative","specSection":"Specification > Additional bond parameters Interface","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Show coupon and principal currencies as separate terms in payment previews and portfolio summaries.","specQuote":"- The `currencyOfCoupon` The currency used for coupon payment may be different from the currency used to repay the principal"},{"id":"coupon-type-option","constraint":"Coupon type MAY describe zero-coupon, fixed-rate, floating-rate, or other forms.","appliesTo":"application","normativity":"normative","specSection":"Specification > Additional bond parameters Interface","specUrl":"https://ercs.ethereum.org/ERCS/erc-7092","designImplication":"Treat coupon type as an explicit term with a supported-value fallback rather than assuming every bond is fixed-rate.","specQuote":"- The `couponType` MAY be employed to signify the interest rate that the issuer has committed to paying to investors, which may take various forms such as zero coupon, fixed rate, floating rate, and more."}],"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7092","type":"official-spec"}],"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18","summary":"Users hold traditional financial bonds on-chain with familiar terms — ISIN, coupon rate, maturity date, denomination, principal.","designerTakeaways":["You can label fields ISIN, Coupon, Maturity, Denomination on bond detail using traditional finance layout.","Your portfolio can show accrued interest and next coupon date when the deployed contract exposes schedule data.","You can badge Callable, Puttable, or Convertible variants when the deployed implementation exposes those extensions, with explainer tooltips."],"applicability":{"whenToUse":["Product lists tokenized bonds or structured debt.","Investors expect capital-markets terminology.","ERC-7092 contracts power holdings."],"whenToAvoid":["Generic yield tokens without bond structure.","Retail users with no bond literacy and no education layer.","Contract lacks required core bond fields or the optional schedule data needed by the intended view."]},"prototypeFirst":[{"screen":"Bond detail card","why":"Investors diligence terms before buy.","covers":["Plain bond","Callable","Convertible"],"include":["ISIN row","Coupon rate","Maturity date","Denomination minimum"]},{"screen":"Coupon schedule","why":"Income investors track payment dates.","covers":["Upcoming coupon when the optional schedule is available","Paid history when the implementation exposes it"],"include":["Schedule table","Next payment highlight when supported","Accrued interest when supported"]},{"screen":"Purchase denomination gate","why":"Bonds trade in minimum chunks.","covers":["Below minimum","Valid lot"],"include":["Minimum denomination callout","Lot size stepper","Total cost preview"]},{"screen":"Callable notice","why":"Issuer may redeem early — surprise if hidden.","covers":["Callable date approaching","Called"],"include":["Callable badge","Notice period","Redemption amount"]}],"mentalModel":[{"label":"ISIN","description":"Standard security identifier — trust and reconciliation anchor."},{"label":"Coupon","description":"Periodic interest payment — show the rate and schedule when schedule data is available."},{"label":"Maturity","description":"Scheduled maturity date — countdown matters, but payment depends on the issuer/implementation."},{"label":"Denomination","description":"Minimum trade size — not fractional like typical tokens."},{"label":"Variant flags","description":"Callable, puttable, or convertible extensions change risk — badge only when supported."}],"statesToDesign":[{"state":"Active holding","trigger":"User owns bond before maturity.","userNeed":"Track income and maturity.","designResponse":"Show the schedule and accrued interest only when the deployed bond exposes that optional data."},{"state":"Below minimum purchase","trigger":"User enters invalid lot.","userNeed":"Fix before submit.","designResponse":"Minimum denomination is X inline error."},{"state":"Coupon payment due (when schedule is available)","trigger":"The deployed schedule reports an approaching payment date.","userNeed":"Expect cash flow.","designResponse":"Next coupon in N days notification when schedule data is supported."},{"state":"Matured","trigger":"Past maturity date.","userNeed":"See principal returned.","designResponse":"Matured badge with issuer/implementation redemption status; the date alone does not prove payment."},{"state":"Called by issuer","trigger":"Callable bond redeemed early.","userNeed":"Understand early exit.","designResponse":"Called notice with proceeds only when the callable extension exposes them."}],"designDecisions":[{"question":"Yield as APY or coupon?","recommendation":"Coupon rate % plus payment frequency when the deployed bond exposes schedule data.","rationale":"DeFi APY mental model misprices fixed income."},{"question":"Basis points or percent?","recommendation":"Percent for retail; bps toggle for institutional.","rationale":"Dual audience common in tokenized RWAs."},{"question":"Accrued interest on screen?","recommendation":"Show on detail when the deployed bond exposes schedule data; optional on portfolio row.","rationale":"Accrual affects purchase price in secondary."}],"problemsSolved":[{"problem":"Crypto UI on traditional securities","oldWay":"APY and token amount only","newWay":"ISIN, coupon, maturity bond card","impact":"high"},{"problem":"Wrong lot size submissions","oldWay":"Revert at settlement","newWay":"Denomination gate before sign","impact":"high"},{"problem":"Missed callable events","oldWay":"Surprise early redemption","newWay":"Callable badge and notice period UI when the deployed callable extension exposes them","impact":"medium"}],"uxPatterns":[{"name":"Bond Term Sheet Card","description":"Traditional finance layout for on-chain bond.","components":["ISINRow","CouponRate","MaturityDate","VariantBadge"],"userFlow":["Open bond","Read terms","Check schedule","Purchase valid lot"]},{"name":"Coupon Schedule View","description":"Payment dates and accrued interest when the deployed bond exposes schedule data.","components":["ScheduleTable","AccruedInterest","NextCouponHighlight"],"userFlow":["View holding","Open schedule","See the next payment when supported","Track payment history when the implementation exposes it"]}],"antiPatterns":[{"pattern":"Showing bond as generic yield farm","why":"Mispriced risk and tax treatment","instead":"Bond term sheet with ISIN and maturity","severity":"critical"},{"pattern":"Fractional buy below denomination","why":"Revert after user signs","instead":"Lot stepper locked to denomination multiples","severity":"high"},{"pattern":"Hiding callable/puttable flags","why":"Investors miss early redemption risk","instead":"Variant badges on card and confirm","severity":"high"}],"vocabulary":[{"use":"Coupon rate","avoid":"Yield APY","why":"Fixed income correct term."},{"use":"Maturity date","avoid":"Expiry timestamp","why":"Finance language."},{"use":"Minimum investment","avoid":"Denomination unit","why":"Retail investor term."}],"technicalNotes":"ERC-7092 defines core capital-markets fields such as ISIN, currency, denomination, coupon rate, issue/maturity dates, and principal. The ESG coupon-schedule/day-count interface is optional, and Callable, Puttable, and Convertible behavior comes from inheriting extensions rather than the core interface. Do not treat a date as proof that principal was redeemed; show issuer/implementation status.","relatedStandards":[{"id":"ERC-3643","relationship":"Regulated bond transfers may need compliance"},{"id":"ERC-20","relationship":"Some bond legs tokenized as ERC-20"}]},"sources":[{"label":"Official specification","url":"https://ercs.ethereum.org/ERCS/erc-7092","type":"official-spec"},{"label":"Discussion search","url":"https://ethereum-magicians.org/search?q=ERC-7092","type":"discussion"}],"urls":{"canonical":"https://www.eipsfordesigners.com/standards/ERC-7092","markdown":"https://www.eipsfordesigners.com/standards/ERC-7092/content.md","agent":"https://www.eipsfordesigners.com/standards/ERC-7092/agent.md","api":"https://www.eipsfordesigners.com/api/standards/ERC-7092","official":"https://ercs.ethereum.org/ERCS/erc-7092","discussion":"https://ethereum-magicians.org/search?q=ERC-7092"},"freshness":{"lastReviewed":"2026-09-18","lastUpdated":"2026-09-18"}}