Transfer ARC-20
Build a transfer that places every unit where you intend and burns nothing.
Protocol behavior Verified 2026-08-31
Describes the Atomicals protocol itself at the pinned reference revision. It does not promise that any product exposes it.
- Page ID
-
guides/transfer-arc20 - Normative authority
- Executed source code at a pinned revision
- Networks
- mainnet
- Documentation version
- 2026.08
- Audience
- everyone, holder
- Owner
- bitcoin-universe-docs
- Sources
-
- Atomicals ElectrumX
at
v1.5.2.0 - Atomicals JavaScript CLI
at
1333565efbfe
- Atomicals ElectrumX
at
- Known limitations
-
- The Universe visible transfer surface does not construct partial recipient allocations or coloured change from an amount field. Use a compatible builder that works in outpoints and output values.
Before you start
Section titled “Before you start”- Supported networks: mainnet.
- Status: protocol behavior.
- You need a wallet or builder that works in outpoints and satoshi values, not in an amount field.
The shape that works
Section titled “The shape that works”| Position | Contents |
|---|---|
| Input 0 | The coloured lot |
| Input 1 and later | Cardinal inputs for the fee |
| Output 0 | The recipient, sized to exactly the units you are sending |
| Output 1 | Coloured change, sized to exactly the remainder |
| Output 2 | Cardinal change, if any |
The procedure
Section titled “The procedure”- List your coloured outpoints and pick the lot to spend.
- Decide the amount to send. That number is also the satoshi value of output 0.
- Compute the remainder: lot value minus amount sent. That is the satoshi value of output 1.
- Model the exact input and output set in the allocation visualizer.
- Confirm the burn figure is zero.
- Add cardinal inputs for the fee and a cardinal change output last.
- Re-model with the fee inputs and outputs included. The burn figure must still be zero.
- Build the transaction, preserving your input and output order.
- Compare the wallet prompt to your model, line by line.
- Sign and broadcast.
Why step seven exists
Section titled “Why step seven exists”Adding a fee input or a change output changes the output set, and the allocation walks outputs in order. A transfer that was clean before the wallet added change can burn after it.
The two vectors that show the risk
Section titled “The two vectors that show the risk”| Case | Coloured inputs | Result per output | Burned | Clean |
|---|---|---|---|---|
A remainder smaller than the change output burns dust-remainder-burns | 1200 units at input 0 | out 0: 1000 sats to 1000 units; out 1: 200 sats to 200 units | none | yes |
A change output larger than the remainder burns it change-output-too-large | 1200 units at input 0 | out 0: 1000 sats to 1000 units; out 1: 546 sats to 0 units | 200 units of TOKENA | no |
Same intent, same lot, same amount sent. The only difference is the change output size, and one of them destroys 200 units.
One Bitcoin fee, paid from a cardinal input. No commit and reveal pair, and no grinding, for an ordinary transfer.
If it fails
Section titled “If it fails”- The wallet will not let you set output values in satoshis: use a different builder.
- The wallet reorders outputs: use a different builder. Order is meaning.
- The burn figure is not zero: change the output sizes, do not proceed.
After broadcast
Section titled “After broadcast”Confirm, wait for indexing, read the asset location, and check the recorded burn figure. See verify a transaction.
Source
Section titled “Source”Allocation and burns.