Contracts
Ongoing billing agreements — monthly amounts, seasonal overrides, sub-properties, and how signing and invoicing actually work.
On this page
What a contract is
A Contract (Landscapt → Accounting → Contracts) is the ongoing billing agreement behind recurring service — a monthly amount, a billing day of month, whether it bills a month ahead of service, and whether it renews automatically. It's separate from a Package, which defines the service cadence template, and from the Invoices the contract actually generates — see the See also section below.
Each contract belongs to one client and is built from three pieces:
- Invoice line items — one or more entries pulled from the services catalog (or typed as a custom line) that set the wording on every invoice this contract generates. Both billing paths use it the same way: the lines become the invoice description, and the invoice's single line item is named after them (several lines are joined with commas). With no lines, the contract title is used. The wording is set once per contract and is the same on every invoice; only the amount can vary by month.
- A billing frequency and amount — Monthly contracts get a twelve-field grid, one per calendar month (January–December), each the amount of that month's invoice. "Auto Fill" copies January's amount into all twelve if you want a flat rate; otherwise leave months at $0 to skip billing entirely in that month. The line above the grid shows what the contract bills in a year. Every other frequency (Quarterly, Annual, Weekly, Every 2 weeks, One time) has a single Amount per invoice field instead — see Billing frequency options.
- Billing settings — billing day of month, whether to bill a month in advance, payment type, PO number (copied onto every invoice the contract generates, so the client's accounts-payable team can match it), and two switches: Auto Generate (eligible for the automatic invoicing cron) and Active.
A contract's end date can't be earlier than its start date — a save with reversed dates is rejected.
Status lifecycle & signing
Status is a dropdown on the contract itself — there is no e-signature integration behind it. Marking a contract "Signed" is a manual confirmation, not a document that gets sent out for a client to click and sign.
| Status | What it means |
|---|---|
| Draft | Just created. Nothing has been sent or agreed to yet — safe to edit freely. |
| Sent | The proposal went to the client. Also where a signed contract lands automatically if you edit its price, dates, or line items (see the callout below). |
| Signed | You (or the client) confirmed the terms. Sets signed_at and signed_by, and fires the “Contract Signed” automation/Zapier trigger. |
| Active | The contract is live and, if Auto Generate is on, eligible for automatic monthly invoicing. |
| Expired | Past its end date. The expiry-warning email/notification fires 3 days before this, for any signed or active, non-auto-renewing contract (cancelled, expired and draft contracts get no warning). A retry never posts a duplicate in-app notification. |
| Cancelled | Terminated before or at its end date. No further invoices generate. |
Because the signed-date is a tracked field, it's also one of the Zapier/automation triggers — "Contract Signed" fires the moment a contract's status is set to Signed, which is what makes contract signing a distinct, reportable event rather than just a status label.
Billing mechanics
Two paths create an invoice from a contract, and both use the same logic:
- Automatic, via a daily cron. Every contract that is Active, has Auto Generate on, and whose Billing Day of Month matches today (or the last day of the month, if the configured day is higher than the month has days) gets an invoice created.
- Manual, via the "Create Invoices" bulk action on the Contracts list — select one or more contracts and bill them right now, ignoring their configured billing day (but not the active/amount checks below).
Both paths follow the same rules:
- The invoice amount comes from that calendar month's entry in the monthly-amounts grid; if a month was never explicitly set, it falls back to the contract's flat monthly amount. A month explicitly set to $0 is skipped — no invoice is created for it.
- Bill 1 Month in Advance shifts everything one calendar month forward: the invoice is dated and amount-matched to next month instead of the current one. This is what lets a contract invoice in, say, late June for July's service.
- Idempotency is enforced per contract, per calendar month — a contract already invoiced this month is skipped, so re-running the cron or clicking Create Invoices twice can never double-bill. A contract invoice later consolidated or merged into another invoice still counts as billed.
Starting mid-cycle. Each contract has an If Start Is Mid-Cycle setting. Start on first full cycle (the default) simply begins at the next regular billing day. Prorate first period also bills the partial stretch from the start date to the day before that first billing day, as its own invoice: the period's amount × days in the stub ÷ days in the full cycle, rounded to the cent (a contract at $1,000 a month starting Oct 20 with billing day 1 bills $387.10 for Oct 20–31, then $1,000 from Nov 1). The invoice line names the stub period and shows the formula. It's generated once — by the cron or Create Invoices, whichever comes first — and applies to Monthly, Quarterly and Annual contracts (a contract starting exactly on a billing day has no stub, and weekly, biweekly and one-time contracts never prorate). A monthly contract that starts before its billing day (say Oct 20 with billing day 25) bills Oct 20–24 as the stub; quarterly and annual contracts starting before their billing day simply bill their first full cycle on that day. Turning proration on for a contract that has already started regular billing doesn't bill a stub after the fact. The stub uses the starting month's entry in the monthly-amounts grid when there is one, otherwise the flat amount. The stub invoice is dated no later than the last day of its period (the day before the first billing day), not the day it is created, so it never shares a date with that billing day's regular invoice.
Billing in advance with a mid-month start. With Bill 1 Month in Advance on, a contract that starts after this month's billing day (billing day 1, start Oct 20) is picked up on the next run for the month it covers, so its first full month (November) is invoiced instead of being skipped until the following billing day.
A stop worked by two crews counts as one visit used against a contract's included visits. Both crews' hours still count toward the job's labor cost.
Billing frequency options
Every contract has a Billing Frequency, and both billing paths (the daily cron and Create Invoices) honor it. Set it in the contract's Contract Details tab, at the top of the Invoice Details settings; new contracts default to Monthly. It can also be set through the API, the MCP connector and the contract CSV import. It's shown in Contract reports, as the Frequency column on the Invoices list, and in the contracts list's Amount column ("$3,000.00 / quarter").
For any frequency other than Monthly, the twelve-month grid is replaced by one Amount per invoice field and a line saying when the contract will bill: the months for Quarterly and Annual ("Invoices in Jan, Apr, Jul, Oct", counted from the start date — or the signed or created date when there's no start date), the 7- or 14-day cadence for Weekly and Every 2 weeks, and the first date for One time. Settings that don't apply are hidden: Weekly and Every 2 weeks have no Billing Day of Month, Bill 1 Month in Advance or mid-cycle proration, and One time has no Billing Day of Month or proration. Switching frequency carries the amount across (a flat monthly grid becomes the single amount and back; a seasonal grid is kept as it is). If a non-monthly contract created through the API or import had different amounts for some months, the dialog says so, and saving replaces them with the one amount.
If a billing day is missed (an outage, or the cron failing that morning), the contract is billed later in the same period rather than skipped — for Weekly, Biweekly, Monthly, Quarterly and Annual contracts alike, as long as that period hasn't already been invoiced and the contract existed on its billing day. A contract whose client is cancelled, inactive or lost (or deleted) stops billing, matching the visits, which also stop; reactivating the client resumes billing on the next cycle.
| Frequency | When it makes sense |
|---|---|
| Weekly | Bills every 7 days, counted from the contract’s start date. Billing Day of Month doesn’t apply. |
| Biweekly | Bills every 14 days, counted from the contract’s start date. Billing Day of Month doesn’t apply. |
| Monthly | The default and by far the most common — matches how most maintenance and package programs are sold; bills on the Billing Day of Month. The only frequency with the 12-month grid, so it’s also the one for seasonal contracts whose months bill different amounts. |
| Quarterly | Bills every third month, counted from the contract’s start month, on the Billing Day of Month. |
| Annual | Bills once a year, in the contract’s start month, on the Billing Day of Month — e.g. a lump-sum snow contract. |
| One-time | Bills exactly once, on the first run on or after the start date; once any invoice exists on the contract it never bills again. |
Seasonal contracts with different monthly amounts. A contract that bills, say, April through November at different amounts stays on Monthly: enter each billed month's amount in the grid and leave the other months at $0. It sends eight invoices a year, each for its own month's amount. Because no single amount describes it, the contracts list, the client's contract badge and the snow-billing contract picker show its yearly total instead — "$4,100.00 / yr · 8 months (varies)". A seasonal contract with the same amount every billed month reads "$500.00 / month · 8 months".
Exporting. The contracts list's Export button writes Billing Frequency, Billing Day (blank for weekly, every-2-weeks and one-time contracts), Amount per invoice ("varies by month" for a seasonal grid with different amounts) and Yearly Total (blank for one-time contracts).
Ending or cancelling a contract
While a contract is Signed/Active its jobs' visits are billed inside the contract price and don't auto-invoice. Once the contract is Cancelled, Expired, switched inactive or past its end date, completed visits on its linked jobs bill like normal per-visit work, on the client's usual invoicing frequency. When you cancel or end a contract that has linked jobs, the app tells you how many will now bill per visit before you confirm.
Cancelling or deleting a contract cancels its upcoming visits. Visits on its linked jobs from today on that are still scheduled or dispatched and haven't been started are marked Cancelled, with a note on each. A visit a crew is clocked in to, and visits already skipped or completed, are left as they are. If some visits can't be cancelled you get an error saying how many — cancel those from the Dispatch Board.
Snow contracts and storms outside the dates. A contract with a linked snow job has a Storms outside the contract dates setting under its start and end dates. With Bill per event (the default), a storm visit dated before the start date or after the end date is billed per event in Snow Invoicing. With Included in the contract, those storms are covered by the contract price too (a cancelled, expired or inactive contract still covers nothing).
Contract templates
If you set up many contracts the same way — the same name, invoice description lines, monthly amounts and billing terms — save that setup as a template instead of retyping it.
- Save one. Fill in the Details tab the way you want it, then click Save as template at the top of the tab and give it a name. A template stores the contract name, invoice line items, default service, the twelve monthly amounts, billing day of month, bill-a-month-in-advance, payment type, auto-generate invoices, and include sub-properties. It does not store the client, the start and end dates, or the billing frequency — applying a template keeps whatever frequency the contract already has.
- Use one. On a new contract, choose it from Start from a template…. The form fills in and you can change anything before saving.
- Editing and deleting. A contract keeps no link to the template it came from, so deleting a template (use Delete template after picking it) never changes existing contracts.
Worked example: multi-property commercial contract
A property management company owns 5 sites and wants one contract, one monthly invoice, and a summer-heavy price — full mowing season rate April–October, a reduced fall/winter rate the rest of the year.
- Add each of the 5 sites as a Property on the ONE client record first (More menu → Add Property, on the client's detail page — see the Clients guide, linked below). This is a single client billed as one account across multiple addresses, not several separate client records — if the sites actually need independent jobs, invoicing, or estimates instead of one shared bill, that's the parent/child client hierarchy (sub-accounts) instead, a different feature covered in the Clients guide.
- Create the contract against that client. In Contract Details, check Include Sub Properties by Default — this is on by default and documents that the contract covers every property on the client's account, not just one address.
- Set the invoice line items to the services covered across the sites (e.g. "Weekly Mowing — 5 Properties", "Spring Cleanup — 5 Properties").
- In the monthly-amounts grid, enter the combined total for all 5 sites in each month — April through October at the full mowing-season rate, November through March at the reduced rate. There's no per-property line-item breakdown on the invoice itself; the grid holds one number per month, so that number needs to already be the sum across every site the contract covers.
- Set Billing Day of Month and, if the management company expects to be invoiced ahead of each month's service, turn on Bill 1 Month in Advance.
See also
- Jobs & Packages — a package defines the recurring service cadence and visit counts; a contract defines the ongoing billing terms on top of it.
- Invoicing — what a contract actually produces: the draft invoices created by the cron or the manual "Create Invoices" action.
- Clients — adding properties to a client, and when to use the parent/child (sub-account) hierarchy instead.
Good to know
- Why Create Invoices skipped a contract. When Create Invoices doesn't create an invoice it says why: already billed, a draft or unsigned contract, a contract that hasn't started, a $0 month, not a billing month, or an inactive client.
- Prorated first invoice. The prorated first-period invoice's due date counts from its own invoice date, so its terms read correctly.
- Visit usage. The Used counts against a contract's included visits leave out visits on deleted jobs.