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

# Swap

> What you sign, what you pay, and why you never need ETH or SOL.

Open the [web app](https://web-production-a2664.up.railway.app), connect a wallet, type a size, and request
a quote. Every online resolver prices it; the best offer comes back as a firm quote that is good for 20
seconds. Sign once, and the swap settles in one transaction.

## What you sign

<Tabs>
  <Tab title="Base">
    1. **Once per wallet session, a taker proof.** A short message that proves you control the wallet. The hosted relay requires it on every quote; it lasts 24 hours.
    2. **Once per token, a Permit2 approval.** USDC supports EIP-2612, so this is a signature that rides inside the settlement. cNGN does not, so a first-time cNGN seller sends one small approval transaction and needs a little ETH for it, once.
    3. **Per swap, a `TakerAuth`.** One EIP-712 message naming the exact offers, your recipient, the minimum you will accept, the maximum gas fee, and a deadline. No transaction and no gas: the relay's keeper submits and is repaid inside the swap.
  </Tab>

  <Tab title="Solana">
    1. **Once per wallet session, a taker proof.** Signed with your wallet's `signMessage`.
    2. **Per swap, the settlement transaction.** Your wallet rebuilds the transaction from the quote, checks it byte for byte, and co-signs it as taker. The resolver already signed as maker; the keeper signs last as fee payer and submits. You need no SOL: the network fee, and the rent for your receiving token account if it does not exist yet, are repaid in the pair's dollar token inside the swap.
  </Tab>
</Tabs>

## What you pay

The quote shows two lines apart from the price, each with its dollar value:

| Line         | What                                         | How much                                                                                        |
| ------------ | -------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Protocol fee | Paid to the treasury in the pair's fee token | 5 bps. The reactor rejects anything higher                                                      |
| Gas fee      | Repays the keeper for the transaction        | Priced from the chain's gas at quote time, with a floor of $0.03 and a ceiling of $0.50 on Base |

When the fee token is what you sell, both lines are added to what you pay. When it is what you buy, both
come out of what you receive. Either way the quote's `proceeds` is exactly what lands in your wallet.

## What can go wrong

* **Requote.** If the market or the resolver's balance moved between the quote and settlement, the keeper's simulation fails and the relay asks you to quote again. Nothing moved. Reasons starting with `taker:` are yours to fix, such as a balance that fell.
* **Expired.** A quote is good for 20 seconds. Sign in time or ask again.
* **Swap max.** The app asks the relay for the largest amount your balance can cover after the fee and gas lines, so you never sign a fill your balance cannot cover.

## After the swap

The lifecycle page at `/q/<quoteId>` shows every step from request to final confirmation, including every
offer the auction drew. The receipt at `/receipt/<quoteId>` has the transaction, the fee lines and the
resolver, and downloads as PNG or PDF. Your history is under **Intents**.

## Limit orders

Name a price and go offline: the relay auctions your order every few seconds and fills it when a resolver
meets your price. See [Limit orders](/takers/limit-orders).
