Blog

How to Automate PO-to-Invoice Matching Without Building Templates

February 23, 2026

Every AP team knows the drill. An invoice arrives, and someone has to open the corresponding purchase order, then check: Does the vendor name match? Does the PO number match? Do the line items, quantities, and amounts line up? Multiply that by hundreds of invoices per week from dozens of vendors—each sending a different format—and you have a process that eats hours before anyone can even start approving payments.

Template-based tools promise to automate this, but they don't solve the actual problem. You still need to build and maintain a template for every vendor format. When vendor #47 changes their invoice layout, the template breaks. When a new vendor comes on, someone has to configure extraction rules from scratch. The bottleneck isn't the matching logic—it's getting clean data out of documents in the first place.

Why manual PO-to-invoice matching doesn't scale

Three-way matching—comparing the invoice against the PO and the receiving report—is straightforward in theory. The fields are predictable: vendor name, PO number, line items, quantities, unit prices, totals. The comparison logic is mechanical. If the invoice says 500 units at $12.00 and the PO says 500 units at $12.00, it's a match. Flag anything that doesn't line up.

The reason this stays manual isn't the matching step. It's the extraction step. Every vendor sends invoices in a different format—different layouts, different field labels, different table structures. Template-based extraction tools require you to map each vendor's format individually. With 50 vendors, that's 50 templates to build and maintain. With 200 vendors, it's unmanageable. The result: AP staff spend hours on data entry just to get invoice data into a format where matching can happen.

How to automate PO-to-invoice matching in Lido

  1. Step 1: Set up two extractors. Create one extractor for invoices and one for purchase orders. Define the fields you need from each: vendor name, PO number, line items, quantities, unit prices, and totals. If both document types come through the same channel, you can use a single extractor with document-type detection.
  2. Step 2: Ingest documents from any source. Forward invoices via email, upload files directly, or connect cloud storage. Lido's AI reads any vendor format without templates—no per-vendor configuration needed. A dot-matrix scan from one vendor and a clean PDF from another both get processed the same way.
  3. Step 3: Extract structured data automatically. Lido pulls PO numbers, vendor names, line items, quantities, and amounts from both invoices and purchase orders. The extracted data lands in spreadsheet columns—structured, consistent, and ready for comparison regardless of the source document's format.
  4. Step 4: Match and flag discrepancies. Compare extracted invoice data against PO data on the fields that matter. PO numbers link the two documents. Amounts get validated within tolerance thresholds you set. Price variances, quantity mismatches, and missing POs surface immediately as flagged exceptions. Your team reviews only what doesn't match—not every single invoice.

No templates to build per vendor. No retraining when a vendor changes their layout. No manual data entry before matching can begin.

What teams achieve with automated PO matching

ACS Industries runs this play at scale. They process 400 purchase orders per week across every format—PDFs, scans, images, plain-text emails. Zero templates built. They avoided hiring an additional FTE for data entry and saved 30 hours per week that was previously spent on manual AP automation tasks.

The matching step goes from hours of manual cross-referencing to minutes of reviewing flagged exceptions. Instead of checking every invoice line-by-line against its PO, the AP team focuses only on the 5–10% of documents where something doesn't line up—a price variance, a quantity mismatch, a missing PO number. Everything else flows through automatically.

That's the difference between a process that depends on data entry headcount and one that scales with document volume. More invoices don't mean more hours—they mean more rows in a spreadsheet that Lido already populated.

Beyond PO matching: packing list to invoice matching for trade and logistics

The same extraction-then-match workflow applies to a challenge that's even more common in international trade: matching packing lists to commercial invoices. In customs brokerage and freight forwarding, these two document types frequently arrive as a single combined PDF—sometimes running to 2,000 pages per shipment. Each packing list line item needs to be matched to its corresponding invoice line item before a customs entry can be filed.

The matching identifier is typically a batch number, reference number, or product code that appears on both the packing list and the invoice. The extracted data from each document type goes into separate sheets, and computed columns use lookups to match records and cross-check values: Does the net weight on the packing list match the invoice? Does the quantity align? Is the country of origin consistent between documents?

One customs brokerage processing 3,000+ entries per month uses Lido for exactly this workflow. Their suppliers' combined packing list and invoice PDFs contain roughly 50 fields per entry. Before automation, a single 80-page packet took several hours of manual data entry and cross-referencing. With Lido extracting both document types and matching on batch numbers, the same process takes minutes. As their operations lead described it: "It's not difficult or complicated. It's just tedious. This takes away the tedious."

Lido's AI columns add another layer: automatic data normalization during matching. Country of origin might appear as "Germany" on one document and "DE" on another. Net weight might be missing from certain line items on the packing list. AI columns can convert country names to standardized codes, flag missing values as NA, and surface discrepancies between the two documents—all without manual rules or lookup tables.

Frequently asked questions

Can Lido match invoices to POs from different vendors automatically?

Yes. Lido extracts PO numbers and vendor names from any document format—PDFs, scans, images, emails—without requiring vendor-specific templates. Once the data is extracted into structured columns, matching happens on shared fields like PO number and vendor name regardless of how the original documents were laid out.

What happens when an invoice doesn’t match a PO?

Discrepancies get flagged automatically. Price variances, quantity mismatches, missing PO numbers, and unmatched invoices all surface as exceptions. Your AP team reviews only the flagged items instead of checking every invoice manually. You set the tolerance thresholds—for example, allowing a 2% price variance before flagging—so the system matches your existing approval rules.

Does this work with handwritten purchase orders?

Lido handles mixed printed and handwritten documents. Block handwriting—the kind typically found on warehouse receiving slips and manually completed PO forms—extracts reliably. Cursive or heavily stylized handwriting may require review, but the system flags low-confidence extractions rather than guessing silently. For trade documents like packing lists and invoices, the vast majority are typed or printed, so handwriting is rarely a concern. When handwritten annotations do appear—such as notes on a packing slip or a customs stamp—Lido extracts the printed data accurately and flags any handwritten additions for review.

How many vendor formats can Lido handle?

No limit. Lido reads documents contextually using invoice OCR powered by AI, not rigid templates. Every vendor format works on the first document without any setup or configuration. When a vendor changes their invoice layout, extraction continues working because the system understands document structure rather than matching against a fixed template.

Ready to grow your business with document automation, not headcount?

Join hundreds of teams growing faster by automating the busywork with Lido.