PO Invoice & Receipt Exception Report avatar

PO Invoice & Receipt Exception Report

Pricing

$0.50 / completed report

Go to Apify Store
PO Invoice & Receipt Exception Report

PO Invoice & Receipt Exception Report

Audit cumulative PO, invoice and split-receipt quantities from CSV or JSON. Flag over-invoicing, receipt shortfalls, price deviations, duplicate IDs and missing links. Export JSON, CSV and HTML.

Pricing

$0.50 / completed report

Rating

0.0

(0)

Developer

Gilad Ronen

Gilad Ronen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does PO Invoice & Receipt Exception Report do?

Compare purchase-order lines, current invoices, historical invoices and multiple partial receipts in one cumulative exception report. Supply structured CSV or JSON; receive a purchase-line reconciliation, a flat findings queue, exact decimal totals and a standalone HTML report. The Actor makes no document downloads, external data calls or changes to your systems.

For example, a PO orders 100 EA at USD 4 each. Two receipts record 20 and 40 EA, an earlier invoice billed 40 EA, and a new invoice bills 30 EA. The report shows 70 invoiced, 60 received and a 10 EA receipt shortfall in the supplied comparable evidence. It does not allocate an individual receipt to a particular invoice or approve an invoice for payment.

Why use this invoice and PO reconciliation?

Run the same checks each time you receive another invoice batch. The report identifies cumulative over-invoicing, invoice unit-price changes, receipt shortfalls, excess receipts, duplicate document lines, missing links and incompatible units or currencies. Exact identifiers keep evidence traceable. There is no fuzzy product matching or unexplained match score.

Apify API access, scheduling and integrations can run the report on repeated exports. Use the API tab for an invocation example. Every new run is a separate report, including a repeat of the same input.

How to use it

  1. Export the relevant PO lines, all receipts in scope, and current and historical invoice lines from your authorized source systems.
  2. Remove names, addresses, banking details and unrelated columns. Retain stable supplier, PO, document and line identifiers.
  3. Paste JSON arrays or CSV text into the Input tab. Each table can use a different format. Use exactly one format for each table.
  4. Confirm the two coverage flags only after checking that the submitted history and receipts cover the same cumulative scope. Choose tolerances appropriate for those units and currencies.
  5. Run the Actor and download the findings and reconciliation. Review incomplete lines before interpreting their totals.

Input schemas and exact matching

The top-level tables are purchaseOrders, invoices, historicalInvoices and receipts. They are JSON arrays. The equivalent CSV fields are purchaseOrdersCsv, invoicesCsv, historicalInvoicesCsv and receiptsCsv. Omitted tables are empty. At least one row is required overall. The example input includes a matched line, multiple partial receipts, historical invoices, price deviations, currency/unit differences, duplicate PO and invoice lines, and missing links.

TableFields
All tablessupplierId, poId, poLineId, quantity, unit
Purchase ordersCommon fields plus currency, unitPrice
Invoices and historical invoicesCommon fields plus currency, unitPrice, invoiceId, invoiceLineId
ReceiptsCommon fields plus receiptId, receiptLineId

All quantities and prices must be decimal strings, such as "0.125" or "100". JSON numbers, thousands separators, exponent notation, negative values and leading zero decimal forms such as "01" are rejected. Up to 12 integer and 6 fractional digits are supported. Zero is allowed. Values are calculated with integer arithmetic; quantity × price retains up to 12 fractional digits without currency rounding.

Identifiers are strings up to 80 characters. Leading zeros remain significant: "001" and "1" differ. Matching is case-sensitive and uses exactly supplierId + poId + poLineId. No trimming or case conversion is performed; padded IDs are rejected. Missing/empty linking and document IDs produce findings and exclude affected evidence instead of inventing matches. Units are explicit, case-sensitive strings up to 24 characters. Currencies must be uppercase three-letter codes; the Actor checks exact equality, not currency-code validity or conversions.

Every occurrence of a duplicate PO key is ambiguous. Every occurrence of a duplicate document-line identity is excluded. Invoice uniqueness is supplier + invoice ID + invoice-line ID, across both current and historical tables. Receipt uniqueness is supplier + receipt ID + receipt-line ID. Different suppliers can reuse document numbers. An invoice line must appear in either current or history, never both.

CSV supports a UTF-8 BOM, quoted commas, escaped quotes and quoted multiline fields. Blank physical lines are skipped. Duplicate or padded headers, irregular row lengths and malformed quoting are rejected. By default headers must be canonical field names. To map source exports, use columnMappings, for example:

{
"columnMappings": {
"purchaseOrders": {
"supplierId": "Vendor", "poId": "Order", "poLineId": "Line",
"quantity": "Qty", "unit": "UOM", "currency": "Currency", "unitPrice": "Price"
}
}
}

Map each required field. Unmapped columns are ignored only when an explicit mapping is supplied. Unknown JSON row fields are rejected. Use the included CSV example to test a mapped import.

Coverage, tolerances and interpretation

historyComplete and receiptsComplete default to false. Set historyComplete: true when all relevant prior invoices are submitted, including when you know there are none. Set receiptsComplete: true when the submitted receipts cover the same cumulative scope. These are caller assertions, not facts verified by the Actor. Unconfirmed coverage marks all purchase lines incomplete.

tolerances accepts quantity and unitPrice, both nonnegative decimal strings defaulting to "0". Quantity tolerance applies to invoice-over-order, invoice-over-receipt and receipt-over-order differences. Unit-price tolerance applies to the absolute difference between each invoice price and its linked PO price, including historical invoices. A difference equal to tolerance is not flagged. There is no percentage tolerance. These numerical thresholds apply in each line's unit/currency; use separate runs if different lines need different thresholds.

Current and historical invoice quantities are summed. Receipt quantities are summed separately. Unit/currency mismatches, duplicate document lines and missing required identity are excluded from both quantities and money. Incomplete line totals describe accepted evidence only and are not final liabilities. A missing PO or ambiguous match produces a finding without allocation. Absent comparable receipts for a positive invoiced quantity remain incomplete even under a large tolerance.

orderedUnreceivedQuantity is an informational outstanding quantity, not a late-delivery finding. cumulativePriceVariance is the signed difference between accepted invoice value and accepted cumulative invoice quantity × PO unit price; it is not compared to the full PO value. Quantity over-invoicing is checked separately. No totals are summed across currencies or units.

Output and downloads

The default dataset contains one complete report item with summary, scope, rows and findings. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. For a flat review workflow, use these dedicated key-value-store files:

FileContents
OUTPUTFull compact JSON report, including reconciliation and findings
reconciliation.csvOne row per submitted PO line, totals, status and evidence references
findings.csvStable finding ID, severity, reason, source references and applicable numerical evidence
report.htmlEscaped, standalone readable report, with no external scripts or assets

Source references use the table name and 1-based data-row index, excluding CSV headers. For example receipts:2 refers to the second parsed receipt record, not necessarily physical file line 3 when quoting spans lines. Aggregate findings point to a purchase-row reference whose accepted/excluded reference lists identify all contributing evidence. Finding IDs are deterministic for the same input order, not permanent identifiers across reordered files.

no-exceptions means no checked exception in submitted comparable records under the configured tolerances. exceptions identifies review findings with otherwise comparable evidence. incomplete means identity, coverage or comparability prevents a complete reconciliation. Report-level reviewRequired also includes orphan source rows that cannot be assigned to a PO. CSV fields that could execute spreadsheet formulas receive an apostrophe prefix; use JSON when exact unmodified identifiers are needed.

Pricing and limits

The price is $0.50 per completed report, with platform usage included, for up to 10,000 combined rows and 4 MB of JSON input. One report-completed event is charged after all exports have been validated and saved, using one complete dataset item. There is no startup fee or additional dataset-item fee. Invalid input and insufficient report budget do not produce a report charge. New runs are billable again.

Full JSON is capped at 8 MB and each download at 9 MB. Exception-heavy data or long identifiers can reach those output limits before the row limit; split that input into smaller complete scopes. All output sizes are checked before any report event. Defaults are 1024 MB memory and a 180-second timeout.

If an execution stops while writing exports, some downloads can exist before billing; resume the same run to complete them. If a dataset write succeeds but charging is interrupted, resurrection validates the input fingerprint and deterministically rebuilt saved report before charging once. An already charged saved report regenerates downloads without another event. Do not change input, edit the saved dataset, or delete its only report before resurrection. Use a new run for revised data.

Limits, privacy and support

This Actor provides arithmetic exception review, not payment approval, invoice rejection, tax advice, accounting compliance, fraud detection or proof of receipt. It supports supplied cumulative snapshots, without dates or automatic period filtering. Callers must align the reporting scope. Credits, returns, cancellations, discounts, taxes, freight, OCR/PDF extraction, ERP synchronization and currency/unit conversion are outside this version. Negative values and unsupported fields are rejected.

Submit only records you are authorized to process. Inputs and generated reports are held in your Apify run storage under your account's access and retention settings; this Actor does not delete them automatically. Raw commercial rows are not logged. No customer data is sent to an external AI provider or target website. Refer to the Issues tab for reproducible problems using synthetic examples, and avoid attaching confidential invoices.

The distinction between unit-price and cumulative quantity checks is consistent with the terminology in Microsoft's invoice-matching overview. This Actor is an independent, narrower report and does not implement that system's accounting policies.