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

# Gasless Support

> Gasless swap mechanisms that let users trade without holding SOL for transaction fees.

<Warning>
  **Ultra Swap API** is no longer actively maintained and has been superseded by [Swap V2](/swap).
</Warning>

The Jupiter Ultra Swap includes **2 different gasless mechanisms** that allow users to
execute swaps without having to pay for network fees, priority fees/tips or rent in SOL. This
feature reduces onboarding friction and supports a smoother user experience where end-users
don't need to hold SOL just to trade tokens.

## Quick Overview

| Gasless Mechanism              | Coverage                                                                                                  | Requirements & Notes                                                                                                                                                                                                                   |
| ------------------------------ | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Ultra<br />Gasless Support** | - Base network fee<br />- Priority fee/tips<br />- ATA rent<br />- Other accounts rent                    | - Taker has less than 0.01 SOL<br />- Minimum trade size of \~10 USD<br />- Gas is taken from swap amount which increases swap fee<br />- Does not work with referral/payer params<br />- Does not work with manual mode params        |
| **JupiterZ<br />(RFQ)**        | - Base network fee<br />- Priority fee/tips<br />- Taker's output token account rent (if not initialised) | - Always gasless for network/prio fees (paid by MM)<br />- Jupiter's gas wallet pays the rent to create the taker's output token account if needed<br />- No minimum trade size<br />- Only applies if a market maker provides a route |
| **Other Routers**              | -                                                                                                         | -                                                                                                                                                                                                                                      |

## Types of Gas

1. Base network transaction fee
2. Associated Token Account (ATA) rent
3. Priority fee (or tips, etc)
4. Other accounts rent (some DEX may require additional accounts opened per taker (e.g. Pumpfun))

## Types of Gasless Mechanism

<Note>
  Refer to [Payer](/ultra/add-payer) section for more details and usage on the Integrator Gas Payer.
</Note>

<Tabs>
  <Tab title="Jupiter Ultra Gasless Support">
    1. **When does it apply?**
       * Gasless Support only kicks in for Metis router.
       * Requires taker to have less than 0.01 SOL.
       * Minimum trade size of 10 USD is required, but this is dynamic as priority fees/tips can vary based on the current market conditions.

    2. **What does it cover?**
       * Base network transaction fee
       * Priority fee/tips
       * Associated token account rent
       * Other accounts rent

    3. **How does it work?**
       * It calculates the required SOL amount to cover the cost of gasless support, and increases the swap fee to cover the cost, this means the taker will recieve lesser output tokens. You can use the `feeBps` field to identify the increased fee.
       * It adds a secondary signer to the transaction to pay to be the gas payer which is Jupiter Ultra's self gas payer.

    4. **What are the limitations?**

       * It only works for default Ultra transactions
       * It does not work when passing in integrator parameters like `referralAccount`, `referralFee`, `payer`, etc.
       * It does not work when passing in manual mode parameters like `slippageBps`, `priorityFeeLamports`, `excludeRouters`, etc.

           <img src="https://mintcdn.com/jupiter/5ASJJl7VtSphXLOO/static/images/gasless-support-mechanism.png?fit=max&auto=format&n=5ASJJl7VtSphXLOO&q=85&s=6ff068675e3c62dda2494b23b841a05b" alt="Gasless Support Mechanism" width="2876" height="1608" data-path="static/images/gasless-support-mechanism.png" />
  </Tab>

  <Tab title="Jupiter Z (RFQ) Gasless">
    1. **When does it apply?**
       * JupiterZ is our RFQ engine, it is gasless by default.
       * No minimum trade size required but dependent on if MM provides a quote.

    2. **What does it cover?**
       * Base network transaction fee
       * Priority fee (or tips, etc)
       * Taker's output token account rent (if not yet initialised, paid by Jupiter's gas wallet)

    3. **How does it work?**
       * As long as the JupiterZ (or the market makers) provide a quote for your request, the transaction will be gasless.
       * It adds a secondary signer to the transaction to pay to be the gas payer - which is the market maker.
       * If the taker's output token account does not exist, Jupiter's gas wallet pays the rent to create it.

    4. **What are the limitations?**

       * It only works for default Ultra transactions
       * It does not work when passing in integrator parameters like `referralAccount`, `referralFee`, `payer`, etc.
       * It does not work when passing in manual mode parameters like `slippageBps`, `priorityFeeLamports`, `excludeRouters`, etc.

           <img src="https://mintcdn.com/jupiter/5ASJJl7VtSphXLOO/static/images/jupiterz-gasless-mechanism.png?fit=max&auto=format&n=5ASJJl7VtSphXLOO&q=85&s=09c984f1214782a006300ccb80ed31a7" alt="JupiterZ Gasless Mechanism" width="2954" height="1556" data-path="static/images/jupiterz-gasless-mechanism.png" />
  </Tab>

  <Tab title="Integrator Gas Payer">
    1. **When does it apply?**
       * Integrator Gas Payer works only when integrator passes in `referralAccount` and `referralFee`, together with `payer` and `closeAuthority`.
       * Regardless of how much SOL the taker has, the payer will be the fee payer.
       * Applying these parameters will default routing to only Metis.

    2. **What does it cover?**
       * The `payer` address will be the fee payer of the entire transaction:
         * Base network transaction fee
         * Priority fee/tips
         * Associated token account rent
         * Other account rents

    3. **How does it work?**
       * The transaction returned will require both taker and payer signature before submitting to `/execute`.
       * The associated token account rent such as:
         * Temporary WSOL ATA will be covered by payer and will be returned to payer in the same transaction.
         * Any other ATAs will be covered by payer, but not returned to payer in the same transaction, since it is likely the ATA holds the tokens post-swap.
       * The `closeAuthority` address will be decided by you, refer to [Payer](/ultra/add-payer) for more details.
       * It adds a secondary signer to the transaction to pay to be the gas payer - which is the integrator.

    4. **What are the limitations?**

       * Passing in `payer` parameters will default routing to only Metis.

           <img src="https://mintcdn.com/jupiter/5ASJJl7VtSphXLOO/static/images/integrator-gas-payer-mechanism.png?fit=max&auto=format&n=5ASJJl7VtSphXLOO&q=85&s=0e2f8e68f2d529efd1306427e539851d" alt="Integrator Gas Payer Mechanism" width="2148" height="1026" data-path="static/images/integrator-gas-payer-mechanism.png" />
  </Tab>
</Tabs>

## Scenario Matrix

| **Scenario**                         | **Ultra<br />Gasless Support**                                                          | **JupiterZ<br />(Assuming if quoted)**                  |
| ------------------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| **Taker has SOL & ATA**              | Taker pays gas                                                                          | MM pays gas                                             |
| **Taker has SOL, no ATA**            | Taker pays gas & ATA rent                                                               | MM pays gas, Jupiter's gas wallet pays taker's ATA rent |
| **No SOL, has ATA**                  | - Gas taken from swap amount<br />- Min \$10 swap                                       | MM pays gas                                             |
| **No SOL, no ATA**                   | - Gas & rent from swap amount<br />- Min \$10 swap                                      | MM pays gas, Jupiter's gas wallet pays taker's ATA rent |
| **No SOL, has ATA,<br />Small swap** | Quote shown, but cannot swap<br />[`errorCode=3`](/ultra/response#order-response-codes) | MM pays gas                                             |
| **No SOL, no ATA,<br />Small swap**  | Quote shown, but cannot swap<br />[`errorCode=3`](/ultra/response#order-response-codes) | MM pays gas, Jupiter's gas wallet pays taker's ATA rent |
