# 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)