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

# Pricing

Orchestra produces prices at three levels of firmness. An estimate is indicative. A quote is firm for 2 minutes and gets repriced if the deposit lands late. Fixed delivery turns the quoted output into a delivery commitment.

| Level              | How you get it                     | What the price means                                               |
| ------------------ | ---------------------------------- | ------------------------------------------------------------------ |
| **Estimate**       | `GET /v1/orchestration/estimate`   | Indicative. Use for display and browsing.                          |
| **Quote**          | `POST /v1/orchestration/quote`     | Firm for 2 minutes. Late deposits reprice at the live market rate. |
| **Fixed delivery** | `deliveryMode: "fixed"` on a quote | Commitment. The order delivers the quoted `estimatedOut`.          |

## Estimates

`/estimate` is a stateless price preview. It requires no API key, creates no durable order, and allocates no deposit address, so it is safe to call on every input change within its limit of 120 requests per minute per IP. Preview slippage defaults to 100 bps when `slippageBps` is omitted.

## Quotes

`/quote` is authenticated and idempotent: send `X-Idempotency-Key` with every request. It persists the quote, allocates a deposit address, and starts a 2 minute expiry (`expiresAt`). Fund the deposit before `expiresAt` and the order executes on the quoted terms.

A deposit that arrives after expiry is not refunded. It is repriced at the live market rate at detection time, and execution stays bounded by the quote's `slippageBps`. If you need the quoted price, treat `expiresAt` as a hard deadline for the deposit, not a suggestion.

The recommended workflow:

1. Browse with `/estimate`. Call it on every amount or route change.
2. Call `/quote` only when the user commits to the swap.
3. Fund the deposit address before `expiresAt`.

This keeps quote creation off your browsing path and reserves it for real intent.

## Fixed delivery

`deliveryMode: "fixed"` makes `estimatedOut` a delivery commitment: the order delivers the quoted amount rather than whatever execution produces.

* Exact-in only. Any other `amountMode` returns `400 unsupported_delivery_mode`.
* The route must have `fixedEligible: true` on `GET /v1/orchestration/routes`, and availability additionally depends on per-partner operator configuration.
* When fixed delivery does not apply, `/quote` and `/estimate` reject with `fixed_delivery_unavailable` (the error message states the reason), while `/onramp` proceeds as a normal variable onramp.
* The response echoes `deliveryMode: "fixed"` only when it applies. Treat its absence as a variable quote.

See [Fixed delivery](/products/orchestration/api/quotes-and-orders#fixed-delivery-deliverymode) for the field-level contract.

## Slippage

`slippageBps` bounds how far the execution price can move against the quote before the order refunds instead of filling badly. It accepts `0` to `1000` and defaults to `50` (`200` for NEAR-ingress sources). On routes that swap through the Flashnet AMM, a runtime floor applies (default 10 bps, operator-tunable); a below-floor value returns `400 invalid_request` because it could never fill at real size.

Slippage protects the execution leg, not the quote window. If the pool moves past your tolerance between deposit and execution, the order refunds with `slippage_exceeded` and no partner action is required. See [Order Lifecycle](/products/orchestration/order-lifecycle#market-moves-and-refunds) for the refund paths.

`/onramp` pins slippage to 1000 bps regardless of input: a human pays a Lightning invoice on their own schedule, so the quote must survive minutes of price drift and reprice at settlement.

## Price impact

Price impact (how much your own order moves the pool) is capped separately from slippage. A quote that would move the pool past the cap rejects with `price_impact_too_high`. Slippage caps market movement between quote and execution; the price impact cap rejects orders too large for the pool at quote time.

## Where to go next

* [Amounts](/products/orchestration/concepts/amounts) for how `amount` and `amountMode` work
* [Fees](/products/orchestration/concepts/fees) for what gets deducted from the quoted output
* [Quotes and Orders](/products/orchestration/api/quotes-and-orders) for the full field-level reference
* [Order Lifecycle](/products/orchestration/order-lifecycle) for what happens after funding
