Pricing and fees
Base rent, total monthly leasing price, fee breakdowns, and how a property's pricing display settings shape V1 payloads.
Every V1 payload that carries a price carries two of them: the base rent, and the total monthly leasing price (TMLP), which is base rent plus the monthly cost of the fees a resident must pay. The fee lines behind the difference come with it, so a site can show the total and explain it.
Base rent and TMLP
- Base rent is the rent before fees.
- TMLP is base rent plus the monthly equivalent of every mandatory fee.
Fees count toward TMLP by how often they are charged:
| Frequency | Counts toward TMLP as |
|---|---|
| Monthly | The amount |
| Quarterly | The amount ÷ 3 |
| Annually | The amount ÷ 12 |
| One-time | Nothing. It counts toward the upfront total instead. |
| Hourly, per occurrence, or unknown | Nothing. It is listed but left out of every total. |
Only fees whose requirement is Mandatory enter a total. Optional, conditional, situational and included fees are listed but never added.
A fee that is a percentage of base rent is computed separately against the minimum and the maximum base rent, so the maximum TMLP is never derived from the minimum.
A fee Resi cannot put a number on is listed with is_variable: true and adds nothing to any total. That happens when a fee has no amount, or is a percentage of a base rent that is unknown. A fee deliberately set to 0 is a real amount, not variable.
Where the numbers are
Prices are computed when the data changes, not when you request it, so every payload agrees with itself: TMLP is always base rent plus the monthly fee total.
| Endpoint | Pricing fields |
|---|---|
| List units | unitPrice, unitMinBaseRent, unitMaxBaseRent, unitMinTmlp, unitMaxTmlp, unitFees, unitFeeTotal |
| List floor plans | floorPlanRentMin, floorPlanRentMax, floorPlanBaseRentMin, floorPlanBaseRentMax, floorPlanTmlpMin, floorPlanTmlpMax, floorPlanFees, floorPlanFeeTotal |
| List unit types | One row per bedroom count, with its fees and feeTotal taken from the floor plan with the lowest total |
| Get property | minRent, maxRent, minBaseRent, maxBaseRent, and pricingDisplaySettings |
| Fee schedule | The property's effective fee schedule, every requirement included, with monthlyFeeTotal, monthlyFeeTotalMax and upfrontFeeTotal |
The reference pages list every field of a fee line.
Display settings
Each property has pricing display settings, returned as pricingDisplaySettings on the property:
| Setting | Meaning |
|---|---|
pricing_display_mode | BASE_AND_TOTAL, TOTAL_ONLY or BASE_ONLY |
tmlp_label | The label to show next to the total |
show_fee_breakdown | Whether to list the fee lines |
fee_breakdown_behavior | EXPANDED or COLLAPSED |
pricing_disclaimer_text | Text to show with prices |
hidden_price_label | What to show in place of a price hidden by hide_all_pricing |
no_availability_price_label | What to show in place of a price hidden by hide_price_when_no_availability |
no_price_label | What to show wherever else a price is null, such as when no rent is known |
hide_all_pricing | Hide every price |
hide_price_when_no_availability | Hide the price of a unit or floor plan with nothing available |
Resi applies these settings to public payloads before they leave the server:
| Setting | Effect on the payload |
|---|---|
hide_all_pricing | Every pricing field is null and fee lists are empty |
hide_price_when_no_availability | An unavailable unit's or floor plan's prices are null. Its fees are still listed. |
TOTAL_ONLY | Base rent fields are null |
BASE_ONLY | Total fields are null, including unitPrice and the fee fields |
show_fee_breakdown: false | Fee lines are empty; totals stay |
Hidden fields are set to null, never removed, so a payload keeps its shape. Where a price is null, show hidden_price_label if hide_all_pricing is on; otherwise no_availability_price_label if hide_price_when_no_availability is on and nothing is available; otherwise no_price_label.
This enforcement is being rolled out account by account. Until it reaches an account, its payloads carry every field, and a site should apply pricingDisplaySettings itself. Rendering from the settings works either way.
The authenticated V2 API is a management API and returns prices unfiltered.
Last updated on