Skip to content

Inner Transactions

Algorand Smart Contracts have the ability to send transactions from the application’s contract address. Transactions sent from a contract address via an application call is called an inner transaction.

Inner Transaction

To send a single inner transaction, one of the following methods can be used.

FunctionUsage
sendPaymentSend a payment transaction
sendAssetTransferSend an asset transfer transaction
sendAssetCreationSend a transcation that creates a transcation
sendAssetConfigSend an asset config transaction
sendAssetFreezeSend an asset freeze transaction
sendAppCallSend an application call
sendMethodCallCall an ABI method of another app
sendOnlineKeyRegistrationSend a rekreg transaction to register offline
sendOfflineKeyRegistrationSend a rekreg transaction to register offline

Inner Transaction Group

You can also send multiple inner transactions in the same group. To add transactions to a group, this.pendingGroup is used. It should be noted that at any given time only one group can be constructed at a time. This means

FunctionUsage
this.pendingGroup.addPaymentAdd a payment transaction
this.pendingGroup.addAssetTransferAdd an asset transfer transaction
this.pendingGroup.addAssetCreationAdd a transcation that creates a transcation
this.pendingGroup.addAssetConfigAdd an asset config transaction
this.pendingGroup.addAssetFreezeAdd an asset freeze transaction
this.pendingGroup.addAppCallAdd an application call
this.pendingGroup.addMethodCallAdd an ABI method call to another app
this.pendingGroup.addOnlineKeyRegistrationAdd a rekreg transaction to register offline
this.pendingGroup.addOfflineKeyRegistrationAdd a rekreg transaction to register offline

Once transactions have been added to the pending group, the group can be submitted via this.pendingGroup.submit()

Inner Transaction Fields

The fields of the most recent inner transaction can be read via this.itxn