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.
Raise the period's rent charges
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.
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 “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.
Show all 19 recipes
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 “Customers” in Recued. Everyone on the book, most recent first — and the way to start a tenancy for one.
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.
Point a monthly schedule at this
There is nothing to declare in the recipe — schedules are server-side rows you attach to a dish. 1st of month at 9:00 AM (0 9 1 ) is the preset this is built for.
⚠ Check the preset you pick. Last weekday 5:00 PM is currently the same expression as Weekly Friday 5:00 PM (0 17 5) — it fires every Friday, not monthly.
Advance or arrears
Billing mode decides which month a run bills, so the same schedule serves both kinds of business:
- advance (default) — running on 1 August bills August. Rent is due for the month about to start.
- arrears — running on 1 August bills July. Rent is due for the month just finished.
Leave Period empty and the mode decides. Fill it in (2026-03) to bill a month by hand — a catch-up after downtime, or a correction. The mode is then ignored.
Running it twice is safe
⚠ The charge is dated to its PERIOD, not to the moment it was raised. That is what makes a re-run a no-op: the store replays a natural-key write only when every stored value matches, so a wall-clock stamp would make the second run a CONFLICT rather than a repeat. When it was actually written is still on the row as _record.created_at.
The charge id is derived from (contract, period, kind). A second run writes the same id, and the store recognises an identical row and does nothing.
⚠ Unless the rent changed. A contract whose rent moved after the first run produces a conflict for that tenant, not a silent overwrite — the recipe reports it and leaves the original charge alone. Raise the difference by hand, or void and re-raise.
Which contracts count
A contract is billed for a period when it started before the period ended and had not ended before the period began. An open-ended contract (no end date) qualifies on the second test automatically.
Both comparisons happen inside the store, on real date slots. ⚠ They cannot be done in the recipe — the condition operators coerce with Number(), and Number('2026-07-01') is NaN, so a date compared in a recipe silently matches nothing.
⚠ Status still matters. Only active contracts are read. A contract left active past its end date is excluded by the date test; one marked ended early is excluded whatever its dates say.
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.
limit
setting
=
200
period
setting
=
billing mode
setting
=
advance