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

# Pricing & caps

> Fixed-rate or oracle/USD pricing, your quote asset, and the sale's limits.

## Pricing mode

Pick how buys are priced. The choice also decides what your caps are denominated in.

<Tabs>
  <Tab title="Fixed (default)">
    A flat **`tokensPerQuoteUnit`** rate — *N* tokens per 1 unit of the quote asset. Every cap
    (soft / hard / min / max) is denominated in **quote units**. This is the simple, no-oracle path
    and the only one that supports [multiple phases](/projects/phases-and-whitelist).
  </Tab>

  <Tab title="Oracle / USD">
    The sale is priced in **USD**. A Chainlink-compatible feed converts the quote payment to USD,
    tokens sell at your `tokenPriceUsd`, and **all caps are in USD**. You set:

    * `priceFeed` — the quote→USD feed address
    * `tokenPriceUsd` — USD per token (in the feed's decimals)
    * `maxOracleDelay` — max accepted price staleness (≤ 7 days)

    The feed is read defensively (positive answer, round complete, not stale). **Oracle mode is
    single-phase only** — it can't be combined with the multi-phase builder.
  </Tab>
</Tabs>

## Quote asset

Buyers pay in the asset you choose:

* **Native HYPE** — the default, no token approval needed for buyers.
* **Any ERC-20** — e.g. a stablecoin; you provide its address and decimals.

## Caps & limits

| Field      | What it does                             | Constraint            |
| ---------- | ---------------------------------------- | --------------------- |
| `softCap`  | Minimum raise to launch                  | must be > 0           |
| `hardCap`  | Raise ceiling; selling out ends the sale | ≥ soft cap            |
| `minBuy`   | Per-wallet minimum commit                | global floor          |
| `maxBuy`   | Per-wallet **cumulative** maximum        | ≥ min buy             |
| `startsAt` | Sale opens                               | must be in the future |
| `endsAt`   | Sale closes                              | after `startsAt`      |

<Info>
  Sales are **first-come, first-served** — no pro-rata, no lottery. Hitting the hard cap ends the sale
  immediately. Miss the soft cap by `endsAt` and the sale cancels for full refunds.
</Info>
