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

# Buy and Sell

> How to buy and sell V2 tokens on the curve, with the preview values explained.

The Buy and Sell tabs on a token's trade page submit different contract calls depending on whether the token is still on the bonding curve or has bonded to its Uniswap V4 pool. The UI hides this. The inputs you see and what they mean are the same either way.

## Buying

You enter an ETH amount. The UI shows:

| Field               | What it means                                                                 |
| ------------------- | ----------------------------------------------------------------------------- |
| Expected tokens out | Tokens you receive at the current curve price                                 |
| Price impact        | How much your buy moves the curve price                                       |
| Fee                 | 2 percent of your ETH input on the curve, 0.1 percent on the pool             |
| Min received        | The slippage floor. If less than this would come out, the transaction reverts |

The contract call on the curve is `buy(launchId, minTokensOut, captcha)`. With a referral code in local storage, the UI calls `buyWithReferral(launchId, minTokensOut, captcha, referralCode)` instead. The minimum buy is `MIN_BUY_ETH = 0.00001 ether` per the contract.

After bonding, buys route through the Uniswap Universal Router.

## Selling

You enter a token amount. The UI shows:

| Field            | What it means                                                                 |
| ---------------- | ----------------------------------------------------------------------------- |
| Expected ETH out | ETH you receive net of the fee                                                |
| Price impact     | How much your sell moves the curve price                                      |
| Fee              | 2 percent of the gross ETH on the curve, 0.1 percent on the pool              |
| Min received     | The slippage floor. If less than this would come out, the transaction reverts |

The contract call on the curve is `sell(launchId, tokenAmount, minEthOut, captcha)`. With a referral code, it switches to `sellWithReferral`. The minimum sell is `MIN_SELL_TOKENS = 1 ether` (1 token).

After bonding, sells route through the Uniswap Universal Router.

## How the preview works

The UI calls a view function on the V2 hook to compute the expected output before you sign:

* For buys: `previewBuy(launchId, ethIn)` returns tokens out, cost, refund, and tokens remaining on the curve
* For sells: `previewSell(launchId, tokenAmount)` returns the net payout and the fee breakdown

These functions are read only and free. They reflect the current curve state.

After bonding, the preview comes from the Uniswap V4 Quoter at `0x3972C00f7ed4885e145823eb7C655375d275A1C5`.

## Anti-snipe behaviour

During the anti-snipe window (0 to 60 seconds after launch, set by the creator), buys and sells require a captcha signature. The InkyPump UI gets this signature automatically. Direct contract calls without the signature revert with `CaptchaRequired()`.

See [Anti-Snipe](/token-creation/anti-snipe).

## Refund on a partial fill

If you submit a buy that would push the curve past the bond target, the contract fills as much as it can on the curve and refunds any unused ETH in the same transaction. The bond happens as part of the same call. You end up with tokens at the curve price plus a refund.

The UI shows this as a single combined buy. The transaction trace shows the refund.
