HVAC, plumbing, and electrical contractors buy parts on purchase orders from a dozen supply houses, and every one of those lines has to land against a job before the margin on that job is real. PurchaseOrders reads any supply house PO with AI and returns the vendor, PO number, and each part with its quantity and unit price as clean rows. Upload one below and get spreadsheet data in about ten seconds.
Submit your purchase orders
Drop documents here, or click to file
Up to 50 files per batch
Uploading...
A technician picks up parts at the counter, a coordinator raises a PO with a distributor, and a week later the paperwork lands in the office as a PDF or a photo from a truck. To know whether the job made money, someone has to read every line off that purchase order and tie it back to the work order. That step is manual, it happens late, and it is where job costing quietly falls apart.
Ferguson, Johnstone Supply, R.E. Michel, Baker Distributing, SiteOne, Grainger, and the local counter each lay out their orders their own way. A template built for one is useless for the next, so reading them stays a manual job across every vendor you buy from.
If a PO line is not coded to the work order it belongs to, the material cost sits in a general bucket and the job looks more profitable than it was. Missing part-level detail is the single most common reason field service job costing is wrong.
A tech snaps a picture of a counter ticket on a phone and sends it in. It is an image with no text to copy, so it gets keyed by hand at the office or, on a busy week, never captured at all.
Supply house paperwork piles up and gets processed in a batch at month end, long after the job closed. By then nobody remembers which truck roll the parts were for, so the coding is a guess.
PurchaseOrders reads each supply house document by meaning rather than by fixed position, so a distributor you have never uploaded before works on the first try. It returns the header and the full parts table as consistent columns your office can cost against the right job.
Every line comes back with its part number, description, quantity, unit of measure, unit price, and line total, which is exactly the detail a job cost needs to be accurate instead of approximate.
Broadline distributors, brand counters, and the regional supply house are all read the same way with no template to build, so adding a new vendor costs nothing to onboard.
OCR plus AI reads a photographed counter ticket or a scanned order with no text layer, so the paperwork that comes off a truck becomes structured rows instead of a shoebox.
Run up to 100 purchase orders through a single bulk upload, or pull the data through the API, so the office clears a backlog in one sitting rather than one document at a time.
Most field service offices want the parts lines in a sheet first: the purchase order PDF to Excel converter and the PO PDF to CSV converter return one clean row per part, and the purchase order to QuickBooks route formats it for the books most contractors keep. Because costing happens line by line, accurate purchase order line item extraction is what makes job margin real, and a month-end stack clears through bulk purchase order upload. Contractors running project work rather than truck rolls should start with purchase order extraction for construction, teams servicing buildings with property management extraction, and developers wiring it into a field service platform with the purchase order API.
What each route actually does with the parts lines on a supply house purchase order.
| PurchaseOrders (capture layer) | Office keys it by hand | Field service platform alone | |
|---|---|---|---|
| Reads any supply house layout | Yes, AI reads any layout | A person reads it | Only vendors it integrates with |
| Captures every parts line | Yes, one row per part | If there is time at month end | Only after entry or integration |
| Works on a photo of a counter ticket | Yes, OCR plus AI | Retyped by hand | Usually no |
| Assigns parts cost to a job | No, you assign it in your system | The office does it | Yes, that is its job |
| New distributor | Works on first upload | Keyed by hand | Needs an integration or manual entry |
| Setup to start | None, self-serve | None, already manual | Onboarding project |
| Pricing | Free to try, then per document | Office hours that scale with volume | Per technician per month |
PurchaseOrders is a document extraction tool, not field service management software. It does not dispatch technicians, create work orders, hold job budgets, or calculate job costs. Platforms such as ServiceTitan, Housecall Pro, Jobber, or FieldEdge do that, and the books usually sit in QuickBooks. This tool feeds them accurate line-item data off supply house purchase orders so the job costing they produce starts from real parts numbers.
Take one purchase order and get its parts lines ready to cost against a job.
Drag in the PDF, the scanned order, or the photo a technician sent from the truck. Batch the whole month-end stack if the paperwork has piled up.
Tip: Start with a multi-part order where the line detail actually matters.
Vendor, PO number, dates, and each part with its part number, description, quantity, unit of measure, unit price, and line total come back as columns you check on screen.
Export to Excel or CSV for your accounting system, or pull JSON through the API into your field service platform, then code each line to the work order or job it belongs to.
They upload each purchase order to an AI extraction tool that reads the vendor, PO number, dates, and every part line with its quantity and unit price, then export to Excel, CSV, or JSON for the accounting or field service system. The office codes each line to the job. It replaces keying orders by hand, which is the step that usually slips to month end.
Material is a large share of the cost on most service and install jobs, and it only counts if it is tied to the right work order. Capturing each part with its quantity and unit price gives the office the detail to cost the job accurately, instead of dropping a single order total into a general materials bucket where job margin gets distorted.
No. It does not dispatch technicians, create work orders, hold job budgets, or calculate job costs. Those are field service platform features and you should keep using them. PurchaseOrders is the data-capture layer in front: it reads the supply house purchase orders those platforms cannot ingest and hands back clean line data you import.
Yes. A photo is an image with no text layer, so copy and paste returns nothing. The tool runs OCR plus AI to read the image, rebuild the parts table, and return structured rows. Accuracy depends on how legible the photo is, and you review the fields on screen before exporting, so a blurry line gets caught rather than costed wrong.
Yes. Output is quoted, consistent-header CSV, or Excel and JSON, formatted so it can be imported into QuickBooks, which is where most HVAC, plumbing, and electrical contractors keep the books. You map the columns to your import template once and reuse it, so supply house orders flow in without manual entry.
Yes. Bulk upload takes up to 100 purchase orders in a single pass, so an office that has let supply house paperwork pile up can clear the backlog in one sitting rather than one document at a time. Developers can also pull the same data continuously through the API instead of uploading by hand.
Capture every part line and price.
Committed cost on project work.
Clear a month-end stack at once.
Convert supplier PDFs to Excel.
POs for buildings you service.