Export Plumbing Field-Service Data for QuickBooks or Xero
Search for plumbing accounting software and the results blur together: an accounting vendor with a plumbing landing page, a field-service tool that hints at an integration without saying what actually moves. Here is the plain version. Opsler runs the plumbing side of the business — calls, estimates, jobs, invoices — and turns the invoice data into a QuickBooks-formatted or Xero-formatted CSV file that a person downloads and imports. No account gets linked to either product. The mechanism is the same one behind Opsler’s accounting CSV export feature; this page applies it to a plumbing shop specifically.
Pro is $25 per seat per month, no seat minimum, with a 14-day trial and no card. See what else is on each plan.
Plumbing Operations Software vs Full Accounting Software
A lot of plumbing bookkeeping software confusion comes from one word doing two jobs. Opsler is the system of record for the work — the leak call, the drain clear, the water heater swap. Your accounting software is the system of record for the money once it has already happened. Neither one should be trying to do the other’s job.
Opsler runs this
- Calls, estimates, work orders and invoices for drain work, water heaters, leaks and fixture jobs
- Direct part and labor cost captured per job
- QuickBooks-formatted CSV export (Pro)
- Xero-formatted CSV export (Pro)
- Free customer-list CSV on every plan, Budding included
Your accountant keeps this
- The general ledger, chart of accounts and trial balance
- Bank feeds and bank reconciliation
- Payroll runs and payroll tax
- Sales tax filing and remittance
- Corrections made in the books — they stay in the books, not in Opsler
See the full plumbing operations workflow, from the first call to a paid, exported invoice.
Follow Plumbing Revenue from Estimate to Job to Invoice
Plumbing job costing only works if the export is built from a real record instead of a Friday-afternoon reconstruction. Take a fifty-gallon water heater replacement:
Estimate approved
The customer reviews the water heater replacement estimate, verifies with a one-time code sent to their email, then signs. The approved line becomes the job.
Job performed
The plumber starts the job, pulls the tank and fittings from the assigned truck's stock, completes the swap and marks the job done.
Draft invoice
The job's parts and labor carry straight into a draft invoice — nobody retypes it that evening from a paper ticket.
Approved and paid
If office approval is turned on for that job, it sits in the approval queue first; otherwise it sends directly. The customer pays through their portal.
The estimate and the job stay in plumbing estimating and invoicing with office approval. This page picks up once the invoice is ready to leave Opsler.
Capture Labor, Parts and Job Profitability in Opsler
Plumbing job profitability comes from two real inputs, not an estimate of them. Parts consumed on the job deduct from the truck or van they were assigned to, valued at the cost price on your parts catalog — never the price billed to the customer. A technician’s hours on the job are valued at the hourly cost rate on their record, a number your team never sees on an invoice.
Invoice total − direct part cost − direct labor cost = gross job profit
Example: a main-line drain clear
Invoice total $340. A cleanout fitting and couplings cost $18 at catalog price, deducted from the truck. The technician logs 1.5 hours at a $28 hourly cost rate — $42 in direct labor. Gross job profit: $340 − $18 − $42 = $280.
Parts cost
Deducted at cost price from the assigned truck, van or warehouse location — the price you pay a supplier, not the price on the invoice.
Labor cost
Comes from the technician's work timer, a Pro feature. On the free Budding plan the timer doesn't run, so gross job profit reflects parts cost only.
Not included
Overhead, drive time between calls, vehicle and fuel cost, and permit fees are not modelled. This is a direct gross margin, not a fully burdened job cost.
There’s no per-job profit screen on the job record itself yet — the aggregate version, Gross Field Profit for the period, lives on the revenue dashboard. See how the numbers are built on per-job profitability.
Which Records Are Included in Each Accounting CSV Export?
Three formats, and today all three sit behind the same Pro-only gate on the export screen. Each pulls the same underlying invoices and payments; the difference is the column names, the date format and, for Xero, the account codes.
| Export | Contents | Plan |
|---|---|---|
| QuickBooks CSV | Invoice lines and a payments file, in QuickBooks Online's import shape | Pro |
| Xero CSV | Invoice lines and a bank-transaction file, with your account codes applied | Pro |
| Generic CSV | The same invoice and payment data in a plain, human-readable layout | Pro |
| Customer CSV | Name, phone, email, address, alternate phone, notes — your contact list, not the ledger | All plans |
QuickBooks CSV columns
| InvoiceNo | The Opsler invoice number, repeated on every line. |
| Customer | Customer name as it reads on the job. |
| CustomerEmail | Written empty today — see the note below the table. |
| InvoiceDate | MM/DD/YYYY. |
| DueDate | MM/DD/YYYY, falling back to the invoice date if no term is set. |
| Item(Description) | The line text — a water heater, a drain clear, a part. |
| Item(Qty) | Quantity on that line. |
| Item(Rate) | Unit price before tax. |
| Item(Amount) | Line total before tax. |
| TaxAmount | Tax on that one line, not the whole invoice. |
| Total | Invoice grand total, repeated on every row. |
| Status | Paid, Partially Paid, Void, or Unpaid for anything still open. |
| PaidDate | MM/DD/YYYY, or blank until something is paid. |
Xero CSV columns
| *ContactName | Customer name. Xero treats this field as mandatory. |
| EmailAddress | Written empty today — see the note below the table. |
| *InvoiceNumber | Xero will refuse a number it already holds. |
| *InvoiceDate | YYYY-MM-DD. |
| *DueDate | YYYY-MM-DD. |
| Description | The line text. |
| *Quantity | Quantity on that line. |
| *UnitAmount | Unit price, entered tax exclusive. |
| *AccountCode | Your Sales Account Code, set once in Opsler. Defaults to 200. |
| TaxType | Your tax name from Opsler settings, or NONE. |
| TaxAmount | Tax on that line. |
| Total | Invoice grand total, repeated on every row. |
One column ships blank on every export today: CustomerEmail on the QuickBooks file and EmailAddress on the Xero file are always empty, whichever plumbing customer the invoice belongs to. QuickBooks and Xero will match the customer by name instead — keep the customer name spelled the same way in both systems.
Generate and Review the CSV Before Import
A plumbing accounting CSV export is quick once the Xero account codes are set. The screen sits under Reports, then Accounting Export.
Choose the format
QuickBooks, Xero or Generic CSV.
Set the Xero account codes, once
A Sales Account Code and a Bank Account Code from your Xero chart of accounts — commonly 200 and 090. Opsler asks the first time you export to Xero and remembers them after.
Pick the date range
This Month, Last Month, This Quarter, This Year, or a custom range, matched against the invoice date.
Choose what and which status
Invoices, payments, or both. Then All Statuses, Paid Only, or Unpaid Only.
Opsler counts how many invoices and payments match your filter and what they total before the download button unlocks, so an empty range never produces a blank file by accident. Here is a redacted line from each branded format, both drawn from the same water heater invoice:
Sample: quickbooks-export-…-invoices.csv
InvoiceNo,Customer,CustomerEmail,InvoiceDate,DueDate,Item(Description),Item(Qty),Item(Rate),Item(Amount),TaxAmount,Total,Status,PaidDate
INV-2210,Fairview Row Homes,,08/03/2026,08/17/2026,Water Heater Replacement (50-gal),1,1180.00,1180.00,97.35,1277.35,Paid,08/03/2026Sample: xero-export-…-invoices.csv
*ContactName,EmailAddress,*InvoiceNumber,*InvoiceDate,*DueDate,Description,*Quantity,*UnitAmount,*AccountCode,TaxType,TaxAmount,Total
Fairview Row Homes,,INV-2210,2026-08-03,2026-08-17,Water Heater Replacement (50-gal),1,1180.00,200,TX Sales Tax 8.25%,97.35,1277.35One habit worth keeping from the first export onward: open the file in a spreadsheet and check the totals against the preview count before you import anything. Questions about a specific export? Talk to support.
Import Manually into QuickBooks or Xero
Both imports run inside the accounting product, not inside Opsler. Paths current as of 2 August 2026 — Intuit and Xero move their own screens without telling anyone.
QuickBooks import
- Settings, then Import Data, then Invoices
- Browse to the downloaded CSV
- Map the columns to QuickBooks Online’s invoice fields
- Map your tax codes to QuickBooks’ own
- Review the summary, then Start import
- Spot-check a couple of invoices against Opsler
QuickBooks Online is the target — Desktop and Enterprise use different tooling, and Opsler does not build a file for either.
Xero import
- Open Invoices from the Sales menu, then select Import
- Browse to the downloaded CSV
- Choose Tax Exclusive — Opsler writes the unit amount before tax
- Select Import, then open the drafts Xero creates
- Review and approve each draft — nothing posts until you do
- Bring the payments file in separately as bank transactions
Xero holds every imported invoice as a draft first. That review gate is Xero’s own design, and it catches a bad import before it reaches your ledger.
Reconcile, Correct and Re-export
A plumbing bookkeeping workflow that survives more than one month needs a repeatable routine, because Opsler keeps no record of what you’ve already sent to the books.
Correct at the source
Fix a wrong price or a missing line in Opsler, then re-export that range. Editing only inside QuickBooks or Xero leaves the operational record and the ledger telling two different stories.
Void in both places
A voided Opsler invoice exports with a Void status, but an invoice already posted to your ledger has to be voided there too — neither system tells the other.
Keep ranges from overlapping
This is the whole duplicate-prevention plan. Xero declines an invoice number it already has, and QuickBooks Online shows a summary before it commits, which is where you'd catch a repeated week.
Reconcile against the bank, not against Opsler’s revenue dashboard alone — that total adds every non-voided invoice dated in the period, including ones still unpaid, so filtering the export to Paid Only before comparing gets you closer to what actually cleared.
Run a Weekly Plumbing Bookkeeping Handoff
A plumbing shop runs a high count of small invoices — a fixture swap here, an emergency callout there — so plumbing bookkeeping works better as a fixed weekly habit than a scramble at month end.
The invoice side of this handoff is built in automated invoicing with office approval. This is not accounting advice — it’s the routine that keeps the export clean going into it.
Explore Plumbing Software by Workflow
Each page covers one part of the plumbing operation in depth, with the same verified product detail.
Plumber Software Overview
The full service workflow, emergency call to payment
Plumbing Business App
Office and field app, verified offline actions
Plumbing CRM
Customers, service locations and job history
Plumbing Estimating
Service estimates, options and approval
Plumbing Scheduling
Booking, the calendar and technician capacity
Plumber Dispatch
Day-of assignment, reassignment and job status
Plumber Invoicing
Completed job to sent invoice, offline included
Accounting Limitations and FAQs
A fit if
- You want plumbing job revenue and tax lines in your books without retyping every invoice
- You’d rather review a batch before it posts than trust a live connector
- Your bookkeeper can work from a weekly or monthly file
Not a fit if
- You need a live, two-way connection between Opsler and your ledger
- You expect Opsler to run payroll or file sales tax for you
- You need automatic duplicate detection rather than disciplined date ranges
The plumbing accounting software FAQ below covers what usually comes up once the columns above are clear.
No. Opsler generates a QuickBooks-formatted or Xero-formatted CSV file that a person downloads, checks and imports through QuickBooks Online's or Xero's own import screen. There is no live connection, no login shared with either product, and nothing automatic or two-way — a correction made afterward in the accounting software does not come back to Opsler, and nothing moves on a schedule while you're not looking.
QuickBooks, Xero and Generic CSV are all Pro plan features today — the record preview that unlocks the download button requires Pro regardless of which format you pick. A separate customer-list export (name, phone, email, address, alternate phone, notes) is on every plan, including free Budding, but that's your contact list, not invoice or payment data.
No. Opsler records the tax amount on each invoice line and the technician's logged hours, and hands both to your books in the export. Payroll, payroll tax, sales tax filing and remittance, and the general ledger itself stay with your accounting software or your accountant — Opsler is not built to replace any of them.
Keep your export date ranges from overlapping — that's the entire mechanism, since the file itself carries no memory of what you've already pulled. Xero will decline an invoice number it already holds, and QuickBooks Online shows an import summary before anything commits, so a second run of the same week gets caught before it lands. Logging the range you just exported takes ten seconds and saves an afternoon.
Only with their own login. The account owner and anyone with the Office Staff role — itself a Pro role — can reach the export screen; a field agent's default permissions cover jobs and customers, not reports. Plenty of plumbing shops have someone in the office run the export and email the CSV over, which needs no extra seat. If the bookkeeper wants to log in and pull it directly, that's a Pro seat at $25 a month.
Run the export on your own invoices
Pull a week, open the file, hand it to whoever does your books. If the columns don’t fit their workflow, you’ll find that out in a trial, not in year two.
Pro is $25 per seat per month, no seat minimum, with a 14-day trial and no card.
Ready to Run Your Business Without the Chaos?
Scheduling, dispatch, estimates, invoicing, customer portal, and a free branded website — start completely free, upgrade to Pro when you scale.
Free forever on the Budding plan. No credit card required.