/api/external/v2/deals/{deal_id}/financials/api/external/v2/deals/api/external/v2/deals/{deal_id}Get Financials
/api/external/v2/deals/{deal_id}/financialsGet financial details for a deal
deal_idintegerrequiredResponse (200):
{
"request_id": "...",
"timestamp": "2026-03-20T15:30:45Z",
"data": {
"id": 201,
"deal_id": 101,
"purchase_price": 6500000.0,
"asking_price": null,
"estimated_value": 7000000.0,
"in_place_noi": 450000.0,
"stabilized_noi": 500000.0,
"stabilized_value": 7500000.0,
"stabilized_occupancy": 0.95,
"going_in_cap_rate": 0.069,
"going_in_cap_rate_as_of_date": null,
"capex": 200000.0,
"historical_capex": 150000.0,
"land_cost": null,
"total_cost": 6700000.0,
"total_cost_basis": 6800000.0,
"cost_basis_to_date": 6500000.0,
"imputed_land_value": null,
"existing_debt": 4000000.0,
"estimated_cost_basis_if_refinance": null,
"exchange_amount": null,
"exchange_required_closing_date": null,
"outstanding_loan_amount_at_closing": null,
"investment_sales_brokerage_fee": null,
"debt_placement_brokerage_fee": 50000.0,
"environmental_cost": null,
"appraisal_cost": 5000.0,
"survey_cost": null,
"snda_and_estoppel_cost": null,
"estimated_borrower_counsel_cost": null,
"estimated_lender_counsel_cost": null,
"other_closing_costs": null,
"date_of_purchase_if_refinance": null,
"construction_start_date": null,
"construction_completion_date": null,
"debt_maturity_date": null,
"cash_out": false,
"recent_phase_available": null,
"recent_appraisal_available": true,
"survey_available": null,
"borrower_counsel_engaged": false,
"updated_at": "2026-03-10T14:30:00Z"
}
}unauthorizednot_foundWrite 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.
{
"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 priceestimated_value(number|null): Estimated valuetotal_cost(number|null): Total costtotal_cost_basis(number|null): Total cost basisland_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.
Brokerage Fees
Two different things on a deal get called a fee, and they are not the same record.
- Two fields on the financials record.
debt_placement_brokerage_feeandinvestment_sales_brokerage_feeare single numbers on the deal's financials record — underwriting inputs in the deal's cost stack. They are read-only here: the writable set is five fields and does not include them. - The brokerage's actual fee on the deal. That is a separate set of rows, read with
?include=feeson the deals endpoints (see Fees Object). Each row carries a party, a rate or a flat amount, and a resolved USD amount, and the embed reports their sum asgross_fee_amount.
Do not reconcile the two, and never add them together. A deal can carry a debt_placement_brokerage_fee on its financials and a completely separate set of fee rows, and nothing in Lev keeps them in step. Read ?include=fees for what the brokerage charges. Read the financials fields for the assumption the deal was underwritten on.
Access differs as well. Anyone who can read a deal can read its financials, here or through ?include=financials. Fees additionally require an admin of the account that owns the deal, or that deal's primary owner, and the deals collection refuses ?include=fees outright for a non-admin key.
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.
| 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 |