Bringing your book into Leasebook
Moving your whole book? Read the switch-over guide first.
This guide is for whoever keeps your agency's spreadsheet. Start with the template: Download the empty CSV template, ready to fill. Inside Leasebook, the import window has the same file under Download CSV template. Open it in Excel or Numbers, add your rows, and save it as CSV. The example file is for reference: its rows are invented and must not be imported into a real book.
You do not have to get this perfect. Nothing is written until you say so: every import runs as a preview first, which shows you row by row exactly what will land and what it cannot read. You fix those rows and preview again, and only then does anything commit.
How the file works
One file, one header row, and a type column that says what each row is. You can mix all eight kinds in one file. That is the point, because your book is one thing and splitting it into eight files is work you should not have to do.
type | One row per | Required |
|---|---|---|
property | a property you manage | label, address |
unit | a flat in a block, let or empty | propertylabel, unit |
tenancy | a letting | propertylabel, tenantname, startdate |
contact | a person: landlord, tenant, solicitor, anyone | name |
contractor | a trade you use | name |
engagement | a fee agreement with a landlord | contactname, feebasis, importkey |
rent | one rent period, past or present | propertylabel, duedate, amount |
expense | one cost against a property | propertylabel, category, incurredon, amount, importkey |
Leave columns that do not apply to a row blank. Required values must be present; the preview identifies missing or invalid fields before import.
Keep a stable source key for costs and agreements
Every expense and engagement row needs an importkey. Use the original record ID with a source-book prefix, such as book-2026:expense-0042. If your spreadsheet has no IDs, add a column once and keep those values with the original rows. Do not regenerate keys after sorting, editing or splitting the file. No paid tool is needed. Replace the sample keys when preparing your own book.
Keys are case-sensitive, up to 128 characters, beginning with a letter or digit. Use only letters A–Z/a–z, digits, dots, underscores, colons and hyphens. Avoid names or other personal information. A row number alone is not a stable key when rows can move; keep the source-book prefix and original identifier.
- Same key, same target and same values: a duplicate, with no new financial record.
- Same key with changed values or another target: a conflict, never an update. Review the original record; do not change the key merely to bypass a conflict.
- A deliberately separate expense or agreement needs its own key, even if its amount and date match another record.
- A missing key is a row error. Other valid rows can still be reviewed and imported.
Keys only protect rows that carry them. Records imported before keys existed, or sent through an older connection to the API, cannot be matched this way, so check them against your own records before you import them again.
Every column
Column names are read case-insensitively, so Address and address both work.
property: label, address, eircode, ownerclient
label is what you call the property day to day (for example, "Example Flat"). Every other row refers to a property by that label, so keep it consistent. ownerclient (also landlord, landlord name or landlord client) is the landlord's name; it links the property to them.
unit: propertylabel, unit, bedrooms, bathrooms, floor, berrating, berexpiry
One row per flat in a block, including the ones standing empty. This is how a forty-flat building arrives as forty flats: one property row for the building, then forty unit rows sharing its propertylabel. A vacancy is part of your book, so it belongs in the file. Without these rows only the let flats would exist, and your occupancy figure would read as though the building were full.
berrating is per flat and wins over the building's, because one address can have forty different ratings and a compliance warning has to carry the certificate of the flat it concerns.
Put unit rows before the tenancy rows that let them. A tenancy naming a flat that has not been listed yet will create it, which is fine, but then the unit row further down is a duplicate, and the preview will say so.
tenancy: propertylabel, unit, tenantname, startdate, rent (or monthlyrent), deposit, rtbnumber, rtbdate
unit names the flat this letting is on, and is left blank when the whole property is let as one home.
rtbnumber is recorded exactly as the RTB issued it. It is never generated for you. A book that arrives without registration numbers will honestly show them as missing rather than inventing any.
contact: name, role, company, email, phone, propertylabel
role is one of: owner_client, tenant_contact, contractor, solicitor, accountant, agent, utility, emergency, applicant, other.
contractor: name, trade, email, phone
engagement: contactname, feebasis, feevalue, vatrate, agreementstart, agreementend, importkey
feebasis is percent_of_rent or flat_monthly. Write feevalue the way you would say it: 7.5 for 7.5%, or 150 for €150 a month. vatrate is also a plain percent, 23.
rent: propertylabel, duedate, amount, receivedamount, receivedat, amountcredited, reference
One row per period. amount is what was due; receivedamount is what actually came in, and receivedat is the day it did. It is required whenever any money was received, because a payment without a date is a number rather than a record.
amountcredited is for a credit, when your book keeps credits in a column of their own. Put each one on its own row: a row with an amount received and an amount credited is refused, and so is a row with an amount due and an amount credited. A credit is not imported. Its row is held, and you record the credit in Money after import.
You never write a status. Paid, part-paid and outstanding are worked out from the two figures, so an imported book cannot claim a period was paid when the numbers say otherwise.
expense: propertylabel, category, incurredon, amount, vatamount, description, importkey
One row per cost. category is one of: service_charge, insurance, lpt, utilities, letting_fee, advertising, repairs, compliance, other. incurredon is the day the cost was incurred, and it is required. An expense without a date is a number rather than a record, the same rule a rent receipt follows.
Expense and engagement rows need finance permission. Importing properties, units, tenancies and contacts is an operations job; creating a cost against a client's property is a finance one, and the two are separate on purpose. If your role covers operations but not finance, the preview tells you so before you approve the file, and every other row in it still imports normally.
Formats: write them the way you already do
- Dates are read day-first.
01/09/2025is 1 September 2025.2025-09-01works too. - Money can be written any way your spreadsheet exports it.
1,850.50,€1.850,50,1850.5, all read correctly, including the cents. - Eircodes are fine with or without the space.
- A whole block of flats sharing one Eircode routing key is expected, not a duplicate.
Order inside the file
A row can refer to something created earlier in the same file. So a property row can name an ownerclient from a contact row above it, and a tenancy can name a propertylabel from a property row above it.
For financial rows, a target created in this file is shown as a dependency, not as unconditionally ready. It is resolved again during import; if the target fails to import or is ambiguous, the financial row is skipped with a reason. Keep contacts and properties before the rows that depend on them.
Rent period and vacant units
Rent period. A column named Per, Rent per, Frequency, Payment frequency, Rent basis or Paid per is read as the rent period. month, monthly, per month, pm and pcm mean monthly; week, weekly, per week and pw mean weekly; quarter, quarterly and per quarter mean quarterly. Yearly rents are not imported yet: the row is held back and named. If your file has no rent period column, the preview says every tenancy will be imported as monthly. Map a period column if that is wrong.
Vacant units. A row with a property and a rent, but no tenant and no dates, is imported as a vacant unit. Its rent is kept in the unit notes as the asking rent.
Limits
5,000 data rows and 10 MB per file. Oversized CSV files are rejected in full; Leasebook does not silently import the first 5,000 rows. Split a larger book into files, preserving the dependency order above across files too: referenced contacts and properties first, then units, tenancies and their related records.
Importing in the workspace
Open Portfolio & rentals → Import a spreadsheet, Contacts → All contacts → Import contacts, or Open setup on the Getting started list, whose first step imports. Download the CSV template, then choose a file or paste its contents. Contacts and setup also accept vCard. A selected file takes priority over pasted text.
Preview import, in Portfolio and in the other import windows, shows every row and its errors without writing records. Choose Edit import to correct the source and preview it again. If some rows are valid, the import button states how many ready or reviewed rows you can submit. Reviewed rows may include dependencies that are checked again; they are not a promise that every row will land. Errors and key conflicts are skipped. Nothing is dropped silently: after import, any row that was not written is listed with its row number and the reason. Review the final imported, duplicate and skipped totals against your own records. The workspace refreshes immediately, and the completed review cannot be committed a second time.
Bank statements
Open Money → Reconcile → Bank → Import bank statement. Download the bank CSV template, choose a file or paste its contents, then preview. Bank files have a separate limit of 2,000 data rows and 2 MB. Include a date and signed amount, or separate credit/debit columns; dates accept YYYY-MM-DD or DD/MM/YYYY.
The review shows every line, exact amounts including cents, duplicate lines and the original date/amount when they cannot be read. Edit restores the source for correction. Confirming imports only ready, non-duplicate lines; the completed review shows actual counts and cannot be submitted twice. A file containing only duplicates has no import action.
Importing records statement transactions. It does not connect to a bank, move money or record rent receipts automatically. Confirm receipts separately through the Bank reconciliation suggestions.
Your first import, step by step
- Prepare the file from the template and preview it in the import window.
- Read the errors it names, usually a handful of dates or a property label spelled two ways, and correct them in the source.
- Preview again, import the ready rows, and check the counts against your own records.
- Check the records in the workspace. You can export everything your account can see as one file (JSON) at any time.