ERC20 Gas Sponsorships

Gas, paid in the tokens users actually hold

Your users hold USDC, not ETH on five different chains. Let them pay transaction fees in USDC, USDT, or any ERC20 token, and drop the native-token requirement forever.

300+tokens on Enterprise
100+chains
erc20-gas.ts
// Same client, plus one line — token approvals are injected for you
const smartAccountClient = createSmartAccountClient({
  // ...same setup as before, plus:
  userOperation: {
    prepareUserOperation: prepareUserOperationForErc20Paymaster(pimlicoClient),
  },
})

const txHash = await smartAccountClient.sendTransaction({
  to: "0x...",
  value: parseEther("0.1"),
  paymasterContext: {
    token: usdc, // any of 300+ supported ERC20 tokens
  },
})

How it works

Quote, confirm, done

The whole exchange happens atomically inside the transaction itself: if it fails, the user pays nothing. There is no pre-funding, no wrapped balances, and no trust assumptions to make.

The paymaster contracts that make this possible are audited by OpenZeppelin and Quantstamp.

1

Request a quote

One API call returns the exact token cost, locked in for 30 seconds.

2

User confirms in their token

They see "0.42 USDC", not gwei and not a volatile native fee, with time to verify before agreeing.

3

Pimlico settles the gas

The paymaster pays the native fee and collects the token atomically, in the same transaction.

4

Confirmed on-chain

No swaps, no bridging, no leftover dust balances.

Why teams choose it

Built for stablecoin-native apps

No native token required

Users pay fees in the ERC-20 they already hold on that chain, so there is no ETH, POL, or AVAX to acquire before they can transact.

Quotes locked for 30 seconds

Every quote stays valid long enough for users to verify the exact token cost and agree to it, with no fee volatility mid-flow.

Failed transactions cost nothing

Token collection happens atomically with execution. If the transaction reverts, no fee is taken.

Security

Built to be trusted with approvals

Letting a contract collect tokens for gas demands real guarantees. The paymaster is designed so users hand over as little as possible.

Approve only what is needed

Per-transaction mode injects an exact-amount approval into the operation itself, so the paymaster can never collect more than that transaction’s fee. Unlimited approvals stay available where convenience wins.

Learn more

Audited and non-upgradable

The contracts are audited by OpenZeppelin and Quantstamp and cannot be upgraded, so the code users approve today is exactly the code that runs tomorrow.

Battle-tested in production

The same paymaster contracts run for the most security-conscious teams onchain, the issuer of USDC among them.

Proven at scale

The same engine behind 250M+ transactions

250M+
transactions processed
100M+
transactions sponsored
100+
chains supported
<2s
inclusion time on L2s
SOC 2 Type 1 certifiedOFAC sanctions screening24/7 supportAudited by OpenZeppelin & QuantstampCo-authors of ERC-4337, ERC-7677 & ERC-7679

The onboarding ramp

Sponsor first, stablecoins after

The classic pattern: sponsor the first few transactions to remove all friction from onboarding, then transition users to paying their own fees in USDC, USDT, or any of 300+ supported tokens. One client and one policy engine cover both, so the switch is a config change, not a migration.

Gas SponsorshipSponsorship Policies

1

New user arrives

Their first transactions are sponsored under your policy. No balance needed at all.

2

They fund their account

Stablecoins land in the account, and there is still no native token to buy.

3

The same client switches to ERC-20 gas

Set the token in paymasterContext and fees come out of the balance they already hold.

Your stack carries over too

The ERC-20 paymaster attaches to the smart account client you already run, so there are no account or signer changes either. Every major smart account and signer is already integrated, each with a step-by-step guide.

See all integrations →

Run it in production

Watch every operation, end to end

Every ERC-20 gas operation is traceable in the dashboard from received to included on-chain, with millisecond timings and transaction hashes at each step — the same lifecycle view behind every sponsored operation.

When someone asks where a transaction went, you answer in seconds, not by grepping logs.

Track user operation

0xf3523157c238413335e2f5cb6325255d7103272bb7cf221a5779bf4f5840c1ef

Received

2026-06-11 20:01:13.054

Added to Mempool

2026-06-11 20:01:13.054 (+0ms)

Submitted

2026-06-11 20:01:13.341 (+287ms)

Tx Hash: 0x223b701f...

Included Onchain

2026-06-11 20:01:13.590 (+249ms)

Tx Hash: 0x223b701f...

Coverage

Every chain your users hold stablecoins on

One API covers 100+ chains. Users pay fees in USDC, USDT, or 300+ other tokens — the ERC-20 they already hold on that chain, with no native token required.

A few of the networks where users pay gas in stablecoins

EthereumEthereum
BaseBase
ArbitrumArbitrum
OptimismOptimism
PolygonPolygon
BNB ChainBNB Chain
AvalancheAvalanche

Frequently asked questions

Which tokens are supported?

USDC and USDT are supported across major chains out of the box, with up to 300+ ERC20 tokens available on Enterprise plans. If your app has its own token, talk to us about adding it.

How is the exchange rate determined?

Before each transaction you request a quote, which locks in the token amount for the gas cost at current market rates plus the paymaster fee. The user sees the exact token cost before they confirm.

Is the paymaster audited?

Yes. The ERC20 paymaster contracts are audited by OpenZeppelin and Quantstamp.

Can I combine this with sponsorship?

Yes. Many teams sponsor the first few transactions for new users, then transition them to paying gas in USDC, USDT, or any other supported token. Both run through the same client and policy engine.

Start sponsoring gas in minutes

Free on testnets, pay-as-you-go in production. Or talk to us about enterprise rates and ecosystem programs.