Use “Customers” in Recued. Everyone on the book, most recent first — and the way to start a tenancy for one.
Customers
Use “Customers” in Recued. Everyone on the book, most recent first — and the way to start a tenancy for one.
Complete workflow
Use Rental Book in Recued for property, landlord, ledger, and records. It includes 24 built-in actions and 18 ready-to-run workflows.
You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.
Use “Add a building” in Recued. Records one building or complex. Units hang off it.
Use “Add a unit” in Recued. Records one rentable unit against a building. It uses the connections and settings you choose when you run it.
Use “Add a tenant” in Recued. Records one tenant and how they pay: cash, autopay, or stripe.
Use “Open a rental contract” in Recued. Binds a tenant to a unit at a monthly rent. The contract is what a period charge is raised against.
Use “Raise the period's rent charges” in Recued. Raises one rent charge per live contract for a billing period. Safe to run unattended on a monthly schedule and safe to run twice — the charge id is the (contract, period, kind) tuple, so a repeat is a no-op rather than a second bill.
Show all 19 recipes
Use “Record a rent payment” in Recued. Records what a tenant actually paid, against their account rather than against an invoice. A partial payment is one receipt for the part; an overpayment is one receipt for the whole, and the credit carries.
Use “Collection sheet” in Recued. The month's collection list as a table and as CSV, one row per active contract, each carrying the contract id the import matches on.
Use “Import payments” in Recued. Reads the collection sheet back and records one receipt per row that carries an amount and the date it arrived. Re-uploading the same sheet records nothing twice, and a row it cannot record is named rather than dropped.
Use “Tenant statement” in Recued. One tenant's account: everything charged, everything received, and the balance derived from the two. Not read off any invoice, because no invoice knows about the payment that arrived against a different month.
Use “Buildings” in Recued. Every building you hold, with a way into each one's units.
Use “Building” in Recued. One building: what it is, and every unit in it. It uses the connections and settings you choose when you run it.
Use “Unit” in Recued. One unit: who is in it now, and every tenancy it has had. It uses the connections and settings you choose when you run it.
Use “Contracts” in Recued. Live tenancies by default; expired ones only when you ask.
Use “Retire or restore a customer” in Recued. Takes a customer off the working list without deleting anything they are attached to, or puts them back.
Use “End a tenancy” in Recued. Closes a contract on a date. The ledger it produced stays exactly as it is — ending a tenancy is not settling it.
Use “Change the rent” in Recued. Sets a contract's rent. Periods already raised keep the amount they were raised at.
Use “Collect the rent” in Recued. Type what each tenant paid, straight into a grid — one row per live tenancy, one save.
Use “Records runtime” in Recued. It helps you complete this workflow using the connections and settings you choose.
This screen IS the customer picker
A recipe argument cannot be "one of your stored customers": a variable's options is a static list authored into the recipe, and the typed pickers that do exist are for FILES and CONNECTIONS. There is no record picker.
So the direction is inverted. Rather than opening a contract form and choosing a customer inside it, you find the customer here and press Start a tenancy — the button carries their id into the contract recipe. The list is the picker.
⚠ Arriving from a vacant unit carries the unit through too, so the contract opens with both sides already filled.
⚠ The name box matches from the START of the name and filters in the store, so it narrows every customer rather than only the page on screen.
The ones who never came back
Retired customers are hidden by default and the list is newest-touched first, so the people you are actually dealing with are at the top.
Getting around
Each row's button RUNS the next recipe with the id filled in — that is how one screen reaches another. ⚠ There is no URL for a single record: the webclient's recipes route reads #recipes/<recipe-id> and ignores any further segment, and a ?query tail is parsed and discarded. So a screen is reachable, but not bookmarkable or shareable.
Paging
The list reads one page at a time and the filter block grows Next / Previous controls. ⚠ Paging is bound to the values you last searched with — edit a filter and the page resets, because a cursor points into one ordering of one query and means nothing in another.
The cursor is a hidden variable the controls fill in; it is never something to type.
How it works
Inspect the data fetches, transforms, gates, and output this recipe runs.
Settings
Configurable at install. Defaults shown — change them anytime in Recued.
name
setting
=
limit
setting
=
100
cursor
setting
=
for unit
setting
=
include retired
setting
=
false