Extract invoice data from PDFs, no AI required: supplier, VAT number, invoice no., dates, net/VAT/gross totals and line items, each with a confidence score and arithmetic checks. Export to Excel, CSV or Xero/QuickBooks import layouts (not an official integration). Optional OCR and AI refinement.
1.1.7 — October 2026 (security, parsing fixes, clearer errors)
Secrets never appear in outputs: your AI API key, Authorization header and alert webhook URL are removed from every error message, log line, dataset error and issue message, alert result and the OUTPUT summary, including partial, URL-encoded and base64 forms. Extracted document content is not altered.
Authorization header scope (security): your Authorization header is sent only to the exact sites you typed in PDF URLs or Folder pages (same scheme, host and port). It is no longer sent to other hosts linked from a folder page, an e-mail or a dataset, and it is dropped on any redirect that leaves that exact site. It is never sent to apify.com hosts.
Apify record links: links to Apify key-value-store records found on folder pages, in e-mails or in datasets are now fetched as ordinary public links and are never read with your account's token. To read a private record, type its link in PDF URLs or name it as an inbox kvRecord.
Clearer download errors: HTTP 401/403 (for example an expired pre-signed link or missing credentials), 404/410, 429 and 5xx answers now say what to do next.
Private-network protection (documented): PDF URLs, folder pages, redirects and the alert webhook may not point to private, local or internal addresses. Each DNS answer is checked and the connection is made to the checked address.
Parsing fixes: line descriptions come from the "Description" column when a table also has an item-code column; the last line item is no longer lost when a totals line sits directly under it; quantities in a "#" column are recognised when quantity × price = amount; "USt. Gesamt" / "VAT total" lines are read as the VAT total, not the gross total; "remit until" dates are read as due dates; receipt VAT summaries with only rate, net and VAT columns are read; a customer number ("Customer: 2") is no longer reported as the customer name; Dutch "Factuuradres" and German "USt. ID" labels are recognised.
Accuracy figures: earlier "100% / 100%" figures were removed from this changelog and BENCHMARK.md because they were measured on synthetic test sets the extractor was tuned on.
1.1.5 — 2026-10-15 (example input)
The Console example (prefill) is now a real-looking sample invoice instead of a blank test PDF, so the first run shows what the Actor does: supplier, invoice number, dates, currency, net/VAT/gross totals and 4 line items, with totals cross-checked. The sample is fictitious (made-up companies and numbers), generated by SiteVerdict and released under CC0 1.0; it is hosted in our own Apify key-value store. Defaults for API and scheduled runs are unchanged.
1.1.0 — 2026-10-11 (flagship upgrade)
Accuracy: measured only on small synthetic test sets generated by SiteVerdict (no real supplier invoices); see BENCHMARK.md for the method and its limits. Not independently verified. (Earlier "100% / 100%" figures were removed on 15 Oct 2026 because they came from corpora the extractor was tuned on.)
India GST: GSTIN format + check character, CGST/SGST/UTGST/IGST, CGST = SGST check, intra- vs inter-state check against the two GSTIN state codes, lakh/crore amounts (1,23,456.78, Rs. 1,18,000/-), Rs./₹/INR currency, HSN/SAC and serial-number columns, "amount in words" lines ignored.
Dates:dateOrder: auto (new default) decides day/month order per document from unambiguous dates, US signals ($, US address, sales tax) or UK/EU/India locale; 12-Sep-2026, ordinal and inline dates ("vom 14.09.2026", "del 21/07/2026", "Lyon, le 18 août 2026"); "Échéance" fix.
Labels and layouts: many more invoice-number / PO / due-date labels (Inv. No., Invoice #4471, Factura n.º, Numéro de facture, Creditnota nr., Your ref (PO), Bon de commande, Ordine, Buyer's Order No., Net 15), DIN 5008 sender lines, horizontal totals tables, two column blocks on one line, "Totale imponibile"/"Netto a pagare"/"Total VAT", "VAT included / IVA incluido" notes, receipt VAT summary tables, discount columns, tax-amount columns, headerless tables (qty/price chosen by arithmetic), receipts without item tables, tax IDs ignored as amounts.
Validation: per-rate VAT maths, VAT_RATE_UNUSUAL, receipt total vs VAT summary, checks.vatMathOk, duplicate invoices (same file, same supplier + number, same supplier + amount + date; within a batch and optionally across runs; identical files not re-processed or charged), needsReview + reviewReasons with a configurable confidence threshold, better-calibrated confidence scores.
Inputs: inbox batch (inboxMessages with attachment URLs or KV records; message metadata carried to context), JSON batch record (manifestRecord), folder pages (folderUrls: HTML index, public bucket XML, JSON list; robots.txt respected), request userData carried to context.
Monitoring:monitorMode with a named state store, conditional requests (ETag / Last-Modified), only new or changed documents output, unchanged ones skipped and not charged; rememberAcrossRuns for cross-run duplicate detection.
Alerts: HTTPS Slack/JSON webhook at the end of the run (alertOn: problems / new / always); secret input, private hosts blocked.
Exports (free):INVOICES.xlsx (Invoices, Line items, Issues, Needs review, Xero bills, QuickBooks bills), XERO_BILLS.csv, QUICKBOOKS_BILLS.csv, INVOICES.csv, UBL 2.1 / Peppol BIS 3 and Factur-X / ZUGFeRD (CII, EN 16931) XML drafts with E_INVOICE_GAPS.json, REPORT.html; CSV formula-injection guard; links in OUTPUT.files.
Optional AI refinement with the user's own key (Anthropic or OpenAI, off by default): only weak fields of flagged documents are sent; every answer is verified against the PDF text before use. New PPE event ai-refined-document, charged only when a verified field was filled or corrected.
New dataset view Needs review and duplicates; new record fields supplierTaxIdType, dateOrder, fileSha256, duplicate, context, aiRefinedFields, needsReview, reviewReasons, monitorStatus; new status duplicate_skipped.
Benchmark harness and generators in test/bench/ (synthetic corpora, tamper sets, stress sets).
1.0.0 — 2026-10-11
First release.
Inputs: PDF URLs (public or pre-signed), Apify key-value store records (including Console file uploads), and a dataset of URLs. There is an optional secret Authorization header, which is sent only to the original host.
Deterministic text extraction with pdf.js (layout kept) and table detection from text positions, output as rows, Markdown and CSV.
Invoice and receipt fields in EN/DE/FR/NL/ES/IT with confidence and provenance; VAT check digits for 29 countries; arithmetic checks.
UK/EU number formats, multilingual dates and currency detection; optional OCR (tesseract.js).
Pay-per-event: page-processed, invoice-extracted and ocr-page. Respects the maximum total charge.
Privacy defaults: documents are kept in memory only, and buyer details are off.