# MPTokenAuthorize [[Source]](https://github.com/XRPLF/rippled/blob/master/src/xrpld/app/tx/detail/MPTokenAuthorize.cpp) Control whether an account can hold a given [Multi-purpose Token (MPT)](/es-es/docs/concepts/tokens/fungible-tokens/multi-purpose-tokens). This transaction has several uses: - An account indicates their willingness to hold an MPT. This creates a new [MPToken entry](/docs/references/protocol/ledger-data/ledger-entry-types/mptoken) with an initial zero balance owned by that account. This is a prerequisite to receive that type of MPT in a payment. - An account revokes their willingness to hold an MPT, deleting the [MPToken entry](/docs/references/protocol/ledger-data/ledger-entry-types/mptoken). This can only be done if their balance of the given MPT is zero. - For an MPT that uses allow-listing, an issuer grants or revokes permission for another account to hold the given MPT. MPTokensV1 ## Example MPTokenAuthorize JSON This example assumes that the transaction is submitted by the holder of the token. ```json { "TransactionType": "MPTokenAuthorize", "Account": "rsNw23ygZatXv7h8QVSgAE4jktY2uW1iZP", "MPTokenIssuanceID": "05EECEBE97A7D635DE2393068691A015FED5A89AD203F5AA", "Fee": "10", "Flags": 0, "Sequence": 99537811 } ``` ## Fields In addition to the [common fields](/docs/references/protocol/transactions/common-fields), transactions use the following fields: | Field | JSON Type | [Internal Type](/docs/references/protocol/binary-format) | Required? | Description | | --- | --- | --- | --- | --- | | `MPTokenIssuanceID` | String | `UInt192` | Yes | The ID of the MPT to authorize. | | `Holder` | String - [Address](/docs/references/protocol/data-types/basic-data-types#addresses) | `AccountID` | No | The holder to authorize. Only used for authorization/allow-listing; must be omitted if submitted by the holder. | ### MPTokenAuthorize Flags Transactions of the MPTokenAuthorize type support additional values in the `Flags` field, as follows: | Flag Name | Hex Value | Decimal Value | Description | | --- | --- | --- | --- | | `tfMPTUnauthorize` | `0x00000001` | 1 | When the holder enables this flag, if their balance of the given MPT is zero, it revokes their willingness to hold this MPT and deletes their `MPToken` entry. If their balance is non-zero, the transaction fails. When an issuer enables this flag, it revokes permission for the specified holder to hold this MPT; the transaction fails if the MPT does not use allow-listing. | ## See Also - [MPToken entry](/docs/references/protocol/ledger-data/ledger-entry-types/mptoken)