> ## Documentation Index
> Fetch the complete documentation index at: https://docs.biconomy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Pay Gas in ERC-20 Tokens

> Let users pay transaction fees in any token

Users can pay gas in USDC, USDT, or any ERC-20—no need for native tokens like ETH.

## Basic Usage

Pass `feeToken` when getting a quote:

```typescript theme={null}
const quote = await meeClient.getQuote({
  instructions: [/* your calls */],
  feeToken: {
    address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
    chainId: 8453
  }
});

const { hash } = await meeClient.executeQuote({ quote });
```

## Cross-Chain Gas Payment

Pay for transactions on one chain using tokens from another:

```typescript theme={null}
// Execute on Arbitrum, pay gas from Base USDC
const quote = await meeClient.getQuote({
  instructions: [{
    chainId: 42161,  // Arbitrum
    calls: [/* your calls */]
  }],
  feeToken: {
    address: USDC_BASE,
    chainId: 8453    // Pay from Base
  }
});
```

## By Wallet Type

<Tabs>
  <Tab title="Smart Account">
    Most flexible—any token from any chain:

    ```typescript theme={null}
    const quote = await meeClient.getQuote({
      instructions: [instruction],
      feeToken: { address: USDC, chainId: base.id }
    });
    ```
  </Tab>

  <Tab title="EIP-7702">
    Same flexibility, requires `delegate: true`:

    ```typescript theme={null}
    const quote = await meeClient.getQuote({
      instructions: [instruction],
      delegate: true,
      authorization,  // From wallet
      feeToken: { address: USDC, chainId: base.id }
    });
    ```
  </Tab>

  <Tab title="Fusion (EOA)">
    Fee token must match trigger token, same chain only:

    ```typescript theme={null}
    const trigger = {
      chainId: base.id,
      tokenAddress: USDC_BASE,
      amount: parseUnits("10", 6)
    };

    const quote = await meeClient.getFusionQuote({
      trigger,
      instructions: [instruction],
      feeToken: { address: USDC_BASE, chainId: base.id }
    });
    ```
  </Tab>
</Tabs>

## Supported Tokens

Any ERC-20 with liquidity can be used for gas:

* **Stablecoins**: USDC, USDT, DAI
* **Wrapped tokens**: WETH, WBTC
* **LP tokens**: Uniswap, Curve positions
* **Yield tokens**: aUSDC, stETH
* **Governance tokens**: UNI, AAVE, etc.

## Example: Swap with Gas in USDC

```typescript theme={null}
import { parseUnits } from "viem";

const swapInstruction = await account.buildComposable({
  type: "default",
  data: {
    chainId: base.id,
    to: UNISWAP_ROUTER,
    abi: UniswapAbi,
    functionName: "exactInputSingle",
    args: [{ tokenIn: USDC, tokenOut: WETH, amountIn: parseUnits("100", 6), /* ... */ }]
  }
});

const quote = await meeClient.getQuote({
  instructions: [swapInstruction],
  feeToken: { address: USDC, chainId: base.id }
});

// User sees fee in USDC, not ETH
console.log("Fee:", quote.paymentInfo.tokenAmount, "USDC");

const { hash } = await meeClient.executeQuote({ quote });
```

## Next Steps

<Card title="Sponsor Gas" icon="gift" href="/overview/abstractjs/sponsor-gas">
  Cover gas costs entirely for your users
</Card>
