5. ERC20 Token Transfers
Encode ERC-20 function calls and propose them as Safe transactions through the Ledger Multisig API.
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 { encodeFunctionData, parseAbi } from "viem";
import { createPublicClient, http } from "viem";
import { sepolia } from "viem/chains";
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;
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";Step-by-step
Key concepts
Field
ETH Transfer
ERC-20 Transfer
Common ERC-20 patterns
Transfer tokens
Approve a spender
Batch: approve + swap
Tips and pitfalls
Next steps
6. Multi Signature FlowLast updated