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

# Exit quote (fee projection)

> The number you see before you sign.

## `POST /vault/:address/exit-quote`

Given a proposed withdrawal, returns exactly what will happen — the projection the app shows before any exit signature.

**Request**

```json theme={null}
{ "requestedUsd": 5000, "mode": "USDG" }
```

`mode` is `"USDG"`, `"USDe"`, or `"in-kind"`.

**Response**

```json theme={null}
{
  "requestedUsd": 5000,
  "newProfitUsd": 1200.0,
  "feeUsd": 120.0,
  "netToWalletUsd": 4862.4,
  "conversionCostUsd": 17.6,
  "feeDueShortfall": null,
  "feedStale": false,
  "steps": [
    { "id": "unwind", "label": "Unstake & collect", "sig": true },
    { "id": "convert", "label": "Convert to USDG", "sig": false },
    { "id": "send", "label": "Send to wallet", "sig": true }
  ]
}
```

Field semantics:

* **`newProfitUsd`** — the slice above your [high-water mark](/fees/high-water-mark); `0` for withdrawals within your fee-free headroom.
* **`feeUsd`** — your vault's immutable rate applied to `newProfitUsd`; forced to `0` when `feedStale` is true (waiver, shown loudly).
* **`conversionCostUsd`** — estimated swap cost of converting to the exit asset (always `0` for in-kind). Bounded by the vault's on-chain per-swap loss cap.
* **`feeDueShortfall`** — in-kind only: if the vault's loose balances can't cover the fee, the exact token amount to fund **before** signing. Never `null`-and-then-revert.
* **`steps`** — the plan the app's stepper renders, marking which steps need a signature.

<Note>
  Quotes are recomputed at signing time — vault state moves between preview and signature, and the number you approve must be the number that executes. Integrators should do the same: quote, then re-quote at sign.
</Note>
