Batching is available for Smart Wallets and each batched transaction is broadcasted on-chain as a single transaction.

Prerequisite: Create Wallet

1

Obtain user pincode

In your app, ask the user for their wallet’s 6-digit pincode.

You must never store the user pin on your servers.

2

Batch transactions into a single transaction

Fill in the transaction details and send it to WalletKit.

import { encodeFunctionData } from "viem";

const transaction = await wk.transactions.batchSignAndSend({
    network: Network.Base,
    signerWalletAddress: "<walelt address>",
    unsignedTransactions: [{
        to: '0xf175520c52418dfe19c8098071a252da48cd1c19',
        input: encodeFunctionData({
            abi: erc20ABI,
            args: ["0x4795cd8f434847eccdf5b62370157a70a7da6a46", 0],
            functionName: "approve",
        }),
    },
    {
        to: '0xf175520c52418dfe19c8098071a252da48cd1c19',
        input: encodeFunctionData({
            abi: erc20ABI,
            args: ["0x4795cd8f434847eccdf5b62370157a70a7da6a46", 0],
            functionName: "transfer",
        }),
    }],
    userPin: "<user pin>",
});