# MPTokenAuthorize

[Source](https://github.com/XRPLF/rippled/blob/release/3.4.x/src/libxrpl/tx/transactors/token/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 and the token is not locked. If the token is locked, it can't be deleted unless the parent token issuance has been destroyed. _Requires the [fixCleanup3_4_0 amendment](/resources/known-amendments#fixcleanup3_4_0). (Open for Voting: 0.00%)_
- For an MPT that uses allow-listing, an issuer grants or revokes permission for another account to hold the given MPT.


_Added by the [MPTokensV1 amendment](/resources/known-amendments#mptokensv1). (Enabled: 2025-10-01)_

## 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 with a balance of zero, it revokes their willingness to hold this MPT and deletes their `MPToken` entry. If their balance is non-zero or the token is locked, the transaction fails, unless the parent `MPTokenIssuance` has been destroyed. Unauthorizing a locked MPToken always fails with the result code `tecNO_PERMISSION`. _Requires the [fixCleanup3_4_0 amendment](/resources/known-amendments#fixcleanup3_4_0). (Open for Voting: 0.00%)_ |


## See Also

- [MPToken entry](/docs/references/protocol/ledger-data/ledger-entry-types/mptoken)