Blog/Token Extensions
How to Create a Token-2022 on Solana — Extensions Guide
Transfer fees, soulbound tokens and metadata without Metaplex — what each extension does to a transfer, and what it costs in compatibility.
updated March 2026/7 min read
Token-2022 is Solana's next-generation token program. It does everything the original SPL Token Program does — mint tokens, transfer them, set authorities — but adds powerful built-in features called Token Extensions. Transfer fees, soulbound (non-transferable) tokens, embedded metadata, and more — all at the protocol level, no external programs needed.
This guide covers what Token Extensions are, what each one changes about a transfer, what it costs in compatibility, and the order the decisions come in when a Token-2022 is created. It applies whether you go through the CLI or a tool that puts a form in front of it.
What Are Token Extensions?
Token Extensions are features baked directly into the Token-2022 program. Unlike the original SPL Token Program, where advanced features require separate programs and workarounds, Token-2022 handles everything natively. This means better security, lower costs, and simpler architecture.
Five extensions come up most often when a token is created. None of them is present unless it is chosen:
1. Transfer Fee
The transfer fee extension collects a percentage of every token transfer automatically. You set two parameters:
- Fee rate — in basis points (100 basis points = 1%). Range: 0 to 10,000 (0% to 100%).
- Maximum fee — a cap on the fee per transfer, in the token's smallest unit. The fee actually charged is the smaller of the calculated fee and this cap, which makes a maximum of zero a fee of zero on every transfer, however high the rate. To leave the percentage effectively uncapped, set the maximum to the largest number the field holds: 18,446,744,073,709,551,615.
When someone transfers 1,000 tokens with a 2% fee, the recipient gets 980 tokens and 20 tokens are withheld in the recipient's account. Whoever holds the withdraw-withheld authority can harvest those fees back to the mint and withdraw them later, using the Token-2022 program's own instructions.
Use cases: protocol revenue on every trade, automatic creator royalties, transaction taxes, or fee-sharing with stakers.
2. Non-Transferable (Soulbound)
Soulbound tokens are permanently bound to the wallet that receives them. Once minted to an address, the tokens cannot be transferred, sold, or traded — ever. The holder can only burn them.
Use cases: certifications and credentials (proof of course completion, audit badges), membership tokens (DAO voting rights tied to identity), reputation scores, event attendance proofs, or KYC verification tokens.
Important: soulbound tokens cannot have transfer fees (fees require transfers) or be default frozen (both restrict movement, which is redundant).
3. Mint Close Authority
This extension names a close authority — its own authority, set when the mint is created, not the mint authority — which can close the mint account and reclaim its rent once the total supply is zero, meaning every token in every account has been burned. Without the extension a mint cannot be closed at all, and its rent stays locked on chain even if the token is abandoned.
Use cases: temporary event tokens (close after the event), experimental or test tokens (clean up after testing), or any token with a planned end-of-life.
4. Default Frozen
When enabled, every new token account starts in a frozen state. Holders cannot send or receive tokens until the freeze authority explicitly thaws their account. This creates a whitelist-like system at the protocol level.
Use cases: regulated securities (only approved investors can hold), KYC-required tokens (thaw after identity verification), controlled distributions (thaw when conditions are met).
Warning: default frozen requires freeze authority to be enabled. If you enable default frozen and then revoke freeze authority, all accounts stay frozen permanently — no one can ever transfer.
5. Metadata and the metadata pointer (optional)
Token-2022 can hold its own metadata: a metadata pointer extension says where the metadata lives, and the token metadata extension lets that be the mint account itself. Name, symbol and URI then sit on chain at a single address, with no Metaplex account and no Metaplex protocol fee. Like every other extension it is a choice — a mint with no metadata extension has no on-chain name at all, exactly as a bare SPL mint does. Most tools enable it, because a token nothing can name is a token nothing will display.
Øextensions are permanent
Which extensions a mint carries is chosen at creation and cannot be added to or removed afterwards, so the capability set holders see is the one they keep. Their configuration is a different matter: whoever holds the transfer-fee authority can change the fee, the freeze authority can change the default state new accounts start in, and the metadata update authority can rewrite the metadata. A token is only as fixed as the authorities that were given up.
Extension Compatibility Rules
Not all extensions can be combined. The tool enforces these rules automatically, but here is what to know:
| Combination | Allowed? | Why |
|---|---|---|
| Transfer Fee + Soulbound | No | Fees require transfers; soulbound blocks transfers |
| Soulbound + Default Frozen | No | Both restrict movement; redundant and confusing |
| Transfer Fee + Default Frozen | Yes | KYC + tax compliance (thaw approved users, collect fees) |
| Mint Close + anything | Yes | Mint close is independent of other extensions |
How to Create a Token-2022 (Step by Step)
The decisions come in the same order as for an SPL token, with one extra step in the middle — and that step is the one that cannot be undone.
Step 1: The token's identity
Name, symbol, decimals, a logo and an optional description, exactly as for a standard SPL token. What differs is where the metadata can go: into the mint account itself, if you enable the metadata extension, rather than into a separate Metaplex account. The logo is still a URL, so it still needs somewhere permanent to live.
Step 2: Extensions
This is what makes a Token-2022 a Token-2022. Which extensions the mint carries is settled here and cannot be changed later, though several of them keep an authority that can adjust their settings afterwards:
- Transfer fee — a percentage in basis points, with an optional cap.
- Non-transferable — soulbound. Cannot be combined with a transfer fee.
- Mint close authority — names an authority that can close the mint and reclaim its rent once the supply is zero.
- Default account state — new accounts start frozen, for whitelist or KYC flows. Requires a freeze authority.
Supply and the ordinary authorities — mint, freeze, update — are decided here too, exactly as they are for an SPL token.
Step 3: The transaction itself
The mint account is allocated large enough to hold the extensions it will carry, then initialised: extensions first, then the mint, then the metadata if it is going to live in the mint, then the initial supply, then any authority you chose to revoke. Check what is being charged before signing.
How Much Does a Token-2022 Cost?
- Rent deposits — the mint is larger than a plain SPL mint by whatever the extensions you enabled take up, and larger again if the metadata is embedded in it, where the name, symbol and URI lengths decide the size. It is a figure to read off the chain rather than out of a table.
- Metaplex protocol fee — none, if the metadata is embedded in the mint: Metaplex is not involved at all. A Token-2022 that uses a Metaplex metadata account instead pays that fee like any other token.
- Network fee — a base fee per signature plus whatever priority fee the transaction requests.
- Tool fee, if any — whatever a third-party tool charges on top, which varies between tools and should be visible before you approve.
Compared with a standard SPL token, a Token-2022 that holds its own metadata trades a larger rent deposit for the Metaplex fee it never pays, and gets features that would otherwise need a custom program.
Token-2022 vs SPL — When to Use Which?
Use a standard SPL token if you want maximum compatibility. Every wallet, DEX, and tool supports SPL tokens. This is the right choice for meme coins, community tokens, and any fungible token that does not need built-in fees or transfer restrictions.
Use Token-2022 if you need protocol-level features: automatic transfer fees for revenue, soulbound tokens for credentials, default frozen accounts for compliance, or mint close for cleanup. These features are impossible with standard SPL tokens.
For a detailed comparison, see our guide: SPL Token vs Token-2022 — What's the Difference?
Collecting Transfer Fees
If you enable transfer fees, the withheld amounts accumulate in each recipient's token account rather than arriving in yours. Collecting them is a separate step: the Token-2022 program has instructions to harvest withheld fees from holder accounts back to the mint, and then withdraw them.
The withdraw withheld authority (set during creation) is the only wallet that can collect these fees. If you transfer or revoke this authority, fees become uncollectable — so manage it carefully.
Common Mistakes
- Enabling default frozen without a plan — if you freeze all accounts and then revoke freeze authority, every holder is permanently frozen. Only enable this if you have a process for thawing approved users.
- Minting soulbound tokens to your own wallet — a non-transferable token cannot be moved out of the account it lands in, so supply minted to yourself can only be burned, never delivered. There is no airdrop route for these: mint directly to each recipient's account instead. No bulk sender can help, this one included, because the transfer instruction is exactly what the extension refuses.
- Setting transfer fee too high — 10,000 basis points = 100% fee. The recipient gets nothing. Most protocols use 1-5% (100-500 basis points).
- Forgetting extensions are permanent — you cannot add transfer fees after creation. Plan your tokenomics before you create.
- Revoking mint authority with zero supply — same as SPL tokens: no tokens will ever exist. Always mint your initial supply before revoking.
Frequently asked
reverse- 01.
What is Token-2022 on Solana?
Token-2022 is Solana's newer token program. It does what the original does, and adds optional extensions a mint can be created with: transfer fees, soulbound tokens, a mint close authority, a default frozen state for new accounts, and metadata held in the mint itself. Each is a choice made at creation, and none of them needs an external program.
- 02.
How much does it cost to create a Token-2022?
On chain: a rent deposit sized to the mint account, plus network fees. The mint is bigger than a plain SPL mint by however much the extensions you chose take up, and bigger again if you embed metadata in it. Embedded metadata means no Metaplex protocol fee, because Metaplex is not involved; a Token-2022 that uses a Metaplex metadata account instead pays that fee like any other token. Any third-party tool fee is on top and varies between tools.
- 03.
Can I add extensions after creating a Token-2022?
No. Which extensions a mint carries is decided when it is created, and that is the guarantee holders rely on. Their settings are a separate question: a transfer fee can be changed by the transfer-fee authority, the default account state by the freeze authority, and metadata by its update authority. Read the authorities, not only the extension list.
- 04.
What is a transfer fee token?
A token that automatically collects a percentage of every transfer. Set the fee in basis points (100 = 1%) with an optional cap. Fees accumulate in recipient accounts and are collected by the designated authority.
- 05.
What is a soulbound token?
A non-transferable token permanently bound to the receiving wallet. Cannot be sold, traded, or sent. Used for credentials, memberships, reputation scores, and identity verification.