--- html: nftokenmint.html parent: nft-concepts.html blurb: Use TokenMint to issue new NFTs. filters: - include_code labels: - Non-fungible Tokens, NFTs status: not_enabled --- # The `NFTokenMint` Transaction {% include '_snippets/nfts-disclaimer.md' %} The `NFTokenMint` transaction creates a `NFToken` object and adds it to the relevant `NFTokenPage` object of the `minter`. A required parameter to this transaction is the `Token` field specifying the actual token. This transaction is the only opportunity the `minter` has to specify any token fields that are defined as immutable (for example, the `TokenFlags`). If the transaction is successful, the newly minted token is owned by the account (the `minter` account) that executed the transaction. If needed, the server creates a new `NFTokenPage` for the account and applies a reserve charge. ## Example `NFTokenMint` transaction ``` { "TransactionType": "NFTokenMint", "Account": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B", "Issuer": "rNCFjv8Ek5oDrNiMJ3pw6eLLFtMjZLJnf2", "TransferFee": 314, "Flags": 2147483659, "Fee": 10, "URI": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf4dfuylqabf3oclgtqy55fbzdi" "Memos": [ { "Memo": { "MemoType": "687474703A2F2F6578616D706C652E636F6D2F6D656D6F2F67656E65726963", "MemoData": "72656E74" } } ], } ``` This transaction assumes that the issuer, `rNCFjv8Ek5oDrNiMJ3pw6eLLFtMjZLJnf2`, has set the `MintAccount` field in its `AccountRoot` to `rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B`, thereby authorizing that account to mint tokens on its behalf. ## **Execution** In executing, this transaction examines the `MintedTokens` field in the account root of the `Issuer` and uses it to construct the `TokenID` for the token being minted. If the field does not exist, the field is assumed to have the value 0; the value of the field is then incremented by exactly 1. ## Transaction-specific Fields
| Field Name | Required? | JSON Type | Internal Type | Description |
TransactionType
|
Yes | string
|
UInt16
|
Indicates the new transaction type NFTokenMint. The integer value is 25.
|
Account
|
Yes | string
|
AccountID
|
Indicates the account that is minting the token. The account MUST either:
|
Issuer
|
No | string
|
AccountID
|
Indicates the account that issues the token. This value is optional and should only be specified if the account executing the transaction is not the Issuer of the NFToken object. If it is present, the MintAccount field in the AccountRoot of the Issuer field must match the Account. Otherwise, the transaction fails.
|
TokenTaxon
|
Yes | number
|
UInt32
|
The taxon associated with the token. The taxon is generally a value chosen by the minter of the token. A given taxon can be used for multiple tokens. This implementation reserves all taxon identifiers greater than or equal to 0x80000000; attempts to use mint tokens with such taxons should fail and a fee should be claimed.
|
TransferFee
|
No | number
|
UInt16
|
The value specifies the fee charged by the issuer for secondary sales of the Token, if such sales are allowed. Valid values for this field are between 0 and 9999 inclusive, allowing transfer rates of between 0.00% and 99.99% in increments of 0.01.
The field MUST NOT be present if |
URI
|
No | string
|
BLOB
|
A URI that points to the data or metadata associated with the NFT. This field need not be an HTTP or HTTPS URL; it could be an IPFS URI, a magnet link, immediate data encoded as an RFC2379 "data" URL, or even an opaque issuer-specific encoding. The URI is NOT checked for validity, but the field is limited to a maximum length of 256 bytes. |
Flags
|
No | number
|
UInt32
|
Specifies the flags used for the minting transaction. See the mint transaction flags in the following table. |
| Flag Name | Flag Value | Description |
tfBurnable
|
0x00000001
|
If set, indicates that the lsfBurnable flag should be set.
|
tfOnlyXRP
|
0x00000002
|
If set, indicates that the lsfOnlyXRP flag should be set.
|
tfTrustLine
|
0x00000004
|
If set, indicates that the lsfTrustLine flag should be set.
|
tfTransferable
|
0x00000008
|
If set, indicates that the lsfTransferable flag should be set.
|
[memo](https://xrpl.org/transaction-common-fields.html#memos-field) functionality already available on the XRP Ledger as a common field. Memos are a part of the signed transaction and are available from historical archives, but are not stored in the ledger.