Transaction Reference | Algorand Developer Portal

Transaction Reference

The tables below describe the fields used in Algorand transactions. Each table includes the field name, indicates if the field is required or optional, shows the type used in the protocol code, displays the codec name that appears in transactions, and provides a description of the field’s purpose. While the protocol types are shown in these tables, the input types may be different when using SDKs.

Common Fields (Header and Type)

These fields are common to all transactions.

Field Required Type codec Description
Fee required uint64 "fee" Paid by the sender to the FeeSink to prevent denial-of-service. The minimum fee on Algorand is currently 1000 microAlgos.
FirstValid required uint64 "fv" The first round for when the transaction is valid. If the transaction is sent prior to this round it will be rejected by the network.
GenesisHash required [32]byte "gh" The hash of the genesis block of the network for which the transaction is valid. See the genesis hash for MainNet, TestNet, and BetaNet.
LastValid required uint64 "lv" The ending round for which the transaction is valid. After this round, the transaction will be rejected by the network.
Sender required Address "snd" The address of the account that pays the fee and amount.
TxType required string "type" Specifies the type of transaction. This value is automatically generated using any of the developer tools.
GenesisID optional string "gen" The human-readable string that identifies the network for the transaction. The genesis ID is found in the genesis block. See the genesis ID for MainNet, TestNet, and BetaNet.
Group optional [32]byte "grp" The group specifies that the transaction is part of a group and, if so, specifies the hash of the transaction group. Assign a group ID to a transaction through the workflow described in the Atomic Transfers Guide.
Lease optional [32]byte "lx" A lease enforces mutual exclusion of transactions. If this field is nonzero, then once the transaction is confirmed, it acquires the lease identified by the (Sender, Lease) pair of the transaction until the LastValid round passes.
Note optional []byte "note" Any data up to 1000 bytes.
RekeyTo optional Address "rekey" Specifies the authorized address. This address will be used to authorize all future transactions.

Payment Transaction

Transaction Object Type: PaymentTx

Includes all fields in Header and "type" is "pay".

Field Required Type codec Description
Receiver required Address "rcv" The address of the account that receives the amount.
Amount required uint64 "amt" The total amount to be sent in microAlgos.
CloseRemainderTo optional Address "close" When set, it indicates that the transaction is requesting that the Sender account should be closed, and all remaining funds, after the fee and amount are paid, be transferred to this address.

Key Registration Transaction

Transaction Object Type: KeyRegistrationTx

Includes all fields in Header and "type" is "keyreg".

Field Required Type codec Description
VotePk required for online ed25519PublicKey "votekey" The root participation public key.
SelectionPK required for online VrfPubkey "selkey" The VRF public key.
StateProofPk required for online MerkleSignature Verifier (64 bytes) "sprfkey" The 64 byte state proof public key commitment.
VoteFirst required for online uint64 "votefst" The first round that the participation key is valid.
VoteLast required for online uint64 "votelst" The last round that the participation key is valid.
VoteKeyDilution required for online uint64 "votekd" This is the dilution for the 2-level participation key.
Nonparticipation optional bool "nonpart" All new Algorand accounts are participating by default. This means that they earn rewards. Mark an account nonparticipating by setting this value to true.

Asset Configuration Transaction

Transaction Object Type: AssetConfigTx

Includes all fields in Header and "type" is "acfg".

This is used to create, configure and destroy an asset depending on which fields are set.

Field Required Type codec Description
ConfigAsset required, except on create uint64 "caid" For re-configure or destroy transactions, this is the unique asset ID.
AssetParams required, except on destroy AssetParams "apar" See AssetParams table for all available fields.

Asset Parameters

Object Name: AssetParams

Field Required Type codec Description
Total required on creation uint64 "t" The total number of base units of the asset to create.
Decimals required on creation uint32 "dc" The number of digits to use after the decimal point when displaying the asset.
DefaultFrozen required on creation bool "df" True to freeze holdings for this asset by default.
UnitName optional string "un" The name of a unit of this asset. Marc size is 8 bytes.
AssetName optional string "an" The name of the asset. Max size is 32 bytes.
URL optional string "au" Specifies a URL where more information about the asset can be retrieved.
MetaDataHash optional []byte "am" This field is intended to be a 32-byte hash of some metadata that is relevant to your asset.
ManagerAddr optional Address "m" The address of the account that can manage the configuration of the asset.
ReserveAddr optional Address "r" The address of the account that holds the reserve units of the asset.
FreezeAddr optional Address "f" The address of the account used to freeze holdings of this asset.
ClawbackAddr optional Address "c" The address of the account that can clawback holdings of this asset.

Asset Transfer Transaction

Transaction Object Type: AssetTransferTx

Includes all fields in Header and "type" is "axfer".

Field Required Type codec Description
XferAsset required uint64 "xaid" The unique ID of the asset to be transferred.
AssetAmount required uint64 "aamt" The amount of the asset to be transferred.
AssetSender required Address "asnd" The sender of the transfer.
AssetReceiver required Address "arcv" The recipient of the asset transfer.
AssetCloseTo optional Address "aclose" Specify this field to remove the asset holding from the sender account.

Asset OptIn Transaction

Transaction Object Type: AssetTransferTx

Includes all fields in Header and "type" is "axfer".

This is a special form of an Asset Transfer Transaction.

Field Required Type codec Description
XferAsset required uint64 "xaid" The unique ID of the asset to opt-in to.
Sender required Address "snd" The account which is allocating the asset to their account’s Asset map.
AssetReceiver required Address "arcv" The account that is allocating the asset to their account’s Asset map.

Asset Clawback Transaction

Transaction Object Type: AssetTransferTx

Includes all fields in Header and "type" is "axfer".

This is a special form of an Asset Transfer Transaction.

Field Required Type codec Description
Sender required Address "snd" The sender of this transaction must be the clawback account specified in the asset configuration.
XferAsset required uint64 "xaid" The unique ID of the asset to be transferred.
AssetAmount required uint64 "aamt" The amount of the asset to be transferred.
AssetSender required Address "asnd" The address from which the funds will be withdrawn.
AssetReceiver required Address "arcv" The recipient of the asset transfer.

Asset Freeze Transaction

Transaction Object Type: AssetFreezeTx

Includes all fields in Header and "type" is "afrz".

Field Required Type codec Description
FreezeAccount required Address "fadd" The address of the account whose asset is being frozen.
FreezeAsset required uint64 "faid" The asset ID being frozen.
AssetFrozen required bool "afrz" True to freeze the asset.

Application Call Transaction

Transaction Object Type: ApplicationCallTx

Includes all fields in Header and "type" is "appl".

Field Required Type codec Description
Application ID required uint64 "apid" ID of the application being configured or empty if creating.
OnComplete required uint64 "apan" Defines what additional actions occur with the transaction.
Accounts optional []Address "apat" List of accounts in addition to the sender that may be accessed from the application’s approval-program.
Approval Program optional []byte "apap" Logic executed for every application transaction.
App Arguments optional [][]byte "abaa" Transaction specific arguments accessed from the application’s approval-program.
Clear State Program optional []byte "apsu" Logic executed for application transactions with on-completion set to “clear”.
Foreign Apps optional []uint64 "apfa" Lists the applications in addition to the application-id whose global states may be accessed.
Foreign Assets optional []uint64 "apas" Lists the assets whose AssetParams may be accessed.
GlobalStateSchema optional "apgs" Holds the maximum number of global state values defined within an object.
LocalStateSchema optional "apls" Holds the maximum number of local state values defined within an object.
ExtraProgramPages optional uint64 "apep" Number of additional pages allocated to the application’s approval and clear state programs.
Boxes optional []BoxRef "apbx" The boxes that should be made available for the runtime of the program.
RejectVersion optional uint64 "aprv" If the application being called has a version equal to or greater than the provided reject version, the transaction will be rejected.
AccessList optional [[]Resource] "al" An array of resources that the application or group can use.

Storage State Schema

Object Name: StateSchema

The StateSchema object is only required for the create application call transaction. The StateSchema object must be fully populated for both the GlobalStateSchema and LocalStateSchema objects.

Field Required Type codec Description
Number Ints required uint64 "nui" Maximum number of integer values that may be stored in the application key/value store.
Number ByteSlices required uint64 "nbs" Maximum number of byte slices values that may be stored in the application key/value store.

Signed Transaction

Transaction Object Type: SignedTxn

Field Required Type codec Description
Sig required, if no other sig specified crypto.Signature "sig"
LogicSig required, if no other sig specified LogicSig "lsig"
Msig required, if no other sig specified crypto.MultisigSig "msig"
Transaction required Transaction "txn" PaymentTx, KeyRegistrationTx , AssetConfigTx, AssetTransferTx , AssetFreezeTx or ApplicationCallTx

Heartbeat Transaction

Transaction Object Type: HeartbeatTx

Includes all fields in Header and "type" is "hbt".

Field Required Type codec Description
HbAddress required Address "hbad" The account this transaction is proving onlineness for.
HbKeyDilution required uint64 "hbkd" Must match HbAddress account’s current KeyDilution.
HbProof required HbProofFields "hbpf" The heartbeat proof fields.
HbSeed required []byte "hbsd" Must be the block seed for this transaction’s firstValid block.
HbVoteID required []byte "hbvid" Must match the HbAddress account’s current VoteID.