Approval & Gas
There is exactly one transaction that requires FLR gas: the initial ERC20 approval. After that, every interaction through Zedkr is completely gasless, forever.
One-time approval
typescript
import { ethers } from "ethers";
const USDT = "0xC1A5B41512496B80903D1f32d6dEa3a73212E71F";
const ROUTER = (await client.getConfig()).routerAddress;
const usdt = new ethers.Contract(USDT, ["function approve(address,uint256)"], signer);
await usdt.approve(ROUTER, ethers.MaxUint256); // one-time, per tokenTip
Tokens with EIP-2612 permit support (like some USDT versions) skip this entirely, the SDK handles permit signing automatically. No FLR ever needed.
Approval rules
One approval per fee token (USDT, FXRP, or WC2FLR)
Approve the Zedkr router address, not any other contract
MaxUint256 means you never need to re-approve
The fee cap in the router limits the maximum the router can pull per transaction