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>",
});