Landscapt (CRM)

Contracts

Ongoing billing agreements — monthly amounts, seasonal overrides, sub-properties, and how signing and invoicing actually work.

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.

StatusWhat it means
DraftJust created. Nothing has been sent or agreed to yet — safe to edit freely.
SentThe 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).
SignedYou (or the client) confirmed the terms. Sets signed_at and signed_by, and fires the “Contract Signed” automation/Zapier trigger.
ActiveThe contract is live and, if Auto Generate is on, eligible for automatic monthly invoicing.
ExpiredPast 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.
CancelledTerminated before or at its end date. No further invoices generate.
Changing a signed contract's terms flags it — billing keeps running. If you actually change the monthly amount, the monthly-amounts grid, the invoice line items, the start/end dates, the client, the billing day / frequency, the mid-cycle start setting or the storms-outside-the-contract-dates setting on a contract that's already Signed or Active, the contract stays Signed/Active and the daily invoicing cron bills the new terms from then on. A "Changed since signed — needs client approval" banner appears on the contract until you click Client approved — clear flag (which re-stamps the signed date). The edit itself is recorded in the Audit Trail tab (the contract's tabs are Overview, Contract Details, Other Details, Jobs Under Contract, Included Services, Notes, Attachments and Audit Trail). Saving without changing any of those values — say, editing only the title, PO number or sales rep — doesn't flag anything.

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:

  1. 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.
  2. 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.

Why bill a month in advance? For recurring service, invoicing after the work is done means chasing payment on a moving target — the crew has already spent the labor and materials, and now collections is racing next month's visits. Billing a month ahead flips that: the client pays before the month's visits happen, so a late or disputed payment is caught before more service gets delivered on an unpaid account, not after. It's a cash-flow and collections-risk decision, not just a scheduling preference.

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.

FrequencyWhen it makes sense
WeeklyBills every 7 days, counted from the contract’s start date. Billing Day of Month doesn’t apply.
BiweeklyBills every 14 days, counted from the contract’s start date. Billing Day of Month doesn’t apply.
MonthlyThe 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.
QuarterlyBills every third month, counted from the contract’s start month, on the Billing Day of Month.
AnnualBills once a year, in the contract’s start month, on the Billing Day of Month — e.g. a lump-sum snow contract.
One-timeBills exactly once, on the first run on or after the start date; once any invoice exists on the contract it never bills again.
The amount is per invoice, not per month. The contract's monthly amount (and each month in the monthly-amounts grid) is what gets charged every time the contract bills, at any frequency — it isn't annualized or divided. A quarterly contract worth $3,000 a quarter should store $3,000, and an annual $12,000 contract stores $12,000. Quarterly and annual contracts can't double-bill: a manual Create Invoices click mid-period bills that period and the cron then skips it. Bill 1 Month in Advance only applies to monthly, quarterly, annual and one-time contracts.

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.

  1. 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.
  2. 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.
  3. Set the invoice line items to the services covered across the sites (e.g. "Weekly Mowing — 5 Properties", "Spring Cleanup — 5 Properties").
  4. 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.
  5. 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.
Sub-properties is a billing-scope flag, not an auto-aggregation feature. Turning it on tells the contract it's meant to cover every property on the client's account instead of issuing a separate contract per site — but the monthly amount you enter is still one flat number per month. It won't sum up per-property pricing for you, so double-check the combined total by hand whenever a property is added to or removed from the client.

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.

More in Landscapt (CRM)

Clients, Properties & Leads
Client accounts, commercial hierarchies, service properties, and the activity timeline that ties it all together.
Estimates & the Budget Engine
How an estimate is built, how its numbers are actually calculated, and how it becomes a job.
Jobs & Packages
The six job types, how a job's status differs from a visit's status, and how a Package template turns into a billed job.
Services & Pricing
The service catalog, bulk catalog price changes, and Price Adjustment runs — which prices seed new work and which ones actually bill.
The Dispatch Board
The daily scheduling screen crews and dispatchers live in — visits, crews, status, and how actual hours get calculated.
The Crew App
What a crew sees on their phone — the day's stops, clocking on and off, breaks, photos, and sending work back to the office.
Sales Meetings
Booking appointments per sales rep, the double-booking warning, and the split between a rep's direct reminder and the client-facing automation trigger.
The Waiting List
Jobs with a date range instead of a date, held for opportunistic scheduling — and how to actually get them dispatched.
Snow Jobs & Storm Dispatch
Storm events, priority dispatch, and the invoicing flow built specifically for snow.
Invoicing & Payments
How an invoice is born, how its status moves, and where the client's own PO number actually goes.
Communication Automations
How sequences, triggers, and events work — and how Automations differ from Sales Campaigns.
Forms & Lead Capture
Building, publishing, and sharing public forms — and what happens to a submission once it lands.
Document & Email Templates
Building the reusable emails and text messages that go out with invoices, estimates, campaigns and automations — blocks, merge tags, buttons, previews and test sends.
Tickets
Support and service tickets — where they come from, how they're worked, and how they connect to the rest of a client's record.
Damage Cases
Tracking property damage and warranty claims tied to a job — what a case captures, how cost rolls up, and a real current limitation in how it connects to a client record.
Warranties
Tracking the warranties you give on walls, walkways, patios and renovations — when each starts and ends, how claims tie back to it, and expiry reminders.
Commissions
Paying sales reps a percentage of what they sell — plans and rules by service and sale type, how earnings are calculated, and locking a quarter into a statement.
Injury & Near-Miss Cases
Reporting injuries, illnesses and near misses from the field, following them up in the office, tracking self-paid costs, supervisor alerts, and the Accident Free Workdays KPI.
Job Photos
Field photo documentation, annotation, and before/after comparisons — attached to a job site, not a person.
Online Payments & Stripe
How a client actually pays an invoice online, how Stripe Connect keeps every org's money in their own account, and how the platform takes zero cut.
Browse all guides
© 2026 Landscapt. All rights reserved.