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

# GET /api/vaults/:vaultId/collateral — Pledge Value

> Scans escrows for pledged vault shares and values them at both naive and correct NAV, with an optional lender haircut applied to the honest figure only.

Use this endpoint before lending against a pledge of vault shares. It scans the specified accounts for MPT escrows holding this vault's share token, then values each pledge at both the naive NAV (what `AssetsTotal` alone reports) and the correct NAV (net of declared loss). Pass your own haircut to receive the maximum lendable amount directly — the haircut always applies to the honest value, never to the reported one.

## Parameters

<ParamField path="vaultId" type="string" required>
  64-character hex object ID of the `Vault` ledger entry. Case insensitive.
</ParamField>

<ParamField query="accounts" type="string">
  Comma-separated XRPL addresses to scan for escrows. These are **added to** the default set (the service's watched accounts plus the vault owner), not a replacement for it.
</ParamField>

<ParamField query="haircut" type="number">
  The lender's own discount in percent, applied to `navCorrect`. Defaults to `0`. Echoed per pledge as `haircutPct`.
</ParamField>

## Request

```bash theme={null}
curl -s "http://localhost:8787/api/vaults/5763707D11EA19D1B5FF04E4EBA4F9336057955CDE65B725D1FF3EF2A96CB0E5/collateral?haircut=20"
```

## Response

```json theme={null}
{
  "serverTime": "2026-09-12T22:20:22Z",
  "ledgerIndex": 5263343,
  "shareMptId": "000000014D667775372D5B78E07FFF294678C7F9CE82AFBC",
  "navNaive": "1.000000",
  "navCorrect": "0.803922",
  "pledgeCount": 0,
  "totalShares": "0",
  "totalValueNaive": "0",
  "totalValueCorrect": "0",
  "totalOverstatement": "0",
  "totalOverstatementPct": "0.00",
  "pledges": []
}
```

## Response Fields

<ResponseField name="shareMptId" type="string">
  48-character hex MPT issuance ID of the vault's share token. All escrows in `pledges` hold this token.
</ResponseField>

<ResponseField name="navNaive" type="string">
  Per-unit value computed as `assetsTotal / sharesOutstanding`. What a tool reading only `AssetsTotal` would report.
</ResponseField>

<ResponseField name="navCorrect" type="string">
  Per-unit value computed as `(assetsTotal - lossUnrealized) / sharesOutstanding`. The recoverable value.
</ResponseField>

<ResponseField name="pledgeCount" type="number">
  Number of distinct escrow objects found across all scanned accounts.
</ResponseField>

<ResponseField name="totalShares" type="string">
  Total share units held across all pledges, in drops.
</ResponseField>

<ResponseField name="totalValueNaive" type="string">
  Total value of all pledges at `navNaive`, in drops.
</ResponseField>

<ResponseField name="totalValueCorrect" type="string">
  Total value of all pledges at `navCorrect`, in drops.
</ResponseField>

<ResponseField name="totalOverstatement" type="string">
  Aggregate overstatement: `totalValueNaive - totalValueCorrect`, in drops.
</ResponseField>

<ResponseField name="totalOverstatementPct" type="string">
  Overstatement as a percentage of `totalValueNaive`, to two decimal places.
</ResponseField>

<ResponseField name="pledges" type="array">
  One entry per escrow found. Empty when no pledges are standing.

  <Expandable title="pledge fields">
    <ResponseField name="escrowId" type="string">
      64-character hex object ID of the `Escrow` ledger entry.
    </ResponseField>

    <ResponseField name="pledgor" type="string">
      XRPL address of the account that created the escrow.
    </ResponseField>

    <ResponseField name="beneficiary" type="string">
      XRPL address of the lender who may claim the escrow.
    </ResponseField>

    <ResponseField name="shares" type="string">
      Share units held in this escrow, in drops.
    </ResponseField>

    <ResponseField name="valueNaive" type="string">
      Value of this pledge at `navNaive`, in drops.
    </ResponseField>

    <ResponseField name="valueCorrect" type="string">
      Value of this pledge at `navCorrect`, in drops.
    </ResponseField>

    <ResponseField name="overstatement" type="string">
      `valueNaive - valueCorrect` for this pledge, in drops.
    </ResponseField>

    <ResponseField name="overstatementPct" type="string">
      Overstatement as a percentage of `valueNaive`, to two decimal places.
    </ResponseField>

    <ResponseField name="haircutPct" type="number">
      The haircut percentage applied to this pledge, echoed from the request parameter.
    </ResponseField>

    <ResponseField name="maxLendable" type="string">
      Maximum amount a lender should advance against this pledge: `shares × navCorrect × (1 - haircut/100)`, in drops.
    </ResponseField>

    <ResponseField name="finishAfter" type="string | null">
      ISO 8601 earliest time the escrow can be finished. `null` if not set.
    </ResponseField>

    <ResponseField name="cancelAfter" type="string | null">
      ISO 8601 time after which the escrow can be cancelled. `null` if not set.
    </ResponseField>

    <ResponseField name="explorerUrl" type="string">
      XRPL Devnet explorer URL for this escrow object.
    </ResponseField>
  </Expandable>
</ResponseField>

<Warning>
  The haircut applies to the **correct** NAV, never to the reported one:

  $V_{\text{lendable}} = u \cdot \text{NAV}_{\text{held}} \cdot (1 - h)$

  Marking a pledge at `valueNaive` and then applying a 20% haircut leaves you believing you are 20% over-collateralised when you may in fact be short. A haircut absorbs volatility; it does not absorb a misstatement. Use `maxLendable` directly — it applies your haircut to `valueCorrect` for you.
</Warning>

<Note>
  Vault shares are MPTs, and XLS-85 TokenEscrow accepts MPT amounts, so a pledge can sit on the ledger where anyone can read it. What does not exist is a reverse index from an MPT issuance ID to the escrows holding it. A lender must supply the accounts to scan. An `Escrow` appears in the owner directory of both the pledgor and the beneficiary under the same object index, so you can enumerate pledges in your favour from your own account — and the API deduplicates by escrow index so one pledge is never counted twice.
</Note>
