Software and accounting guide
LMN: landscape estimates, crew time, job costs and accounting
LMN is landscape business software for budgeting, estimating, scheduling, job and time tracking, invoicing and job-cost reporting.
By Sam Yang · Updated
How LMN / Granum supports the workflow
Who this guide is for: Landscape owners, estimators and office managers checking whether planned work and crew time support the price charged.
Everyday uses
- Build estimates from the business budget and job requirements.
- Plan work and track crew time against jobs.
- Compare estimates with job costs and review invoicing.
How it connects to accounting: An estimate is a plan; the books need the costs actually owed or paid. Compare LMN time and job reports with payroll and supplier records. Keep employer costs above wages (labor burden), office and other overhead, and planned profit separate so an estimate is not mistaken for a recorded expense.
How to connect it and get the records you need
A built-in connection transfers the records its vendor supports. An API lets software read or exchange specific records directly. Browser automation may use the screens and reports your role can access when a direct connection leaves a gap. Its coverage and reliability need checking for the specific workflow. Start with the options available in your account, then check what actually reaches your books.
Existing supported integration
Confirm the enabled integration and its documented fields before relying on a transfer. This guide does not establish a general-purpose LMN financial API.
Product reports and separate payroll records
Use the reports that match the estimate, job period and time records. Keep original report settings and compare reported labor with payroll support.
Browser assistance
Inspect a selected estimate, crew-time entry or report setting when the records need clarification. Saved collection steps need confirmation in the current interface.
Start here: Compare one estimate with its actual hours and supported costs before using the result to price the next similar job.
Integration options and their limits
An API gives software direct access to supported records. Native reports are the files and reports available inside the product. Browser automation collects through the screens you can access. Choose the route that supplies the missing records, then check that it covers the accounts and dates you need. Reports may contain filters or omit rows. Browser work depends on permitted account access and can fail when screens change. Check record IDs, counts and dates whichever route you use.
Supported integration or data connection
- What it supplies
- Official LMN materials describe estimating and QuickBooks connections. The saved implementation uses downloaded reports and a checklist recording which files and dates were collected for this analysis.
- What to check first
- We have not verified a general-purpose supported API for the required job history, or whether any connection supplies all payroll costs.
Choose it when: Check the supported connection against the exact report and account before choosing it. Using exports does not establish that an API is unavailable.
Exports from Analytics or job history
- What it supplies
- The saved Analytics procedure offers Raw or Formatted files in CSV or Excel (XLSX) formats. The older Services and Time history reports use different selection controls from Job List.
- What to check first
- Check the current report limits and columns, and whether a cost report can be restricted to the dates needed.
Choose it when: Use the product report that answers the question. Keep its date settings and the labels that distinguish totals from detail rows before changing its format.
Permitted browser collection
- What it supplies
- A read-only browser can check the authorized report filters, complete the final export dialog and keep the downloaded file.
- What to check first
- A total on screen does not prove the export includes every record or all payroll costs. Screen controls and embedded report panels can change.
Choose it when: Use the browser to download the specified product report or investigate a particular missing report. Confirm that each file was received and can be read, not just that its button was clicked.
What to automate and what an accountant should review
Good work for automation
- Track the dates and rows in every file, including empty files.
- Keep project totals separate from job detail and compare hours without mixing hourly-rate definitions.
Keep a person on these decisions
- Decide which hours are productive job hours and which payroll costs belong in the comparison.
- Choose how overhead is recovered and confirm that the reports contain enough detail for the intended comparison.
Lessons from accounting and operations
Known problems and what to check
Compare estimated hours, job hours and payroll cost
Choose the report for the decision. An estimating rate helps price work. Payroll cost per productive hour is total payroll cost divided by the hours spent on job work in the same period.
Evidence basis: Saved Analytics and legacy Jobs report export sequences; current menu names and date limits require verification.
Check whether a supported connection can supply the required records before choosing a product report or widget export.
The question is whether an estimate funds overhead
Inspect the configured estimating and overhead assumptions, retaining their definitions rather than calling them actual employer cost.
The question is actual job labor economics
Bring the appropriate operational-hour report and payroll cost into the same set of records; keep paid hours and productive hours distinct.
Start with an API, connection or built-in report that your account offers and you have confirmed. An authorized browser session may collect records those routes leave out; test its coverage for the workflow. Still check the totals against the books and confirm that all relevant costs are included.
Pitfalls and when to pause
Date caps, mixing project totals with detail rows, partial exports and overhead allocation can change the answer. Configured hourly rate is not employer cost per productive hour.
How a plausible answer can go wrong
A parent subtotal added to its child rows inflates cost; a configured hourly rate used as payroll cost can misprice labor even when the arithmetic is correct.
Pause if you cannot confirm the account, permission, reporting dates or completeness of the records. Return the missing evidence for review. Do not fill the gap with an invented record, a balancing entry or an assumed zero.
When the result does not make sense
Actual labor dollars are below estimate while hours exceed budget
Check: Inspect the estimated and actual rate bases and compare hours independently.
Resolve the question: Show extra hours and rate differences separately. Obtain payroll records before claiming the work actually cost less.
Cost exceeds every visible subtotal when imported
Check: Check whether parent totals were added to project or job rows and whether overhead is inside or outside direct cost.
Resolve the question: Add one level of the report, such as individual jobs without their project subtotal. Check that direct-cost lines add up before adding any overhead that is not already included.
A successful download contains no recent work
Check: Check requested interval, retained row count, actual account access and whether the export parsed successfully.
Resolve the question: Keep empty files on the report checklist and find out why they are empty. After checking permissions and filters, collect the missing dates again instead of inserting zero hours.
Collect the records and check nothing is missing
- Analytics export
- Record whether Raw or Formatted was selected and keep the export settings. These choices can arrange totals and detail rows differently.
- Job History - Services and Job History - Time
- Divide the requested dates into ranges within the current report limit. A missing date range is not zero work.
- Job List and hierarchy
- Do not apply history-report assumptions to the Job List form. Do not add project totals to the job rows beneath them; choose one level to total.
Choose report from the product and date range; inspect report panel and all records included in the export. Keep project totals separate from job detail and add only one level and distinguish actual paid-hour, operational-hour and estimating rates.
Step-by-step collection notes
Dated saved collection procedure reviewed October 6, 2026. Verify the current account, interface, permission and available reports. Menu names may differ.
- For an Analytics widget, verify the dashboard and filters, wait for loading, then hover the required widget and select More actions > Export.
- Under DATA choose the authorized Formatted (.xlsx), Formatted (.csv) or Raw (.csv) file format.
- Review Keep attribute cells merged and Include sheet with export info, then click the confirmation dialog Export and retain the actual download and metadata.
- In the older Reports > Jobs route, 5 Job History - Services (Excel Format) and 6 Job History - Time (Excel Format) use Report By, Job, Start Date and End Date, then Submit. The observed history window cap was 100 days; verify the current limit.
- 7 Job List - (Excel Format) uses Job Type and Active Jobs Only or All Jobs, then Download File. It has a different form, with no date-range control in the saved procedure.
- Keep project totals separate from their job rows and add only one level and keep rate definitions separate before adding or comparing totals.
Checks before using the records
- Read back the chosen report from the product and actual applied date range.
- Retain complete export coverage and identify parent versus child rows.
- Label paid, operational and productive-hour rate definitions separately.
Fictional collection example
A fictional export includes a department total above employee detail. Adding both would count the same labor twice. Retain the hierarchy and sum one level. An estimating rate can then be compared with actual cost only after its hours and overhead basis are documented.
Invented teaching scenario, not a customer result or a reproduced vendor defect.
Capture the setup with the evidence
- Company, legal entity or account, report name, period, cash or accrual accounting basis, currency and timezone.
- Selected filters, status, page count, original record identifiers, record counts and totals used to check completeness.
- Collection time, source route and authorized role. Record browser and automation versions when using a browser.
- Original files and exceptions. Keep credentials, customer identifiers and financial artifacts private.
A browser version helps reproduce an interface issue. It does not validate the financial conclusion.
Practical workflows
Practical checks you can follow
Why can labor cost look under budget when the crew used more hours than planned?
The estimate and the job report may use different hourly rates. More hours multiplied by a lower configured rate can look cheaper without actually saving money. First compare planned and actual hours for the same work. Then check whether each rate includes wages, employer costs and overhead. Use payroll to confirm actual labor cost, and keep project totals separate from the job rows beneath them so the same work is not counted twice.
Separate extra labor hours from different hourly rates
- Collect estimated and actual job hours for the same work, keeping project and job IDs separate. If the cost file has no usable dates, a date filter cannot establish which period those costs belong to.
- Check what the estimate’s labor rate includes and how it covers office and other overhead costs. Official LMN guidance separates employer costs above wages (labor burden), overhead recovery and profit; they are not one interchangeable markup.
- Collect authorized payroll costs and paid hours for the selected dates. Keep hours spent on job work separate from total paid hours, driving, loading and other time.
- Calculate extra hours separately from differences in hourly rates. Estimate cost is estimated hours times the estimating rate. Check what rate the job report uses before treating its actual-dollar field as payroll cost.
- Show the planned versus actual hours first. Separately compare payroll cost with reported job hours. A lower total produced by a different configured rate does not establish a cost or productivity saving.
Bring to the review: A comparison of planned and actual hours, followed by clearly labeled estimating and job-report rates. Add payroll cost per paid hour and per productive hour only when the records support them.
Then decide: Investigate why the crew used more hours. Use verified labor cost per hour to review pricing and how overhead is covered.
Collect the full date range and count each job once
- The saved October 6 Analytics procedure checks dashboard and widget filters, then uses More actions > Export. Record whether Raw or Formatted was selected and keep the file’s export-information details.
- Confirm Export in the final dialog and keep the downloaded file. Opening a menu is not a completed export. Check that the downloaded spreadsheet can actually be opened and read.
- In the older reporting screens, Job History - Services and Job History - Time differ from Job List. The saved history procedure observed a 100-day limit; check the current limit and divide the needed dates into documented ranges.
- List each requested date range, downloaded file, row count and total, including empty results. Check permissions and filters before deciding an empty file means no work.
- Keep project totals separate from the job rows beneath them and add only the agreed level. Check for missing or duplicated dates between files before comparing them with the books.
Bring to the review: A file checklist covering all requested dates, report formats, row counts and the level being totaled. Empty or unreadable files remain visible.
Then decide: Collect the missing dates or fix the unreadable file first. Then investigate the difference between the job report and the books.
Worked example
Hours over budget, configured dollars below estimate
All records and amounts below are fictional teaching inputs. CSV files are spreadsheet-compatible text files. This example demonstrates the calculation, not a customer outcome or a reproduced software defect.
Actual job hours exceed estimated hours by 10. Yet configured actual labor dollars are $500 below estimated labor dollars. The implied estimating rate is $50 per hour and configured actual rate is $30. Verified payroll cost divided by 60 paid hours is $37.50; divided by 50 productive job hours it is $45. These are explicitly invented teaching bases, not LMN default rates.
What the CSV columns mean
- kind: Distinct teaching measure
- amount: Fictional value; units depend on kind
- Hours over estimate
- 10 hours
- 50 actual job hours less 40 estimated
- Configured dollar difference
- 500 USD
- Estimated dollars less configured actual dollars
- Payroll cost per paid hour
- 37.5 USD/hour
- Payroll cost divided by paid hours
- Payroll cost per productive hour
- 45 USD/hour
- Same payroll numerator divided by job hours
Inspect lmn-labor-bases.csv
kind,amount estimated_hours,40 actual_job_hours,50 estimated_labor_dollars,2000 configured_actual_dollars,1500 verified_payroll_cost,2250 paid_hours,60Download this CSV
Next decision: Inspect the operating cause of the hours overrun, then choose the payroll/hour basis relevant to pricing. Do not equate the $500 configured difference with savings.
Run the example locally
Save the CSV files, expected-results.json and reproduce.mjs in one folder. With Node.js installed, run the command below. It calculates the checks from the CSV bytes and rejects a changed input or expected result.
node reproduce.mjs expected-results.json
No software login, customer records or API key is required.
AI prompt for collecting records without changing them
Replace the bracketed scope before use. This prompt collects evidence; it does not permit edits, approvals or accounting execution. Requesting an emailed report is a separate account action and requires explicit authorization.
Collect read-only evidence for LMN / Granum to answer [financial question]. Confirm [company], [account/entity], [period], [basis], [currency] and [allowed reports]. Choose native report and date range; inspect the report panel, including any embedded frame that contains its visible values and complete export population. Preserve hierarchy once, then foot totals and distinguish actual paid-hour, operational-hour and estimating rates. Retain original files, complete record IDs, counts, filters, collection timestamp and exceptions. Date caps, report hierarchy, partial exports and overhead allocation can change the answer. Configured hourly rate is not employer cost per productive hour. Stop if the source or scope is uncertain. Do not post, match, reconnect, delete or change settings. Return the evidence for financial review; do not claim the books are correct. Do not approve, submit payroll, pay, transfer, refund, send messages, invite users or accept terms. Stop at any login, MFA or credential prompt and hand back to the account owner. Store files only in [approved private location]. Do not paste customer artifacts into public tools. Use only preauthorized collection actions. Request an emailed report only when its delivery is explicitly authorized; otherwise ask the account owner to supply the file.
Next decision
What can you decide from these records?
Show the owner which costs and hours produce the proposed rate, and whether overhead is included. If a report lacks a needed input, name what is missing rather than presenting a precise hourly answer.
Compare the same records, accounts and reporting dates. List costs or payments you cannot yet verify before using the result for pricing, cash planning or month-end review.
Read the next finance check →References behind these workflows
Each product reference supports only the features and limits described beside that source. Level's checks and fictional calculations are separate from what the vendor documents.
Read the product and workflow references with their scopes and review datesExplore the financial diagnostic examplesSources and scope
Base product-reference scopes were reviewed . The collection procedure retains its own review date in the dated sequence above. Individual source rechecks are dated with their citations. Operator decision guidance was reviewed 2026-10-09. The references below support their stated product scope, not every observed interface detail. It is not a vendor capability certification, a measured customer result or an independently reconciled account. Verify current features and what your plan includes in the account you use.
- LMN estimating FAQ: cost, overhead and hour assumptions
Product reference: Estimating cost, overhead and hour assumptions.
- LMN by Granum product overview
Product reference: Landscape budget-based estimating, scheduling, time tracking, invoicing and job-cost reporting product scope; golmn.com redirects to this current official page. Reviewed .
- LMN overhead and labor-burden definitions
Product reference: Indexed official guidance separates burden, overhead cost base and profit; direct retrieval encountered an access challenge on review day. Reviewed .
Workflow reference: Indexed official guidance separates burden, overhead cost base and profit; direct retrieval encountered an access challenge on review day. Reviewed .
- LMN reports guide
Product reference: Indexed official report catalogue includes job and payroll report families; direct retrieval encountered an access challenge. Reviewed .
Workflow reference: Indexed official report catalogue includes job and payroll report families; direct retrieval encountered an access challenge. Reviewed .