/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.
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 |