Import in this order
Each layer refers to the one before it: a lease belongs to a unit, which belongs to a property. Buildium won't accept tenants and leases until their properties exist, and recommends properties first, then people, then financial transactions. Other systems work the same way, even when they take everything in one spreadsheet.
- 1Properties and units. Names, addresses, property types and every unit, including vacant ones.
- 2Owners. Who owns each property, and their share. Each owner needs a company name or a first and last name.
- 3Tenants and leases. Who lives in each unit, lease dates, rent, deposits and recurring charges.
- 4Balances. What each tenant owes or has prepaid on the day you switch, plus deposits held.
Check each import before confirming it. Buildium warns that there's no going back once you've imported, so a mistake means fixing records one by one.
Start from a clean rent roll
Most of a migration is your rent roll in a stricter shape. Use one row per unit, not per tenant or per property, and keep a row for every vacant unit with its lease columns blank. When two people share a lease, put them in the same row: DoorLoop has columns for a second tenant, and TenantCloud takes several names in one cell, separated by commas.
Past tenants and old leases usually don't belong in the first import. Move current leases first, so rent charges start on the right day, and bring history in later if the new system supports it.
Why rows get rejected, and the fix
The address can't be found
TenantCloud only accepts addresses it can locate on Google Maps. Split the street, city, state and zip code into their own columns, and spell out the street as the post office does.
Units are missing on multi-family properties
Use one row per unit, with the same property name and address on each. TenantCloud expects the unit number to be blank for a single-family home and filled in for every unit in a multi-family building.
Dates are read the wrong way round, or not at all
Pick one format for the whole file. US systems read 04/05/2026 as April 5. Leave the lease end date blank for a month-to-month lease rather than writing month-to-month in a date column. CSV date formatting guide.
Rent and deposits aren't numbers
Write 1600 or 1600.00, not $1,600/mo or 1600 + pet fee. Put other charges in their own columns, which DoorLoop's template has for two recurring charges and one one-time charge. Strip currency symbols guide.
A dropdown value doesn't match
Property types and rent frequencies only accept the system's own values. DoorLoop wants RESIDENTIAL_MULTI_FAMILY and Every2Weeks, not Apartment building and Biweekly. Bank account names must match the account list exactly.
Owners don't add up to 100%
DoorLoop requires the ownership percentages for a property to total 100. Check it per property before you send the file, as a one-owner property listed at 50% is a common slip.
Zip codes lose their leading zero
Excel turns 02134 into 2134. Keep zip codes, unit numbers and account numbers as text. Excel leading zeros guide.
The same tenant appears twice
TenantCloud asks whether to create a new record or add to the existing one when it finds a duplicate. Remove duplicates before importing rather than deciding row by row. CSV duplicate rows guide.
The file is too big, or has extra columns
TenantCloud imports up to 500 rows at a time and ignores columns that aren't in its template. Split large portfolios into batches and map every column you need.
How each system takes your data
Some systems have a self-serve import, and others have their onboarding team load a spreadsheet for you. Either way, the columns are theirs, so get the template before you start collecting.
DoorLoop
A migration spreadsheet with tabs for bank accounts, properties, owners and vendors. Upload it in Getting Started (recommended over 10 units) or email it to the onboarding team, who usually finish in 3 to 5 business days. DoorLoop template.
Buildium
Self-serve import under Settings, then Import data. Download the template for each data type from the upload window; required fields are marked with an asterisk. Import properties first, then people, then financial transactions.
TenantCloud
Self-serve import of properties, tenants and leases together from .csv, .xls or .xlsx, up to 500 rows at a time. Map your columns, then fix rows on the Validation step or import only the valid ones.
Rentec Direct
Their staff import your data for portfolios of 25 or more properties, from an Excel template you email back. Don't change its column headers.
AppFolio, Rent Manager and others
We couldn't find a public import template. Ask your onboarding contact for theirs early, and collect your data in its columns from the start.
Before you send the file
Collect the rent roll in the new system's format
Paste your old rent roll into a form with the new system's columns. Dates, amounts, emails and dropdown values are checked as you go, so the file is right before it's imported. Data is checked in the browser and never stored by us.