> ## 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.

# Sponsor Gas for Users

> Cover transaction fees for your users

Remove gas friction entirely—sponsor transactions so users never see or pay fees.

## Enable Sponsorship

Set `sponsorship: true` when getting a quote:

```typescript theme={null}
const quote = await meeClient.getQuote({
  sponsorship: true,
  instructions: [/* your calls */]
});

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

<Note>
  Requires an API key with sponsorship enabled. Get one at [dashboard.biconomy.io](https://dashboard.biconomy.io)
</Note>

## By Wallet Type

<Tabs>
  <Tab title="Smart Account">
    ```typescript theme={null}
    const quote = await meeClient.getQuote({
      sponsorship: true,
      instructions: [instruction]
    });
    ```
  </Tab>

  <Tab title="EIP-7702">
    Best for embedded wallets (Privy, Dynamic):

    ```typescript theme={null}
    const quote = await meeClient.getQuote({
      sponsorship: true,
      delegate: true,
      authorization,
      instructions: [instruction]
    });
    ```
  </Tab>

  <Tab title="Fusion (EOA)">
    Works with MetaMask, Rabby, etc. Token must support `permit()` for fully gasless:

    ```typescript theme={null}
    const quote = await meeClient.getFusionQuote({
      sponsorship: true,
      trigger: {
        amount: 1n,  // Minimal amount
        chainId: base.id,
        tokenAddress: USDC_BASE
      },
      instructions: [instruction]
    });
    ```

    <Warning>
      If trigger token doesn't support permit, user needs gas for one approval tx.
    </Warning>
  </Tab>
</Tabs>

## Hosted vs Self-Hosted

<Tabs>
  <Tab title="Biconomy-Hosted">
    Simplest setup—uses Biconomy's managed gas tanks:

    ```typescript theme={null}
    const meeClient = await createMeeClient({
      account,
      apiKey: "your_project_api_key"
    });

    const quote = await meeClient.getQuote({
      sponsorship: true,
      instructions: [...]
    });
    ```

    * No infrastructure to manage
    * Pay via dashboard (credit card or crypto)
    * Works across all supported chains
  </Tab>

  <Tab title="Self-Hosted">
    Full control with your own backend:

    ```typescript theme={null}
    const quote = await meeClient.getQuote({
      sponsorship: true,
      sponsorshipOptions: {
        url: "https://your-backend.com/sponsor",
        gasTank: {
          address: "0xYourGasTank",
          token: "0xTokenAddress",
          chainId: 84532
        }
      },
      instructions: [...]
    });
    ```

    * Custom approval logic
    * User-based policies
    * Your own gas tank
  </Tab>
</Tabs>

## Example: Gasless NFT Mint

```typescript theme={null}
const mintInstruction = await account.buildComposable({
  type: "default",
  data: {
    chainId: base.id,
    to: NFT_CONTRACT,
    abi: nftAbi,
    functionName: "mint",
    args: [userAddress, tokenId]
  }
});

const quote = await meeClient.getQuote({
  sponsorship: true,
  instructions: [mintInstruction]
});

// User signs, you pay gas
const { hash } = await meeClient.executeQuote({ quote });
```

## When to Use

| Scenario              | Recommendation               |
| --------------------- | ---------------------------- |
| Onboarding new users  | ✅ Sponsor                    |
| Premium/paid features | ✅ Sponsor                    |
| High-value actions    | ✅ Sponsor                    |
| Frequent transactions | Consider user-pays           |
| Cost-sensitive apps   | Consider user-pays in tokens |

## Next Steps

<Card title="Composable Batch Calls" icon="layer-group" href="/overview/abstractjs/batch-calls">
  Execute multiple operations atomically
</Card>
