INVOICE CHECK

Invoice review

Input files

Add invoices and purchase orders to begin.

UTF-8 CSV · up to 2 MB and 5,000 records per file · nothing uploaded

Absolute tolerance in each record’s currency, applied separately to unit prices, line totals and invoice totals. Quantities compare exactly. Changing inputs invalidates the previous report.

Session privacy

Files stay in memory until you close this page. Save a session to keep your source files, mappings and review history. Your session export contains business data; store it privately.

Invoice Check compares invoice lines with purchase orders and optional receiving records, entirely in your browser. This free local preview works with CSV files you provide. It does not connect to your accounts or check whether an invoice has been paid.

1. Prepare and map your CSVs

Start with one invoice-line CSV and one purchase-order-line CSV. Receiving records are optional. Use UTF-8 text with a header row; download the sample CSVs above for a working example. You can map your own column names before running checks.

Invoices need vendor, invoice number, invoice date (YYYY-MM-DD), PO number, SKU, unit, quantity, unit price, line total and currency. Orders need vendor, PO number, SKU, unit, quantity, unit price and currency. Receipts need vendor, receipt number, PO number, SKU, unit and quantity.

2. Compare like-for-like records

Vendor, PO and SKU codes match exactly after surrounding whitespace is trimmed and Unicode is normalized. Matching is case-sensitive, preserves leading zeros and requires compatible units and currencies. There is no fuzzy matching, unit conversion or currency conversion.

Each vendor/PO/SKU needs one unambiguous order record. Distinct receiving records can accumulate for the same item; repeated receipt identities are flagged and excluded from receipt comparisons. Missing or ambiguous evidence is reported as skipped coverage.

3. Review the differences and coverage

Checks cover line arithmetic, agreed unit prices, cumulative billed quantities against orders and receipts, and possible duplicate lines or invoices. Quantity times unit price is rounded half-up to cents using exact arithmetic. Amount tolerance applies separately to price, line-total and invoice-total comparisons; quantities compare exactly.

Invoice-total checks require explicit invoice total, tax, shipping and discount fields, repeated consistently on every invoice row. The expected total uses the supplied line totals plus tax and shipping, minus discount. Missing header fields stay unchecked. Only the records in this batch are compared; tax rules are not verified.

4. Keep the source evidence

Open a finding to inspect its original records. Filter or search the findings, then download a JSON report or formula-safe findings CSV. Reports include mappings, source-content hashes, record references, rule version, tolerance and checked/skipped coverage. Record numbers count data rows after the header, including quoted multiline fields as one record.

Save a session to retain all original CSV text and mappings. Opening a saved session asks before replacing current work. Reviewed sessions are recomputed and checked against the original records before their notes are accepted; older sessions require a fresh check. A malformed replacement CSV leaves the previous valid source intact. Changing valid inputs clears stale results; you can cancel a running check. A change after review asks before resetting the notes.

Record Open, Follow up, Explained, or Marked resolved for each finding, with your name and a note. The history keeps earlier entries when a finding is reopened. Review reports include these private notes and source references; they do not change totals or prove a supplier correction. Sessions support up to 20,000 review events within a 15 MB total export limit.

Your files stay on this device

CSV processing runs locally, with no file uploads, analytics, model calls or external fonts. The host receives ordinary page requests. Source records stay in page memory and are lost on reload or close unless you save a session. Only your theme preference is stored in the browser.

Reports and saved sessions may contain business data. Keep downloaded files private. This preview has no cloud account, shared history, provider connection, public API, billing or paid access.

Supported limits and human review

Each source supports up to 2 MB of UTF-8 CSV, 5,000 records, 40 columns, 150,000 cells and 2,000 characters per cell. Quantities are positive with up to three decimal places; prices and amounts are non-negative with up to two. Supported currencies are USD, CAD, EUR, GBP and AUD. Amount tolerance ranges from 0.00 to 100.00 in each record's currency.

PDFs, scans, Excel workbooks, credit notes and returns are not supported. A flag is a reason to review the originals with your supplier, not payment approval, proof of fraud or confirmed savings. The tool does not decide whether you should pay.

Record your review

Add a new entry each time. Previous entries remain in the local history. Save a session before closing this page.

Earlier entries

Map your columns

IDs, vendor codes, SKU and units must match exactly across sources. Leading zeros are preserved.

Preview source records

Source evidence

Record numbers count data records after the header, not physical text lines. Quoted multiline fields remain a single record.

Invoice totals in this batch

Totals are kept in their own currencies and are never combined into a savings claim. Header checks require mapped invoice total, tax, shipping and discount columns with consistent values on every invoice record.

The first 100 invoices are shown here. The complete list is included in the report JSON.

Privacy & supported checks

1. Load your CSV records

Use one invoice-line CSV and one purchase-order-line CSV. Optionally add receiving records. Download a sample for each source to see the expected shape, or map your own column names. Excel workbooks, PDFs, scans and credit notes are not supported in this preview.

2. Confirm what each column means

Matching uses the exact vendor code, PO number and SKU, after trimming surrounding whitespace and normalizing Unicode. Codes are case-sensitive. Units must match exactly; no box-to-item or currency conversion is performed. Avoid mixing vendor names with vendor IDs. The tool never guesses a match.

3. Review the differences

Line totals use quantity × unit price rounded half-up to cents. Prices compare to the order. Compatible invoiced quantities accumulate across the entire supplied batch before comparing to ordered and received quantities. A missing receipt can mean missing evidence, not missing delivery.

Header amounts

For invoice-total checks, map invoice total, tax, shipping and discount; provide explicit zeroes when appropriate. These are invoice-level amounts repeated on each row, not line taxes. Expected total is the sum of supplied line totals + tax + shipping − discount. Missing header columns are reported as unchecked; tax rates and jurisdiction rules are not verified.

Duplicates and ambiguity

Repeated invoice line IDs—or identical line contents when no ID is supplied—need review. Distinct invoice numbers with identical vendor/date/contents are possible duplicates. Invoice rows stay in totals. Repeated PO keys and ambiguous receipt records are flagged; those comparisons are skipped rather than choosing a record or double-counting receipts.

Privacy, exports and limits

Source files stay in page memory. No cloud upload, analytics, external fonts or model calls. Only theme preference is stored locally. Save a session to restore files and mappings; reports include source-content SHA-256 hashes, mapping, rule version and record references. A session file contains the original business data. The host receives ordinary page requests.

Each source: UTF-8 CSV, up to 2 MB, 5,000 records, 40 columns, 150,000 cells and 2,000 characters per cell. Quantities: 3 decimal places, positive, up to 999,999.999. Unit prices: 2 places, non-negative, up to 999,999.99. Amounts: 2 places. USD, CAD, EUR, GBP and AUD only. Currency codes are case-sensitive. The amount tolerance is absolute, from 0.00 to 100.00; quantity tolerance is zero.

Reports are evidence for human review. They do not approve payments or identify fraud. This free local preview has no cloud account, provider connection, billing, paid access or public API. These require additional server-side implementation and verification.

Replace current work?