1. Home
  2. Features
  3. Inventory & Purchasing
Inventory & Purchasing · Built into RootControl

From "we're running low" to "stock's on the shelf."

Per-location on-hand with moving-average cost. Lot tracking for chemicals and fertilizer. A vendor catalog with preferred-supplier preferences. Purchase Orders that bump inventory the moment you mark them received. And one button on the Supply Forecast that drafts the POs you need, grouped by the vendor that should supply them.

Per-location on-hand Moving-average cost Lot tracking Vendor catalog Draft POs from forecast Receive → ledger
Why landscape companies lose money on materials

Three places stock falls through the cracks.

If your supplier-bill stack is what keeps your stockroom honest, you're already late. Three patterns repeat across every landscape shop that adds a serious treatment program, plant material, or hardscape mix to the menu.

You only know you're out when the truck's loaded.

The forecast lives in someone's head. Crews leave HQ short a bag of pre-emergent or two pallets of pavers, lose a half-day driving back, and the job runs late on top of the missed margin.

You can't tell which supplier you paid.

"Vendor" is a free-text string scattered across years of supplier invoices. Same vendor spelled four ways, no priority ordering, no notion of who should supply what — so every reorder is a phone-call exercise.

Receiving is paperwork, not data.

The dock stamps a packing slip; nothing flows to your books. Moving-average cost drifts, lot expiry on regulated product goes untracked, and the regulator-grade paper trail your applicator license depends on quietly thins out.

The closed loop

From shortage row to stock on the shelf, in five steps

One queue carries demand from the Supply Forecast all the way to a stockroom update. Every step is auditable; every step is safe to retry.

1

The Supply Forecast surfaces the shortage

For every treatment program, the forecast rolls demand into an annual per-product total and subtracts what's on hand.

  • Rate strings like "oz / 1000 sqft" turn into quantities automatically
  • Anything the parser doesn't recognise gets flagged for catalog cleanup
2

One click drafts the POs, grouped by preferred vendor

"Draft POs" creates one draft Purchase Order per preferred vendor, plus a single "no-vendor" bucket for products without a supplier preference.

3

Review, set costs, mark sent

Edit unit cost and quantity while the PO is a draft; once sent, only the delivery location stays editable.

  • Cancel is available at any step before received
  • Corrections after sent happen via cancel and redraft, not in-place edit
4

Mark received: inventory bumps in the same step

Marking a PO received writes one stock-movement per line, bumps on-hand at the destination, and recomputes moving-average cost.

  • Destination resolves in order: receive-time override, PO delivery location, then your HQ yard
5

Lot & expiry get carried through the lifecycle

For chemicals and fertilizer, lot number and expiry ride along on every ledger entry, receive through crew application.

  • The expiring-lots view flags anything within a window you set (30 days by default)
What's in the module

The pieces that close the loop

Each piece is wired to the next so there's no manual hand-off between forecast, ordering, receiving, and the stock ledger.

Per-Location Stock Ledger

Every location (HQ, satellites, trucks) holds its own on-hand quantity and rolls into the moving-average cost. Receive, transfer, consume, return, and adjust movements form the audit trail. Nothing edits an existing entry; the ledger only ever adds new ones.

  • Every org gets an HQ yard on day one, so the first receive never fails
  • Grow from one yard to several without stranding existing stock
  • Moving-average cost recomputes on every receipt
Professional+

Lot Tracking & Expiry Alerts

Regulated product (chemicals, fertilizer) carries lot number and expiry through every ledger entry from receive to consume. Foremen get an alert when a lot crosses the expiry window so product doesn't go off-spec on your shelf.

  • Lot inputs only show for fertilizer and chemicals; other receives stay clean
  • The lot follows the product from receive to the crew's application record
  • One alert per expiring lot, routed to foremen, not the whole office
Professional+

Vendor Catalog & Preferences

A real vendor record — not just a free-text string on an invoice. Contact info, payment terms, QuickBooks link, and per-product preferences with priority ordering. The catalog is the source of truth for who should supply what.

  • Duplicate vendor names get caught before they're saved
  • Priority ordering decides which vendor auto-drafted POs go to
  • Your existing spend view keeps working exactly as before
Professional+

Purchase Orders

Draft, sent, received, cancelled. You can't skip "sent", you can't edit lines on a sent PO. Receive is the only step that touches inventory — cancel before that point and nothing in the stockroom moves.

  • Auto-generated PO numbers that never collide
  • Source badge shows hand-built vs. auto-drafted at a glance
  • Receive is all-or-nothing: every line bumps inventory or none do
Professional+

Draft POs from Supply Forecast

One click on the Supply Forecast page groups every shortage row by its preferred vendor and creates one draft PO per vendor, plus a no-vendor bucket. Quantities roll up annually so you get one PO per vendor per program, not a dozen tiny ones per round.

  • One PO per vendor per program, not a dozen tiny ones per round
  • Products without a preferred vendor land in one bucket to assign later
  • Pack-size rounding (bag, pallet, ton) applied before the annual sum
Professional+

Vendor Backfill from Invoices

Most shops arrive with years of supplier invoices where "vendor" is a free-text string and no managed record exists. One pass walks every unlinked invoice, matches against your existing vendors regardless of capitalisation, and (optionally) creates stub records for unmatched names.

  • Matches years of invoices to vendors, whatever the capitalisation
  • Auto-create off by default; flip it on for the fastest backfill
  • Result panel shows created, linked, and unmatched names for review
Professional+

Fertilizer Auto-Decrement Bridge

Link a fertilizer product to its inventory SKU. When a crew completes a fertilizer application, RootControl writes one stock-consume entry per linked product line. A re-save of the completed record can't double-decrement; a cancel restores the stock automatically.

  • Re-saving a completed application can never double-decrement
  • Cancelling an application restores the stock automatically
  • Org-level toggle, on by default, for shops with a separate stockroom
Professional+

Low-Stock Notifications

Set a reorder point per product. When on-hand crosses below that line for the first time, one notification fires to your foremen. No re-firing on every page reload, no spam if the stock dips and recovers.

  • Fires once on the way down, not on every page load
  • Stock recovering above the threshold resets the alert for the next dip
  • Same stream as expiring-lot alerts, so foremen see everything in one place
Professional+

Want to see the Supply Forecast build a draft PO from your own catalog? Book a demo.

Quiet correctness

The guardrails you don't see until they save you

Most of inventory's value is what doesn't go wrong. These are the rules that keep the ledger honest when two people, two crews, and a flaky barn Wi-Fi connection all touch it at once.

What the system enforces, every write

  • No double counts: tap twice or lose signal mid-save, you still get exactly one entry.
  • Never negative: two crews grab the same product at once; one succeeds, one is told the stock isn't there.
  • Your org only: nobody outside your company can see, or even probe for, your locations, products, lots, vendors, or POs.
  • Costs stay in the office: crews can check stock and receive on the truck, but never see your cost basis.
  • All-or-nothing receives: if any line fails, the whole receive rolls back and nothing in inventory moves.
  • Compliance writes first: if stock bookkeeping hits a snag, the regulatory record still commits.

Inventory is a place where soft-failures compound silently. Every guardrail above is backed by a test that proves it works under the failure case, not just the happy path.

FAQ

Inventory & Purchasing FAQ

How does the Supply Forecast turn into Purchase Orders?

From any treatment program with assigned properties, the forecast rolls round-by-round demand up to an annual per-product total, subtracts what's on hand, and surfaces the shortage.

  • One click on Draft POs groups shortage rows by each product's preferred vendor (lowest priority wins): one draft PO per vendor, plus a single no-vendor bucket.
  • Quantities are rolled up annually, so you don't get many tiny POs for the same product across rounds.
  • You review, set unit cost on each line, mark the PO sent, then mark it received.

The receive step writes the stockroom updates in the same operation.

What does lot tracking actually do?

When you receive a chemical or fertilizer product, the receive form asks for lot number and expiry date.

  • Both are stored on the receipt, and from then on every stockroom entry tied to that lot carries the identifier.
  • The lot rides along on the consume entry when a crew logs an application that pulls from the linked product.
  • An expiring-lots view surfaces receipts whose expiry falls within a window you set (30 days by default), and a notification gives foremen a heads-up before product goes off-spec.
How does the fertilizer auto-decrement work?

Link a fertilizer product to its inventory SKU through the "Inventory bridge" picker on the office-side product form.

  • When a crew completes a fertilizer application, RootControl writes one stock-consume entry per linked product line.
  • A re-save of the completed record can't double-decrement: the system spots the repeat and nothing changes.
  • If the application is later cancelled, a compensating entry restores the on-hand.

Shops that run a separate stockroom can turn the auto-decrement off entirely.

Can I import historical vendors I've been using for years?

Yes. Most landscape companies arrive with years of supplier invoices where "vendor" is just a free-text string and no managed record exists.

  • The "Backfill from invoices" button on Vendor Catalog walks every supplier invoice that has a name but no managed-vendor link.
  • It matches against your existing vendors regardless of capitalisation, and optionally creates stub records for unmatched names.
  • The result panel reports created vs. linked counts plus any unmatched names so you can review.
Does inventory work without a treatment program?
Yes. The core ledger — locations, on-hand, moving-average cost, stock movements, lot tracking, vendor catalog, Purchase Orders — is independent of treatment programs. Treatment programs feed the Supply Forecast, which is one of two ways to draft POs. The other is creating a manual PO directly from the Purchase Orders page, which works for any product. Inventory & Purchasing is on the Professional and Enterprise plans.
What happens if I cancel a PO after I've already marked it received?
"Received" is final: once a PO is marked received you can't switch it back. If you receive one by mistake today, you correct the stock with a manual adjustment entry. A one-click way to reverse a received PO is coming.
Related capabilities

Explore more of RootControl

Get Started

See the loop close in a 30-minute walkthrough

Bring a treatment program you actually run and a vendor you actually use. We'll draft the POs, mark them received, and show you the stock-movement ledger entries before the call ends.

Prefer to explore on your own? Start your 15-day free trial, no charge today.