
Issuing and holding
4 minDifficulty Checked 2026-11-10- MPTokenIssuanceCreate defines the token. Asset scale and maximum amount are fixed for good.
- A holder opts in with MPTokenAuthorize, which creates an MPToken entry.
- The issuance and each holder's MPToken entry lock 0.2 XRP each.
An MPT starts with a rule sheet. The issuer fills it in once:
- How small a unit can be split. This is the decimal point.
- The most that can be in circulation, if there is a cap.
- A transfer fee, if any.
- A set of on and off switches for what holders and the issuer may do.
- A short description: ticker, name, icon, who issued it.
The ledger stores the sheet and gives it an ID. This is the issuance. It costs the issuer 0.2 XRP of reserve.
No tokens exist yet. Two more steps create them:
- A holder says "I will hold this token." That makes an empty slot in the holder's account. The slot locks 0.2 XRP of the holder's reserve.
- The issuer sends a payment into that slot. Those units now exist.
After that, holders can pay each other, if the rule sheet allows transfers.
To leave, a holder empties the slot and removes it. The 0.2 XRP unlocks. An issuer can delete an issuance only when nobody holds any of it.
The cap is on units in circulation. If holders send 200 units back to the issuer, those are burned, and the issuer can issue 200 again.
MPTokenIssuanceCreate creates the MPTokenIssuance entry. Fields:
| Field | Meaning |
|---|---|
AssetScale | Decimal places for display. Default 0. |
MaximumAmount | Cap on circulating units. Default limit 2^63 - 1. |
TransferFee | 0 to 50,000, in units of 0.001%. Needs tfMPTCanTransfer. |
MPTokenMetadata | Up to 1024 bytes, hex encoded. |
Flags | The capability switches. |
AssetScale and MaximumAmount cannot be changed after creation.
Metadata. By convention it is JSON that follows XLS-89, with short keys to fit the limit. Required keys: t ticker, n name, i icon, ac asset class, in issuer name. Asset classes are rwa, memes, wrapped, gaming, defi and other. Metadata is written by the issuer. The ledger does not check that it is true.
MPTokenAuthorize has three uses:
- Holder opts in:
MPTokenIssuanceID, no flags. Creates anMPTokenentry with a zero balance. - Holder opts out:
tfMPTUnauthorize. Works only with a zero balance, and not while the token is locked. - Issuer approves or revokes a holder, when the issuance uses Require Auth: the issuer sends it with
Holderset.
Issuing. There is no mint transaction. The issuer sends a Payment with an MPT amount to an account that has opted in. OutstandingAmount on the issuance goes up. When the issuer receives its own MPT, OutstandingAmount goes down.
Reserves. Per XLS-33, each MPTokenIssuance costs its issuer one owner reserve, and each MPToken costs its holder one. That is 0.2 XRP each today.
MPTokenIssuanceDestroy removes an issuance. Only the issuer can send it, and only when there are no holders.
Reading. ledger_entry looks up MPTokenIssuance and MPToken entries. mpt_holders, a Clio method, lists every holder of an issuance with balances, paged with marker.
Related: Owner reserve, Issuer controls.
- MPTokenIssuanceCreateRead 2026-11-10
- MPTokenAuthorizeRead 2026-11-10
- MPTokenIssuanceDestroyRead 2026-11-10
- MPTokenRead 2026-11-10
- Multi-Purpose Tokens (MPTs)Read 2026-11-10
- XLS-33 Multi-Purpose TokensRead 2026-11-10
