The XLS-20 standard for NFTs has a preliminary implementation that can be used in test networks, but is not yet available as an amendment to the XRP Ledger protocol. An amendment may be included in a future XRP Ledger release.

The NFTokenCreateOffer transaction creates either a new Sell offer for an NFToken owned by the account executing the transaction, or a new Buy offer for an NFToken owned by another account.

Each offer costs one incremental reserve.

Example NFTokenCreateOffer JSON

    "TransactionType": "NFTokenCreateOffer",
    "Account": "rs8jBmmfpwgmrSPgwMsh7CvKRmRt1JTVSX",
    "TokenID": "000100001E962F495F07A990F4ED55ACCFEEF365DBAA76B6A048C0A200000007",
    "Amount": "1000000",
    "Flags": 1

NFTokenCreateOffer Fields

Field Name Required? JSON Type Internal Type Description
TransactionType Yes string UInt16 Indicates the new transaction type NFTokenCreateOffer. The integer identifier is 27.
Account Yes string AccountID Indicates the AccountID of the account that initiated the transaction.
Owner No string AccountID Who owns the corresponding NFToken.
  • If the offer is to buy a token, this field must be present and it must be different than Account (since an offer to buy a token one already holds is meaningless).
  • If the offer is to sell a token, this field must not be present, as the owner is, implicitly, the same as Account (since an offer to sell a token one doesn't already hold is meaningless).
TokenID Yes string Hash256 Identifies the TokenID of the NFToken object that the offer references.
Amount Yes Currency Amount AMOUNT Indicates the amount expected or offered for the Token.

The amount must be non-zero, except where this is an offer to sell and the asset is XRP; then, it is legal to specify an amount of zero, which means that the current owner of the token is giving it away, gratis, either to anyone at all, or to the account identified by the Destination field.

Expiration No number UInt32 Indicates the time after which the offer will no longer be valid. The value is the number of seconds since the Ripple Epoch .
Destination No string AccountID If present, indicates that this offer may only be accepted by the specified account. Attempts by other accounts to accept this offer MUST fail.

If successful, the transaction creates a [NFTokenOffer object][].

Flags Yes number UInt32 A set of flags that specifies options or controls the behavior of the transaction. The flag is defined in the table below.

NFTokenCreateOffer Flags

Flag Name Flag Value Description
tfSellToken 0x00000001 If set, indicates that the offer is a sell offer. Otherwise, it is a buy offer.

Note that the Flags field includes both transaction-specific and generic flags; all currently valid generics flags (for example, tfFullyCanonicalSig) are applicable, but not listed here.

The transactor does not allow unknown flags to be set.