Skip to content

DappsAtlas index · 14,224 dApps

DappsAtlas

Blockchain · How-to

How to Manage Algorand Standard Assets as a Developer in 2026

An Algorand Standard Asset (ASA) is a token issued by the protocol itself, with no smart contract required. This guide explains how to create one, set its management roles, handle opt-ins, transfers, freezes and clawbacks, and prepare it for mainnet.

By the DappsAtlas editorial team · Updated

Illustration for How to Manage Algorand Standard Assets as a Developer in 2026

What is an Algorand Standard Asset and how does it work?

An Algorand Standard Asset (ASA) is a token that lives at the protocol level. The ledger tracks it natively, so you do not need to deploy a smart contract to issue a fungible token, a stablecoin-style asset, or a non-fungible token with a total supply of one. Each asset receives a numeric asset ID when it is created, and wallets, explorers and other apps use that ID to refer to it.

Key traits to plan around:

  • Creation is a single asset configuration transaction.
  • Transfers use native asset transfer transactions.
  • Holders must opt in before they can receive an asset.
  • Management powers (reconfigure, freeze, clawback) are held by addresses you choose, not by code you write.

Because these rules live in the asset record, decide early which powers you need. A fixed-supply collectible may need none of them, while a regulated token may need freeze and clawback. The sections below cover each setting so you can match the design to your use case.

How do I set up a development environment for ASA work?

Start on TestNet, not MainNet. Install a current Algorand SDK for your language, such as the JavaScript or Python SDK, or use AlgoKit, Algorand's developer tooling, which can help you run a local network for testing. Package names and versions change, so follow the current installation steps in the developer documentation.

Next, create at least two test accounts: a creator, which issues the asset, and a receiver. Fund them from a TestNet dispenser. Never reuse MainNet keys in test scripts.

Store mnemonics and private keys in environment variables or a secrets manager. Do not place them in source code or public repositories. Use a separate account for each role you plan to test, so you can confirm which address is authorized for each action.

Before sending any transaction, confirm three things: the node or API endpoint you connect to, the network genesis ID, and the minimum balance of each account. When a transaction fails, read the error text closely, since it usually points to the cause.

How do I create an Algorand Standard Asset step by step?

An asset is created with an asset configuration transaction that has no asset ID yet. The main fields are:

Field Purpose
total Number of base units issued
decimals Decimal places used for display
default-frozen Whether new holders start frozen
unit-name Short ticker
asset-name Full name
url Link to information about the asset
metadata hash Hash of a metadata file for integrity
manager Can reconfigure the asset
reserve Informational address for reserves
freeze Can freeze and unfreeze holdings
clawback Can revoke units from holders

The total is expressed in base units. With decimals set to 2, one displayed unit equals 100 base units, so calculate totals carefully.

Steps to create the asset:

  1. Build the asset configuration transaction with the fields above.
  2. Sign it with the creator account.
  3. Submit it and wait for confirmation.
  4. Read the new asset ID from the confirmed transaction.
  5. Save the asset ID in your app configuration, and record the transaction ID for audit purposes.

Which management addresses should I set: manager, reserve, freeze and clawback?

The four management roles are separate fields, and each one can be a different address. Choosing them carefully is one of the most important design decisions you will make.

  • Manager: can change the other role addresses and the asset parameters that can be reconfigured. Losing this key means you lose control of configuration.
  • Reserve: informational only. It has no transfer power, but it is often used to point wallets at metadata or to show where reserve units sit.
  • Freeze: can freeze and unfreeze individual holdings.
  • Clawback: can move units out of a holder account back to another account, but only where the holder has opted in.

Good practice is to keep these roles on separate accounts, ideally multisig or hardware-backed accounts, so that no single key can do everything. Document which person or team controls each role and how changes are approved. If your asset does not need freeze or clawback, you can leave those fields empty at creation.

How do opt-in and transfers work for an ASA?

Before a holder can receive an ASA, the holder account must opt in. An opt-in is an asset transfer transaction for the asset ID, sent from the holder to itself with an amount of zero. Your app should prompt the user to sign this transaction before a transfer is attempted, and it should show a clear message explaining the step.

Each opt-in raises the account's minimum balance. The current amount is set by the protocol, so check the developer documentation before you describe the cost to users.

To transfer units, build an asset transfer transaction that names the asset ID, the sender, the receiver and the amount in base units. You can group a payment and an asset transfer into one atomic group, so both succeed or both fail. This is useful for sales, where payment and delivery must happen together.

After each transfer, confirm the result by querying the account balance from the node or an indexer. Store the transaction IDs and check them against your own records.

How do freeze and clawback controls work?

Freezing and clawback are powerful controls. They can protect users and comply with rules in some jurisdictions, but they can also harm holders if misused, so define their use in writing before launch.

Freeze works per account and per asset. The freeze address sets a flag on a holder's position, and a frozen holder cannot send or receive that asset until the flag is cleared. If you set default-frozen at creation, every new holder starts frozen and must be unfrozen before using the asset. This is useful for allowlisting but adds friction for users.

Clawback lets the clawback address transfer units from a holder account to another account. The target account must have opted in. Clawback is generally reserved for narrow situations, such as legal orders or recovery after a documented error.

For each control, publish the conditions under which it may be used, who approves it, and how holders are notified. Keep audit logs of every freeze, unfreeze and clawback transaction.

How do I change or permanently lock an asset's management?

The manager address can send an asset configuration transaction to change the manager, reserve, freeze and clawback addresses, as well as certain parameters. Any role can be changed to a new address this way.

Setting a role to the zero address removes that role permanently. If you set the manager to the zero address, the asset configuration is locked and can no longer be changed. Removing freeze or clawback disables those powers for good. These steps cannot be reversed, so treat them like a release that requires review.

Good practice before any reconfiguration:

  • Test the same change on TestNet with the same account setup.
  • Confirm the new addresses are funded and controlled by the right people.
  • Announce the change to holders and exchanges that list the asset.
  • Record the transaction ID and the reason for the change.

If you plan to destroy an asset, check the current rules in the developer documentation, since they depend on the creator holding the full supply.

How do I attach metadata such as name, image and description?

Metadata makes an asset readable in wallets and explorers. The url and metadata hash fields connect the asset to an external file. Hosting the file at a stable address and recording its hash lets anyone check that the content has not changed.

Several community metadata standards are used on Algorand, including ARC-3, which stores JSON metadata at a URL with a hash, ARC-19, which uses a template URL and the reserve address, and ARC-69, which stores metadata in the transaction note field. Each has different trade-offs for updates and for where the data lives. Check the current status of each standard and which wallets support it before choosing one.

Practical tips:

  • Include a name, ticker, description, image and issuer contact details.
  • Host images on infrastructure you control, with backups.
  • Recompute the hash whenever the file changes, and update the asset only through the manager.
  • Avoid placing private information in public metadata.

How do I test and launch an ASA safely on MainNet?

Before launch, work through a checklist that covers the asset, the keys and the legal position.

  • Run the full lifecycle on TestNet: create, opt in, transfer, freeze, clawback and reconfigure.
  • Write automated tests for each transaction type, including failure cases such as missing opt-in.
  • Use multisig or hardware-backed accounts for the manager, freeze and clawback roles.
  • Keep offline backups of recovery phrases in separate secure locations.
  • Monitor the asset on a block explorer and set alerts for unexpected configuration changes.
  • Review the tokenomics, including how supply is distributed. Vesting tools such as Sablier Lockup or Team Finance can help manage locked allocations, but review their terms and fees before using them.
  • Check local laws on token issuance, securities rules, tax and sanctions screening.

After launch, keep the developer documentation bookmarked, watch protocol announcements, and rehearse incident response, including how you would pause transfers in your app if a key is compromised.

Frequently asked questions

Do I need a smart contract to create an ASA?

Yes, for basic issuance. An ASA is a native ledger object, so you create it with an asset configuration transaction. You only need a smart contract if your app adds custom logic such as sales, vesting, or automated rules around the asset.

Why does a holder have to opt in before receiving an ASA?

Opt-in is a protocol-level safeguard. An account must explicitly agree to hold a specific asset ID before it can receive units, which prevents unwanted tokens from appearing in wallets. Your app should guide users through opt-in before any transfer is attempted.

Can a freeze be undone?

A freeze can be lifted by the freeze address while that address is still set. If you set the freeze address to the zero address, freezing is disabled permanently and cannot be turned back on. Test this change on TestNet before using it on MainNet.

What happens if I remove the manager address?

Once you remove the manager address, the asset parameters can no longer be changed. Other roles set to the zero address are also removed for good. Plan these decisions with your team and any legal advisers before making them.

Is an ASA the same as a token on the Ethereum network?

No. Creating and transferring an ASA uses the same protocol features regardless of which wallet a holder uses, but the rules for regulated tokens differ by country. Check local laws on token issuance, securities rules and sanctions screening before you launch.

Mentioned in this guide

dApps in this guide

Sablier Lockup logoScore 8.0 out of 10

Sablier Lockup is an audited onchain protocol for token vesting, payroll, grants and airdrops, aimed at DAOs and businesses across many chains.

TVL $1.76M−8.2%Ethereum · Polygon · Arbitrum +25
Team Finance logo

Team Finance

Token Locker

Score 7.8 out of 10

Team Finance is a non-custodial platform where token projects create tokens, lock liquidity and team tokens, set up vesting, run staking pools and airdrops.

TVL $56.6M−0.8%Ethereum · BNB Chain · Base +18
Save logo

Save

Lending

Score 6.8 out of 10

Save, formerly Solend, is a Solana lending and borrowing protocol where users earn interest on deposits or borrow against collateral.

TVL $71.1M−8.5%Solana · Eclipse

Keep reading

Related guides

All blockchain guides

Blockchain · Explainer

Algorand Developer Hackathons for Game dApps in 2026

Algorand developer hackathons give game teams a structured way to prototype on a fast, low-fee chain. This guide explains how these events run, what judges tend to weigh, and how to turn a weekend build into something players can actually try.

Blockchain · Explainer

Algorand Staking Explained: Rewards and Network Security

Algorand secures its network through pure proof of stake, and holders who keep ALGO online can take part in the protocol and earn participation rewards. This guide explains how that works, how the security model operates, what risks to weigh, and where to check current rules because reward terms can change.

Blockchain · Chain guide

Aptos Chain dApps and DeFi Integration Guide 2026

Aptos is a Move-based Layer 1 with its own wallet tooling, DEXes, lending markets and bridges. This guide explains how the ecosystem is organised and what developers and users should check before integrating or using a dApp there.

Blockchain · How-to

Intro to Algorand PyTeal Smart Signatures: 2026 Guide

Algorand smart signatures are small, stateless programs that approve transactions, and PyTeal lets you write them in Python. This guide walks through the concepts, a starter program, compilation, testing, deployment and the security checks to run before mainnet use.