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

# FAQs

> Frequently asked questions about Gelato's Paymaster and Bundler

## General Questions

<Accordion title="What is the difference between ERC-4337 and EIP-7702?">
  **ERC-4337** is an account abstraction standard that works without protocol changes. It introduces UserOperations, bundlers, and paymasters to enable smart account features.

  **EIP-7702** is a protocol-level upgrade (requires hard fork) that allows EOAs to temporarily become smart accounts for a transaction.

  **They work together**: EIP-7702 can upgrade an EOA to a smart account, which then uses ERC-4337 infrastructure (bundler, paymaster).
</Accordion>

<Accordion title="Which implementation method should I use?">
  * **Gelato SDK**: Best for quick start and when using Kernel, Safe, OKX, or Trust accounts
  * **Permissionless.js**: Best for Alchemy, Biconomy, Thirdweb accounts or when you need multi-account support
  * **Viem**: Best for Coinbase Smart Wallet or when you need maximum control
  * **Direct API**: Best for non-JavaScript backends or custom implementations

  See the [comparison table](/paymaster-&-bundler/features/smart-accounts) for more details.
</Accordion>

<Accordion title="Which smart account should I choose?">
  * **Kernel**: Most flexible, supports all integration methods and EIP-7702
  * **Safe**: Battle-tested, widely adopted, great for multi-sig
  * **Coinbase**: Native integration with Coinbase ecosystem
  * **Alchemy/Biconomy/Thirdweb**: Use if you're already in their ecosystem

  See the [smart account comparison](/paymaster-&-bundler/features/smart-accounts) for details.
</Accordion>

## Payment & Gas

<Accordion title="How does sponsored gas work?">
  With sponsored gas, your dApp pays for users' gas fees using your Gas Tank balance. Users can transact without holding any native tokens.

  1. Fund your Gas Tank in the [Gelato App](https://app.gelato.cloud/)
  2. Create a sponsor API key
  3. Use `sponsored(sponsorApiKey)` as the payment method

  See [Sponsor Gas](/paymaster-&-bundler/how-to-guides/sponsor-gas-with-gastank) for implementation details.
</Accordion>

<Accordion title="Which ERC-20 tokens can users pay gas with?">
  Gelato supports various ERC-20 tokens for gas payment including USDC, USDT, and other stablecoins. The supported tokens vary by network.

  Check the full list: [ERC-20 Payment Tokens](/paymaster-&-bundler/additional-resources/erc20-payment-tokens)
</Accordion>

<Accordion title="How much does sponsoring cost?">
  Sponsoring costs the actual gas fees plus Gelato's service fee. Gas costs vary by:

  * Network (Ethereum mainnet vs L2s)
  * Transaction complexity
  * Network congestion

  Use gas estimation to predict costs:

  ```typescript theme={null}
  const estimate = await smartWalletClient.estimate({
    payment: sponsored(sponsorApiKey),
    calls: [...],
  });
  console.log(`Estimated fee: ${formatEther(estimate.fee.amount)} ETH`);
  ```
</Accordion>

<Accordion title="Can I switch between payment methods?">
  Yes! You can dynamically choose payment methods based on your use case:

  ```typescript theme={null}
  // Sponsor for onboarding
  const payment = isNewUser
    ? sponsored(sponsorApiKey)
    : native();

  const response = await smartWalletClient.execute({
    payment,
    calls: [...],
  });
  ```
</Accordion>

## Technical Questions

<Accordion title="What chains are supported?">
  Gelato supports 50+ networks including:

  * Ethereum Mainnet & Testnets
  * Arbitrum, Optimism, Base
  * Polygon, BNB Chain
  * And many more L2s

  Check the full list: [Supported Networks](/paymaster-&-bundler/additional-resources/supported-networks)
</Accordion>

<Accordion title="How fast are transactions?">
  Transaction speed depends on:

  * **Network**: L2s are typically faster than mainnet
  * **Block time**: Each chain has different block times
  * **Bundler submission**: Gelato submits as soon as possible

  On most L2s, expect confirmation within a few seconds. On Ethereum mainnet, expect 12-15 seconds per block.
</Accordion>

<Accordion title="What is the maximum batch size?">
  You can batch multiple calls in a single transaction. The limit depends on:

  * Gas limits of the target network
  * Complexity of each call

  In practice, most use cases work well with 10-20 batched calls. For larger batches, consider splitting into multiple transactions.

  ```typescript theme={null}
  const response = await smartWalletClient.execute({
    payment: sponsored(sponsorApiKey),
    calls: [
      { to: addr1, data: data1, value: 0n },
      { to: addr2, data: data2, value: 0n },
      // ... more calls
    ],
  });
  ```
</Accordion>

<Accordion title="Can I use Gelato with my own smart contract?">
  Yes! You can call any smart contract through the bundler. The calls array accepts any valid contract interaction:

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

  const callData = encodeFunctionData({
    abi: yourContractAbi,
    functionName: "yourFunction",
    args: [arg1, arg2],
  });

  const response = await smartWalletClient.execute({
    payment: sponsored(sponsorApiKey),
    calls: [
      {
        to: yourContractAddress,
        data: callData,
        value: 0n,
      },
    ],
  });
  ```
</Accordion>

<Accordion title="Why doesn't my transaction go through?">
  Common reasons:

  1. **Insufficient Gas Tank balance** - Top up at [Gelato App](https://app.gelato.cloud/)
  2. **Invalid API key** - Verify key includes target network
  3. **Contract reverted** - Check your calldata and target contract
  4. **Account not deployed** - First transaction deploys the account

  See [Troubleshooting](/paymaster-&-bundler/additional-resources/troubleshooting) for detailed solutions.
</Accordion>

## Account Management

<Accordion title="How do I get the smart account address before deployment?">
  All smart accounts have a counterfactual address that's known before deployment:

  ```typescript theme={null}
  const account = await kernel({
    owner,
    client,
  });

  // This address is valid even before the first transaction
  console.log("Account address:", account.address);
  ```
</Accordion>

<Accordion title="When does the smart account get deployed?">
  The smart account is deployed automatically with the first transaction. The bundler handles deployment + your first call in a single operation. Deployment costs are included in the first transaction's gas.
</Accordion>

<Accordion title="Can I recover a smart account?">
  Recovery options depend on your smart account provider:

  * **Safe**: Built-in recovery modules
  * **Kernel**: Supports recovery modules
  * **Others**: Check provider documentation

  Recovery is not a Gelato feature - it's implemented at the smart account level.
</Accordion>

## Getting Help

<Accordion title="How do I get support?">
  * **Documentation**: Browse our [full documentation](/)
  * **GitHub**: Report issues at [github.com/gelatodigital/gasless](https://github.com/gelatodigital/gasless/issues)
</Accordion>

## Additional Resources

* [Create an API Key](/paymaster-&-bundler/how-to-guides/create-a-api-key) - Get started
* [Gas Tank Setup](/paymaster-&-bundler/gastank/setting-up-gastank) - Fund your Gas Tank
* [Troubleshooting](/paymaster-&-bundler/additional-resources/troubleshooting) - Common issues and solutions
