Put Floor Plans, Units & Expenses Together

Step by step guidance on how to stitch floor plan and unti data to expense data

With both unit and floor plan data and comprehensive expense data, you must now join them into one picture to display fully transparent pricing.


Join 1: Units to Floor Plans

Every unit has a floor_plan_id. Match the unit to the floor plan’s id. unit.floor_plan_id = floor_plan.id

This gives for every unit:

  • its floor plan name (filter_label),
  • bed/bath count, image,
  • and the PMS floor plan ID (provider_id).
📘

If a unit has floor_plan_id = null, it has not been assigned to a floor plan yet.


Join 2 (If Needed): Units to PMS Reference Codes

Every reference entry has a unit_id. Match the reference entry to the unit’s id. reference.unit_id = unit.id

This gives you, for every unit:

  • its PMS-side identifier (the value field).

The key field tells you which PMS it came from (e.g. “realpage-onesite”, “yardi-rentcafe”). If an asset has no reference groups, there are no PMS codes mapped.

📘

Asset expenses do not need joining. They apply to the whole property. Keep them separate and attach them equally to every unit.


Join 3: Floor Plan Expense Entries to Floor Plans

  1. Join floor plan expense entries to their expense definition by expense_id to get the fee metadata (type, label, frequency).
  2. Join expense entries to floor plans by floor_plan_id.
    1. entry.expense_id = fp_expense.id (gives the label, type, frequency, etc.)
    2. entry.floor_plan_id = floor_plan.id (gives you which floor plan this fee applies to)

Now you can say: “Floor Plan A1 - Oak has a pet_rent_dog expense of $25.00/month.” Since units already join to floor plans, you can cascade this down: “Unit 204 is on Floor Plan A1 - Oak, which has a pet_rent_dog of $25.00/month.”


Join 4: Unit Expense Entries to Units

  1. Join unit expense entries to their definition by expense_id, then to units by unit_id.
    1. entry.expense_id = unit_expense.id (gives you the label, type, frequency, etc.)
    2. entry.unit_id = unit.id (gives you which unit this fee applies to)

Now you can say: “Unit 204 has a deposit expense of $500.00 due at move-in.”


Example:

Once all joins are done, a single unit’s complete data looks like this:

  • Unit 204 (id: 55001)
  • Floor Plan: A1 - Oak (id: 8001), 1 bed / 1 bath, 648 sqft, PMS floor plan ID: FP-100
  • PMS Reference: realpage-onesite = “3839376-1”
  • Asset-Level Expenses (apply to all units): Application Fee: $50.00 (one_time, due at application), Admin Fee: $150.00 (one_time, due at move_in)
  • Floor-Plan-Level Expenses (apply to all units on this floor plan): Pet Rent (Dog): $25.00/month, Parking (Assigned): $75.00 - $125.00/month (range)
  • Unit-Level Expenses (specific to this unit): Deposit: $500.00 (one_time, due at move_in)

💡

Explore Our New Expense Data Integration

We’ve launched three new example properties in the SightMap REST API featuring realistic expense data models. Use these assets to test and visualize expenses across the asset, floor plan, and unit levels.

  • Demo Asset IDs: 7778 • 7779 • 7780

Ready to get started?

  • Request a Technical Demo Discover how our advanced APIs deliver granular expense data across every asset level. Contact Partnerships
  • Become an Engrain Partner Not currently integrated? Let’s get you up and running with our expense-enabled APIs. Start Your Integration
  • Existing Partner Support Need access to these assets or help with permissions? Contact API Support