Drop @gasless-cash/sdk into your DeFi wallet and let users
with zero native gas transact — fees paid in USDC, USDT and the
stablecoins you choose. One TypeScript SDK for web and
React Native, across EVM chains (EIP-7702) and TRON.
import { GaslessClient, erc20Transfer } from "@gasless-cash/sdk";
const gasless = new GaslessClient({ chainId, publicClient, apiKey });
// 1 · Quote the fee in the user's stablecoin — before they sign
const quote = await gasless.estimateCost({
eoa: user.address,
calls: [erc20Transfer(usdc, recipient, amount)],
paymentToken: usdc, // user pays gas in USDC
});
// 2 · Send it — the relayer fronts the ETH, the user pays in USDC
const { id } = await gasless.sendSponsoredBatch({
eoa: user.address, signer: user, quote,
calls: [erc20Transfer(usdc, recipient, amount)],
});
const result = await gasless.waitForBatch(id); // → "EXECUTED"
Everything you need to add gasless stablecoin transactions — without touching a relayer key or writing a line of Solidity.
A typed client over viem. Estimate, sign, submit, and track — five methods, sensible defaults, full TypeScript inference.
Platform-agnostic core with a one-line React Native polyfill entry. The same code runs in your mobile wallet and on the web.
The user signs every batch with their own key (EIP-712). The SDK never holds funds; the relayer never holds the user's key.
Quote the exact cost in the chosen stablecoin before the user signs — so the number you show is the number they pay.
Approve + swap + transfer in a single atomic, sponsored transaction via EIP-7702 account delegation.
Distinct, on-chain-verifiable results. Your app reads the outcome trustlessly and never re-spends a consumed nonce.
The user signs. The relayer pays the gas and gets reimbursed in stablecoin. The chain settles.
The SDK asks the relayer what the batch costs in the user's chosen stablecoin.
The user signs an EIP-712 batch (and a one-time 7702 authorization) with their own key.
The relayer submits the transaction, fronting the ETH gas and collecting the stablecoin fee.
Your app reads the outcome straight from chain — EXECUTED or PAID BUT REVERTED.
The relayer accepts a configurable set of stablecoins per chain. Your wallet renders the picker from a single SDK call.
const { tokens } = await gasless.getPaymentTokens();
Give every user a way to transact — even with an empty ETH balance.