> For the complete documentation index, see [llms.txt](https://docs.surged.fun/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.surged.fun/integration/fees.md).

# Fees and the snipe tax

Three charges can apply to a trade. All of them come out of the USDC leg, never out of the tokens, and `previewBuy` returns each one separately so you can show them.

## Trade fee

1% of the USDC leg, on buys and on sells. It splits 30% to the protocol and 70% to the token's creator.

## Creator tax

An extra cut the creator chooses when launching, up to 10%. It goes entirely to them. Many launches set it to zero. `launch.terms.creatorTaxBps` tells you what a given token charges.

Both of these accrue on the curve and are swept to an escrow contract, where the creator claims them. They never sit in an individual's wallet. Sweeping is permissionless and always pays the recipients stored on the curve: on surged.fun, **Claim earnings** sweeps what is pending and claims it with one wallet confirmation. After graduation the pool also pays fees in the launch token; the escrow keeps those per token, and each one takes its own confirmation (`claimToken(token)`).

## The snipe tax

This is the one that surprises people.

A launch is public the moment it lands, and a bot watching the chain can buy in the same block as everyone else finds out. The snipe tax makes that unprofitable by charging almost the entire amount of a buy in the first block and decaying to nothing a few blocks later.

Today it starts at **99%** and reaches zero over **6 blocks**. Arc mines twice a second, so the window is about three seconds:

| Block after launch | Snipe tax |
| ------------------ | --------- |
| 0                  | 99%       |
| 1                  | 82.5%     |
| 3                  | 49.5%     |
| 5                  | 16.5%     |
| 6 and after        | 0%        |

It applies to buys only. Selling is never charged it. What it collects is split between protocol and creator exactly like the trade fee.

**Price it against the block your buy will land in, not the current head.** A transaction you send now executes in the next block at the earliest:

```ts
const quote = previewBuy(state, quoteIn, { currentBlock: BigInt(head) + 1n })
```

Getting this wrong by one block is the most common integration mistake: you quote a tax of zero, the transaction lands one block earlier than you assumed, and the buy comes back with far fewer tokens than `minTokensOut` allowed, so it reverts. That is the slippage guard doing its job.

If you are not in a hurry, wait out the window. `snipeTaxBlocks` after `launchBlock` there is nothing to pay.

### Exemptions

A creator can name addresses that skip the tax, so a planned first buy is not punished. If you know the address is on that list, pass `exempt: true` to `previewBuy`. The contract decides regardless of what you pass; the flag only affects what you show.

## Gas

Arc charges gas in USDC, the same asset you are spending. Two consequences:

* A buy sized at the full balance cannot pay for its own transaction. Hold back a reserve.
* The base fee is **not** fixed. 20 gwei is a floor, not a constant. On the day Arc mainnet opened it went from 20 to 196 gwei in hours. Read the base fee of the latest block and leave headroom; a hardcoded reserve will be smaller than a single transaction on a busy day.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.surged.fun/integration/fees.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
