# Deal Financials

> Access and update deal financial metrics in the Lev API.

Source: https://www.lev.com/docs/build/deal-financials

Last updated: June 2026

---
## Get Financials

### `GET /api/external/v2/deals/{deal_id}/financials`

Get financial details for a deal

#### Path Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `deal_id` | `integer` | Yes | The deal ID |

Response: `200`

#### Error Responses

- **401** (unauthorized): Authentication required
- **404** (not_found): Deal not found

## Write Financials

Write canonical deal-level financial fields through `POST /api/external/v2/deals` and `PATCH /api/external/v2/deals/{deal_id}`. Use the nested `deal_financials` object.

```json
{
  "deal_financials": {
    "purchase_price": 6500000,
    "estimated_value": 7000000,
    "total_cost": 6700000,
    "total_cost_basis": 6800000,
    "land_cost": null
  }
}
```

Writable fields:

- `purchase_price` (`number|null`): Purchase price
- `estimated_value` (`number|null`): Estimated value
- `total_cost` (`number|null`): Total cost
- `total_cost_basis` (`number|null`): Total cost basis
- `land_cost` (`number|null`): Land cost

Create and update use the same nested shape. Send at least one supported financial field. Empty objects and unknown fields are rejected. On update, omitted fields are unchanged and explicit `null` clears an existing value. A null-only `deal_financials` object is valid only when it clears existing values. If the deal does not already have a financials record, `PATCH /api/external/v2/deals/{deal_id}` creates one only when at least one supplied financial field has a non-null value.

There is no standalone create or delete endpoint for deal financials. Creating a deal can create the financials record. Deleting the deal archives the deal itself and removes access to its associated financials.

## Financials Object

The GET endpoint returns the full `DealFinancialsDetailResponse` schema. The embedded financials returned via `?include=financials` on the deals endpoint uses a smaller subset of fields (`DealFinancialsResponse`). The write surface is narrower than the read schema; see [Write Financials](#write-financials).

| Field | Type | Description |
|-------|------|-------------|
| `id` | integer | Financials record identifier |
| `deal_id` | integer\|null | Associated deal ID |
| `purchase_price` | number\|null | Purchase price |
| `asking_price` | number\|null | Asking price |
| `estimated_value` | number\|null | Estimated value |
| `in_place_noi` | number\|null | In-place Net Operating Income |
| `stabilized_noi` | number\|null | Stabilized NOI |
| `stabilized_value` | number\|null | Stabilized value |
| `stabilized_occupancy` | number\|null | Stabilized occupancy rate |
| `going_in_cap_rate` | number\|null | Going-in cap rate |
| `going_in_cap_rate_as_of_date` | string\|null | As-of date for going-in cap rate |
| `capex` | number\|null | Capital expenditures |
| `historical_capex` | number\|null | Historical capital expenditures |
| `land_cost` | number\|null | Land cost |
| `total_cost` | number\|null | Total cost |
| `total_cost_basis` | number\|null | Total cost basis |
| `cost_basis_to_date` | number\|null | Cost basis to date |
| `imputed_land_value` | number\|null | Imputed land value |
| `existing_debt` | number\|null | Existing debt amount |
| `estimated_cost_basis_if_refinance` | number\|null | Estimated cost basis if refinance |
| `exchange_amount` | number\|null | 1031 exchange amount |
| `exchange_required_closing_date` | string\|null | Exchange required closing date |
| `outstanding_loan_amount_at_closing` | number\|null | Outstanding loan amount at closing |
| `investment_sales_brokerage_fee` | number\|null | Investment sales brokerage fee |
| `debt_placement_brokerage_fee` | number\|null | Debt placement brokerage fee |
| `environmental_cost` | number\|null | Environmental report cost |
| `appraisal_cost` | number\|null | Appraisal cost |
| `survey_cost` | number\|null | Survey cost |
| `snda_and_estoppel_cost` | number\|null | SNDA and estoppel cost |
| `estimated_borrower_counsel_cost` | number\|null | Estimated borrower counsel cost |
| `estimated_lender_counsel_cost` | number\|null | Estimated lender counsel cost |
| `other_closing_costs` | integer\|null | Other closing costs |
| `date_of_purchase_if_refinance` | string\|null | Date of purchase (if refinance) |
| `construction_start_date` | string\|null | Construction start date |
| `construction_completion_date` | string\|null | Construction completion date |
| `debt_maturity_date` | string\|null | Debt maturity date |
| `cash_out` | boolean\|null | Whether this is a cash-out transaction |
| `recent_phase_available` | boolean\|null | Whether a recent phase report is available |
| `recent_appraisal_available` | boolean\|null | Whether a recent appraisal is available |
| `survey_available` | boolean\|null | Whether a survey is available |
| `borrower_counsel_engaged` | boolean\|null | Whether borrower counsel has been engaged |
| `updated_at` | string\|null | Last update timestamp |