Skip to content

Create a new Multi-Purpose Token (MPT) issuance on the XRP Ledger.

Prerequisites

  • An XRPL account registered in Ripple Custody
  • Sufficient XRP for reserves (owner reserve + issuance reserve)

Create an MPT issuance

To create an MPT, submit a transaction order with the MPTokenIssuanceCreate operation:

{
  "payload": {
    "id": "{{intent_id}}",
    "accountId": "{{issuer_account_id}}",
    "ledgerId": "xrpl-testnet",
    "parameters": {
      "type": "XRPL",
      "feeStrategy": {
        "priority": "High",
        "type": "Priority"
      },
      "maximumFee": "1000000000",
      "memos": [],
      "operation": {
        "type": "MPTokenIssuanceCreate",
        "assetScale": 6,
        "transferFee": 0,
        "maximumAmount": "1000000000000000",
        "metadata": {
          "type": "HexEncodedMetadata",
          "value": "7B226E223A224D7920546F6B656E222C2264223A22546F6B656E206465736372697074696F6E227D"
        },
        "flags": ["tfMPTCanTransfer", "tfMPTCanTrade", "tfMPTCanClawback", "tfMPTCanLock"]
      }
    },
    "description": "MPTokenIssuanceCreate intent",
    "customProperties": {},
    "type": "v0_CreateTransactionOrder"
  }
}

The metadata.value field contains hex-encoded JSON. The example above decodes to: {"n":"My Token","d":"Token description"}. Use a hex encoding utility to convert your metadata JSON to hex format.

Parameters

FieldTypeRequiredDescription
flagsarrayYesIssuance flags. Can be empty []. See Issuance flags.
assetScaleintegerNoDecimal precision (0-255). Default: 0
maximumAmountstringNoMaximum supply (64-bit unsigned integer as string). Omit for unlimited.
transferFeeintegerNoTransfer fee in basis points (0-50000).
metadataobjectNoHex-encoded on-chain metadata. See Metadata format.

Metadata format

The metadata field must be an object with the following structure:

FieldTypeRequiredDescription
typestringYesMust be HexEncodedMetadata.
valuestringYesHex-encoded metadata string.

Issuance flags

Set these flags during creation to control token behavior. These flags are immutable after creation.

FlagDescription
tfMPTCanLockIssuer can freeze tokens.
tfMPTRequireAuthHolders must be authorized before receiving tokens.
tfMPTCanTransferHolders can transfer tokens to each other.
tfMPTCanClawbackIssuer can reclaim tokens from holders.
tfMPTCanEscrowTokens can be placed in escrow.
tfMPTCanTradeTokens can be traded on the DEX.
tfMPTConfidentialEnable confidential mode (cMPT).

Choose flags carefully during issuance. Most flags cannot be changed after the MPT is created.

Response

A successful request returns the transaction order with status Pending. The transaction includes the generated MPTIssuanceID in the on-chain result after confirmation.

Retrieve the issuance ID

After the transaction is confirmed, retrieve the issuance ID from the transaction result:

  1. Query the transaction order by ID.
  2. Extract the MPTIssuanceID from the ledger result.

The issuance ID is a 192-bit identifier (48 hex characters) used to reference the MPT in all subsequent operations.