Skip to content

Wallet transactions

Wallet send calls ask a wallet to execute one or more chain calls.

Type ID: xmtp.org/walletSendCalls:1.0. The payload is JSON-encoded WalletSendCalls. Its fallback contains [Transaction request generated]: followed by the JSON payload. shouldPush defaults to true on Browser, Node, React Native, Kotlin, and Swift.

FieldMeaning
versionWallet call protocol version
chainIdHex chain ID, such as 0x1
fromSender account
callsCalls for the wallet to execute
capabilitiesOptional wallet capability requests

Each call can contain a target address, value, call data, gas limit, and metadata. These fields are all optional. After execution, send a transaction reference so the conversation can follow the result.

A received request is content another conversation member wrote, not approval to execute it. The sender chooses every field, including from and the description. Show the target, value, and call data before the user’s wallet executes a call. Never execute a call from its description alone.

Call fieldMeaning
toOptional target address
valueOptional native token value
dataOptional encoded call data
gasOptional gas limit
metadataOptional display metadata
SDK metadata fieldMeaning
descriptionText that describes the action
transactionTypeOperation, such as transfer or lend
extraMap of additional string values

The codec writes extra entries as fields in the wire JSON metadata object. They are not a fixed set of transaction fields. capabilities is an optional map of string values.

The Agent SDK also provides getERC20Decimals, getERC20Balance, and createERC20TransferCalls helpers through @xmtp/agent-sdk/util.