Enable gas fees in USDC

Allow users to pay gas in USDC instead of native tokens for a frictionless experience.

Paymaster product screen illustrationPaymaster product screen

Trusted by the community

Circle paymaster

Make USDC your universal gas token

Frictionless

Eliminate the hassle of sourcing, holding, and managing native tokens for transactions.

Open lock icon
Permissionless

Onchain utility that any developer can integrate into their apps without a Circle account.

Stable

Avoid price volatility by holding USDC, simplifying accounting and reporting needs.

Anywhere
coming soon

Hold USDC on one blockchain and pay gas fees across multiple.

Paymaster product screen illustration

Simplify onchain interactions

Build on blockchain without the complexity and embed wallets tailored to your app.

Stablecoin Payments

Deliver seamless payments with USDC that feel just as easy as using a traditional credit or debit card.

Gas Tank
coming soon

Integrate CCTP and Paymaster to pay gas cross-chain, allowing USDC held on one chain to cover gas fees on any chain.

Revolutionize Blockchain Interactions

Build on blockchain without the complexity and embed wallets tailored to your app.

Stablecoin Payments

Deliver seamless payments with USDC that feel just as easy as using a traditional credit or debit card.

Gas Tank
(coming soon)

Integrate CCTP and Paymaster to pay gas cross-chain, allowing USDC held on one chain to cover gas fees on any chain.

How it works

Optimizing user experience

Sign a permit

A user initiates a transaction in your app and specifies the recipient details. Your app asks their wallet to sign an EIP-2612 permit to grant Circle Paymaster access to a small amount of their USDC to pay for gas.

Create a UserOp

Your app creates a UserOp that encodes the user’s desired transaction and specifies that Circle Paymaster should use the user’s USDC to pay for gas. The permit from the user is passed to the smart contract to facilitate this action.

Submit the UserOp

Your app submits the UserOp to a bundler for execution. The bundler verifies and approves the transaction, ensuring the gas fee is paid by Circle Paymaster and the recipient receives their payment. The bundler returns the UserOp hash, which can be used to check its status later on.

1const { signature: permitSignature } = await account.signTypedData(
2  await constructEIP2612Permit({
3    token: usdc,
4    chain: currentChain,
5    ownerAddress: account.address,
6    spenderAddress: circleTokenPaymaster,
7    value: 1000000 // Allow $1 USDC maximum to be spent on gas
8  })
9);
1// Encode a call to pay a merchant $5 USDC
2const calls = [
3  {
4    to: usdc.address,
5    abi: usdc.abi,
6    functionName: 'transfer',
7    args: [merchantAddress, 5000000n]
8  }
9];
10
11// Add the paymaster details
12const paymaster = circleTokenPaymaster;
13const paymasterData = encodePacked(
14  ['uint8', 'address', 'uint256', 'bytes'],
15  [
16    0n,             // Reserved for future use
17    usdc.address,   // Token address
18    1000000n,       // Allow $1 USDC maximum to be spent on gas
19    permitSignature // EIP-2612 permit signature from earlier
20  ]
21);
22
23// Use the bundler to estimate the necessary gas fees and limits
24const { standard: fees } = await bundlerClient.request({
25  method: 'pimlico_getUserOperationGasPrice'
26});
27const maxFeePerGas = hexToBigInt(fees.maxFeePerGas);
28const maxPriorityFeePerGas = hexToBigInt(fees.maxPriorityFeePerGas);
29const {
30  callGasLimit,
31  preVerificationGas,
32  verificationGasLimit,
33  paymasterPostOpGasLimit,
34  paymasterVerificationGasLimit
35} = await bundlerClient.estimateUserOperationGas({
36  account,
37  calls,
38  paymaster,
39  paymasterData
40});
41
42// Construct the entire user op
43const userOp = {
44  account,
45  calls,
46  callGasLimit,
47  preVerificationGas,
48  verificationGasLimit,
49  paymaster,
50  paymasterData,
51  paymasterVerificationGasLimit,
52  paymasterPostOpGasLimit,
53  maxFeePerGas,
54  maxPriorityFeePerGas
55};
56
1const userOpHash = await bundlerClient.sendUserOperation(userOp);
2const userOpReceipt = await bundlerClient.waitForUserOperationReceipt({
3  hash: userOpHash
4});
5

How it works

Optimizing user experience

1const { signature: permitSignature } = await
2account.signTypedData(
3  await constructEIP2612Permit({
4    token: usdc,
5    chain: currentChain,
6    ownerAddress: account.address,
7    spenderAddress: circleTokenPaymaster,
8    value: 1000000 // Allow $1 USDC maximum to be 
9spent on gas
10  })
11);
12

Real-time verification

Conduct immediate compliance checks against selected jurisdictional regulations and internal policies.

Automated data validation

Programmatically assess and validate data requirements with ease.

Robust wallet support

Identify between VASP-hosted and self-hosted wallets and take appropriate actions based on regulatory requirements.

Secure PII transfer

Safeguard Personally Identifiable Information (PII) during transmission between VASPs with encrypted storage and transmission.

Verify self-hosted wallets

Mitigate risk by verifying self-hosted wallets through ownership proof mechanisms.

Holistic monitoring

Periodically evaluate your transactions against specific typologies targeting high risk behavioural patterns, such as structuring, smurfing, or velocity.

Customizable framework

Tailor rules, thresholds, and cadences to fit your business’ risk appetite and compliance requirements.

Comprehensive data points

Leverage your historical transaction data or benefit from Circle’s expert-crafted typologies to identify sophisticated patterns.

Integrated case management

Streamline investigations with tools to prioritize, track and resolve alerts generated.

Pricing

Zero cost for developers

10% of gas fees per transaction for end users. Waived until June 30, 2025.

Get started

Get Started

Live on Arbitrum and Base

Support for Ethereum, Polygon PoS, Solana, and more is coming soon.

View documentation

Read our blog

Explore use cases, recent updates, and success stories.

Community

Connect with like-minded builders to learn and collaborate.

FAQs

Circle Paymaster is a product for developers to enable their users to pay gas fees in USDC. It provides a simple and secure way to cover blockchain transaction costs without needing to hold or manage native tokens like ETH.

Circle Paymaster is permissionless and available to all developers.

Circle Paymaster currently supports smart contract accounts (SCAs) compatible with ERC-4337. We plan to extend support to EOAs once EIP-7702 is approved and implemented.

To use Circle Paymaster, wallets need to be smart contract accounts (SCAs) compatible with ERC-4337 and built on EntryPoint v0.7.

Paymasters currently support only EVM blockchains. We're actively exploring solutions for non-EVM blockchains.

Circle Paymaster currently requires users to hold USDC on the specific blockchain they wish to make transactions. We’re exploring solutions for users to pay gas fees across chains.

EIP-2612 enables gasless, offchain approvals for ERC-20 tokens, allowing users to sign messages that authorize spending without separate transactions.

Circle Paymaster currently supports USDC only. We plan to support additional Circle stablecoins like EURC in the future.

The service is currently free of charge. On July 1, 2025, Circle Paymaster will begin charging end users 10% of the gas cost per transaction. For example, a $0.01 gas fee becomes $0.011 with Circle Paymaster and is facilitated automatically. There is zero cost charged to developers.

Circle Paymaster is a permissionless product that doesn’t require a Circle account. It allows users to pay gas fees in USDC. Gas Station is a feature of Circle Programmable Wallets which allows developers to sponsor gas fees for their users.

Security is always our top priority. All Circle-developed smart contracts, including Circle Paymaster, undergo third-party security audits.

No. Circle Paymaster doesn’t have access to any PII.