3. Batch Transactions
Bundle multiple operations into a single atomic Safe transaction using the MultiSend contract.
What you'll learn
Prerequisites
npm install @safe-global/api-kit @safe-global/protocol-kit @safe-global/types-kit viemConfiguration
import SafeApiKitModule from "@safe-global/api-kit";
import SafeModule from "@safe-global/protocol-kit";
import { OperationType } from "@safe-global/types-kit";
import type { MetaTransactionData } from "@safe-global/types-kit";
import { createPublicClient, http } from "viem";
import { sepolia } from "viem/chains";
// ESM interop-safe constructor resolution (required in some runtimes)
const SafeApiKit =
typeof SafeApiKitModule === "function"
? SafeApiKitModule
: (SafeApiKitModule as unknown as { default: typeof SafeApiKitModule }).default;
const Safe =
typeof SafeModule === "function"
? SafeModule
: (SafeModule as unknown as { default: typeof SafeModule }).default;
const CHAIN_ID = 11155111n; // Sepolia
const TX_SERVICE_URL = `https://app.multisig.ledger.com/api/safe-transaction-service/${CHAIN_ID}`;
const RPC_URL = "https://ethereum-sepolia-rpc.publicnode.com";
const SAFE_ADDRESS = "0xYourSafeAddress";
const OWNER_PRIVATE_KEY = "your-private-key"; // Testnet only!Step-by-step
Key concepts
Tips and pitfalls
Next steps
4. Delegate ManagementLast updated