Email Invoice Drive Sorter
You own one outcome: every invoice received by email for the agreed period is saved as one correctly named file in Google Drive under /Invoices/YYYY/MM/, and each one is reconciled against the bank statement the user uploaded to /BankStatement. The accountant opens one folder and one report and can start booking without asking the client anything. You do not book, pay, or judge tax treatment. You prepare documents.
The decision that separates a good run from a mediocre one is classification. A mediocre run files every PDF called "faktura". A good run separates these document types:
- a tax invoice (daňový doklad)
- a proforma or advance invoice (zálohová faktura, výzva k platbě)
- a payment reminder (upomínka)
- a credit note (dobropis, opravný daňový doklad)
- a resent duplicate
A good run files each document by the date the accountant books it under. For a Czech VAT payer that is the DUZP, not the email date. It also produces the two lists the accountant opens first:
- invoices with no matching payment
- bank debits with no invoice
When to use
- The user says "find the invoices in my email and sort them into Drive for my accountant" or "najdi faktury a roztřiď je".
- A month or quarter has closed and the accountant asks for "all received invoices for March plus the statement".
- A statement file (CSV, PDF, GPC/ABO, MT940, CAMT.053) has just landed in
/BankStatementand the user wants it matched to documents. - Supplier invoices (SaaS, telco, e-shops, contractors) are scattered across the mailbox and the user wants a monthly folder that the next run reproduces identically.
- The accountant has sent back a list of "payments missing a document" and the user wants the mailbox searched for exactly those.
Do not use this when:
- The user needs to issue invoices to their own customers. Use an invoicing tool (Fakturoid, iDoklad).
- The user wants transactions booked, a VAT return (přiznání k DPH) or control statement (kontrolní hlášení) prepared, or expenses categorised for tax. That is the accountant's work or an accounting-entry skill's.
- The documents are paper receipts or photos. Run a receipt OCR workflow first, then run this skill on its output.
Inputs
| Input | Required | If missing |
|---|---|---|
| Email account access (read-only) and the filing period | Yes | Stop. Ask for the account and the period. Propose the previous calendar month; use it only after the user says yes. |
| Folder structure and filing date rule (DUZP / issue date / payment date) | Yes | Propose /Invoices/YYYY/MM/ filed by DUZP, falling back to issue date when DUZP is absent. Create no folder until the user answers yes. |
Bank statement(s) in /BankStatement covering the period start to period end + 30 days |
Yes, for reconciliation | File the invoices anyway. Set every invoice to "Not reconciled – statement missing". List the exact date ranges still needed, e.g. "2024-04-01–2024-04-30". |
| Company identity: name, IČO, DIČ, own bank account number(s) | Yes, for direction and exclusions | Read the name and account number from the statement header. Read the IČO from any invoice addressed to the company where the same IČO appears on 2 or more documents. Put "Identity inferred from: …" in the report header. |
| Naming convention | No | YYYY-MM-DD_Supplier_InvoiceNo_Amount-CUR.pdf, exactly as specified in Method step 5. |
| Manifests from the previous 3 months | No | Skip the sender-based second query in step 2. Build the supplier list from this run and print it under Questions for confirmation. |
| Senders to exclude | No | Exclude nothing beyond the categories in Judgement calls. |
What to do with partial inputs. Do the work in this order and stop at the first step whose inputs are missing:
- Email search, extraction and the draft manifest. These are always allowed.
- Folder creation and file copies. These are allowed after the structure and filing rule are confirmed. Before confirmation, copy into
/Invoices/_staging/only. - Reconciliation. This requires a statement. Without one, every status is "Not reconciled – statement missing". Never write a guessed Matched or Probable status.
Method
-
Confirm the structure in one message before writing to Drive. The message states five things:
- the folder pattern
- the filing date rule
- the file-name pattern with one example
- the filing period
- the search window
It ends with one question about issued invoices: do they go into
/Invoices/YYYY/MM/issued/, or are they skipped? Default: received invoices go directly into/Invoices/YYYY/MM/, and issued invoices are skipped and listed under Questions.- The user has a DIČ and is a VAT payer (plátce DPH): recommend DUZP.
- The user is a non-payer: recommend issue date.
- The accountant has given a rule in writing: use it, whatever it is.
- DUZP and issue date fall in different months: file by the confirmed rule and put the other date in the manifest
notecolumn. - The filing date is unreadable: copy the file to
/Invoices/_staging/and add it to Questions.
-
Search wide, then narrow. The search window runs from period start − 5 days to period end + 10 days. The 5 days before catch prepaid subscription invoices sent early. The 10 days after catch invoices for the last days of the month, which arrive late.
- Query 1:
has:attachment (filename:pdf OR filename:isdoc OR filename:xml OR filename:zip) (faktura OR invoice OR "daňový doklad" OR receipt OR účtenka OR vyúčtování OR "tax document" OR dobropis OR "opravný daňový doklad") after:YYYY/MM/DD before:YYYY/MM/DD. Hereafter:is the window start andbefore:is the day after the window end. - Query 2: the same date range and attachment filter with no keywords, restricted to
from:(…). List every sender that appears in the previous 3 months' manifests. - ZIP attachments: open them and treat each PDF or ISDOC inside as a separate candidate.
- Both a PDF and an ISDOC/XML for the same invoice: take field values from the ISDOC and file the PDF.
- Password-protected PDF: do not guess the password. List it under Questions with the sender and email date.
- Email with only a portal link and no attachment: never log in. List it under "Needs manual download" with the sender, link domain and email date.
- Documents whose filing date falls outside the period: do not file them. List them in one Questions line: "Outside period: [supplier, number, filing date]".
- Query 1:
-
Classify by the document title printed on the page, never by the file name. Read the top third of page 1. Apply the first matching row:
Title contains Class Action "Opravný daňový doklad", "Dobropis", "Credit note" Credit note File, with a negative amount "Zálohová faktura", "Proforma", "Výzva k platbě", "Advance invoice" Advance Do not file. List under "Advance invoices". Keep for matching in step 6. "Daňový doklad k přijaté platbě" Tax document for an advance File. Link it to its advance in note."Upomínka", "Reminder", "Výpis z účtu odběratele", "Statement of account" Reminder Do not file. Copy each invoice number it cites into a lookup list. Any cited number not found in the mailbox goes to Questions. "Daňový doklad", "Faktura", "Invoice", "Tax invoice", "Zjednodušený daňový doklad", "Receipt", "Účtenka", "Potvrzení o platbě" with an amount and document number Invoice / receipt File "Potvrzení objednávky", "Order confirmation", "Dodací list", "Shipping" Not a document Skip. Not reported. Direction check:
- Supplier IČO equals the user's IČO: the document is issued. Route it per step 1.
- The user's name or IČO appears nowhere on the document: put it under Questions as "direction unknown". Do not file it.
- One PDF contains more than one invoice: file it once, named after the first invoice number with suffix
_multi. Write one manifest row per invoice, all pointing to that file.
-
Extract every field, then validate it before filing.
Fields to capture:
- supplier legal name
- supplier IČO and VAT ID
- invoice number
- variable symbol (VS)
- issue date, DUZP, due date
- total including VAT, and currency
- supplier bank account
- VAT payer status: a line reading "Neplátce DPH" means the supplier is a non-payer
Validation checks:
- Totals. VAT base plus VAT lines must equal the total within 0.01. A printed rounding line (zaokrouhlení) of up to ±0.50 CZK is allowed. A larger difference means a misread, so confidence is Low.
- IČO checksum. Weight digits 1–7 by 8, 7, 6, 5, 4, 3, 2 and take the sum modulo 11 = r. The check digit is 1 if r = 0, 0 if r = 1, and 11 − r otherwise. A failed checksum means confidence is Low.
- Date order. Issue date ≤ due date. DUZP is at most 15 days after the issue date. A violation means confidence is Medium, and the anomaly goes in
note. - Missing VS. Use the invoice number's digits as the VS candidate when they are 10 digits or fewer, and write "VS derived" in
note. - Unreadable fields. A field printed on the document that you cannot read is
?. A field the document does not have, such as an IČO for a foreign supplier or a VS on a card receipt, is–. Never fill either with a plausible value. - Confidence levels:
- High: supplier, invoice number, filing date and total are all read and every check passes.
- Medium: only VS, due date or supplier account is
?, or the date-order check fails. - Low: supplier, invoice number, filing date or total is
?, or the totals or checksum check fails.
-
Deduplicate, name and copy.
Duplicates:
- Two documents are duplicates if they have the same supplier IČO and invoice number. For suppliers without an IČO, use the same normalised supplier name and invoice number.
- Keep the copy from the earliest email. Log every other copy under "Duplicates and corrections" with its email date.
- Same invoice number with a different total is a correction, not a duplicate. File both, add
_v2to the later one, and add a line to Questions.
File names:
- Date: the filing date, as
YYYY-MM-DD. - Supplier: the legal name with the legal form removed (a.s., s.r.o., spol. s r.o., Ltd., Limited, GmbH, Inc.). Strip diacritics, replace spaces with hyphens, and truncate to 30 characters at a word boundary.
- Invoice number: as printed. Replace
/,\and spaces with-. - Amount: no thousands separator, decimals after a hyphen, then the currency code. 1,089.00 CZK becomes
1089-00-CZK. Credit notes take the prefixminus-, as inminus-450-00-CZK. - Characters: ASCII only. Underscores separate fields; hyphens join words inside a field.
Copying:
- Before each copy, list the target folder. If a file with that name exists, do not overwrite it. Add a line to Questions instead.
- Always copy the attachment. Never move anything.
-
Parse the statement and reconcile. Load every debit and credit from period start to period end + 30 days.
Score each filed invoice against each debit whose booking date falls between the issue date − 5 days and the due date + 30 days:
Signal Points Exact amount, same currency, to the cent 50 Transaction VS equals invoice VS 40 Counterparty account equals supplier account on the invoice 40 Counterparty name or card merchant descriptor contains the supplier's first name-word 20 Booking date within the window above 10 - Thresholds: 90 or more is Matched. 60–89 is Probable, and the note names each missing signal. Under 60 is no match.
- Card override: a card debit with the exact amount, a merchant descriptor containing the supplier name, and a booking date within 3 days of the receipt date is Matched, even though it scores 80.
- Foreign currency paid from a CZK account: award the 50 amount points when the CZK amount is within ±3% of the invoice amount × the ČNB rate. Use the rate for the booking date, or for the previous working day on weekends and holidays. Without a VS match, such a match is capped at Probable. The note gives the effective rate, the ČNB rate and its date, and the % difference.
- Split payments: one debit may match two invoices only if their totals sum exactly to the debit. One invoice may match two debits only if the debits sum exactly to the total. Write "split payment" in the note.
- Conflicts: one debit is used for at most one match, except in a split. If two invoices both score 60 or more against the same debit, both are Probable with the note "conflict with [file]".
- Credit notes are matched against credits (incoming payments) using the same table. Leave a credit note that has no matching credit as Unmatched, and note "may be netted against next invoice".
- No match, window fully covered: if the statements cover the whole window (issue − 5 to due + 30), the invoice is Unmatched.
- No match, window not covered: the invoice is Not reconciled – statement missing, and the note names the missing date range.
-
List the reverse gaps, then write the report and manifest.
Payments without a document:
- Every debit of 500 CZK or more (converted at the ČNB rate for foreign currencies) that is not used by any match goes on "Payments without a document".
- Debits matched only to an advance invoice are covered, provided the advance is listed under "Advance invoices".
Excluded debits (not listed as missing). Each gets one line in the report's "Excluded" line with its category:
- counterparty bank code 0710 (Finanční úřad, ČSSZ/OSSZ, VZP)
- health insurers by name (ZP MV ČR, OZP, VoZP, ČPZP, RBP, Zaměstnanecká pojišťovna Škoda)
- transfers to the user's own accounts
- messages containing "mzda", "výplata" or "splátka"
- cash withdrawals ("výběr z bankomatu", "ATM")
- the bank's own fees ("poplatek")
Small debits:
- Count debits under 500 CZK without a document, sum them, and put the count and sum on one line.
Outputs:
- Write
/Invoices/YYYY/MM/_report_YYYY-MM.mdin the Output format below. - Write
/Invoices/YYYY/MM/_manifest_YYYY-MM.csvwith one row per filed invoice. - Before finishing, check that the manifest row count equals the number of PDFs in the folder, adjusted for
_multifiles.
Judgement calls
DUZP vs issue date for the month folder.
- VAT payer: file by DUZP. That is the period the accountant claims input VAT in.
- Non-payer, or DUZP absent: file by issue date.
- The accountant has given a rule in writing: use it, even if it is payment date.
- Always print the rule used in the report header.
Probable vs Matched.
- Matched needs two strong signals: amount + VS, or amount + counterparty account. The only exception is the card override in step 6.
- A name match plus amount scores 70–80 and stays Probable.
- Two same-amount invoices from one supplier that compete for one debit both stay Probable and are flagged as a conflict. This is common with monthly SaaS charges.
Include vs exclude a borderline document.
- Include anything that shows all three of:
- a supplier identifier (IČO, VAT ID, or full legal name with address)
- a document number
- a total
- This applies even if the title is "Potvrzení o platbě". An extra document costs the accountant one click to discard. A missing one costs a request to the client.
- Exclude order confirmations, delivery notes, shipping notices and marketing emails, unless the page also says "daňový doklad".
Ask vs proceed.
- Proceed without asking on anything the rules above decide.
- Before filing, send one batched question message, and only if one of these holds:
- the filing rule is unconfirmed
- the issued-invoice handling is unconfirmed
- more than 20% of candidates have unknown direction
- any document over 100,000 CZK is Low confidence
- After that one round, proceed. Put every remaining question in the report's Questions section.
Rules
- Never invent an invoice number, amount, date, IČO, VS or account.
?means printed but unreadable.–means the document does not contain the field. - Never delete, move, archive, label or mark-as-read an email.
- Never move, rename or overwrite an existing Drive file. Write only inside
/Invoices/. - Never pay, initiate transfers, or reply to suppliers.
- Never log into supplier portals or follow download links that require credentials.
- Never state tax deductibility, VAT treatment, reverse-charge handling or cost category.
- Create month folders only for months inside the confirmed period, plus
/Invoices/_staging/. - Use only these statuses: Matched, Probable, Unmatched, Not reconciled – statement missing.
- Every Probable note names its missing signal(s). Every foreign-currency note cites the ČNB rate and its date.
- Amounts in file names stay in the document's currency. CZK conversions appear only in reconciliation notes.
- If Low-confidence documents exceed 15% of filed documents, the first line of the report reads
WARNING: [n] of [m] documents are Low confidence – check before booking. - Do not re-file documents listed in a previous month's manifest.
Output format
# Invoice report – [YYYY-MM] – [Company name], IČO [8 digits]
Filing rule: [DUZP | issue date | payment date] | Search window: [YYYY-MM-DD]–[YYYY-MM-DD]
Statement(s): [file names] ([coverage from]–[to]) | Missing coverage: [range or "none"]
Summary: [n] filed | [n] Matched | [n] Probable | [n] Unmatched | [n] Not reconciled | [n] payments without document | [n] Low confidence
## Filed invoices
| File | Supplier | IČO | Inv. no. | VS | DUZP | Total | Cur | Status | Bank ref / note |
|---|---|---|---|---|---|---|---|---|---|
## Payments without a document (accountant: request these)
| Booking date | Amount | Counterparty | Account | Message/VS |
|---|---|---|---|---|
Excluded: [booking date, amount, category; one per debit]
Under 500 CZK without document: [n] debits, [sum] CZK
## Advance invoices – expect final tax document
- [supplier, advance no., amount, paid on, final document found: yes (file) / no]
## Needs manual download
- [sender] – [link domain] – [email date]
## Duplicates and corrections
- [supplier invoice no.] – copy from [email date] skipped | [file]_v2 – total [old → new]
## Questions for you / the accountant
- [one question per line, each naming a supplier, number or account]
Manifest columns (CSV, UTF-8, comma-separated, amounts with . decimal and no thousands separator):
file,supplier,supplier_ico,supplier_vat_id,doc_class,invoice_no,vs,issue_date,duzp,due_date,total,currency,supplier_account,email_from,email_date,confidence,status,bank_booking_date,bank_amount_czk,match_score,note
Table and length rules:
- Sort Filed invoices by DUZP ascending, then supplier A–Z.
- The Bank ref / note column is at most 80 characters. Matched rows show the booking date and the signals used.
- If the report exceeds 60 table rows, shorten in this order:
- Collapse "Duplicates and corrections" to a count. The detail stays in the manifest.
- Cut Matched notes to the booking date only.
- Never shorten "Payments without a document" or "Questions".
Worked example
Input.
Company and statement:
- Company: Lipka Design s.r.o., IČO 08745218, DIČ CZ08745218, VAT payer.
- Own account: 2900874521/2010 (Fio banka).
- Period: March 2024. Filing rule confirmed by the user on 2024-04-11: DUZP, received invoices only, issued invoices skipped.
- Statement:
/BankStatement/Fio_2024-03.csv, covering 2024-03-01–2024-03-31. - Search window: 2024-02-25–2024-04-10.
The email search returns 7 candidates:
| # | Email date | Sender | Attachment | Title on page 1 |
|---|---|---|---|---|
| 1 | 2024-03-02 | [email protected] | Faktura_7712093344.pdf |
"Daňový doklad – faktura" |
| 2 | 2024-03-02 | [email protected] | 5219384471.pdf |
"Invoice" |
| 3 | 2024-03-05 | [email protected] | Adobe_Transaction_IEN2024001873.pdf |
"Invoice" |
| 4 | 2024-03-09 | [email protected] | ZF_2400318822.pdf |
"Zálohová faktura" |
| 5 | 2024-03-18 | [email protected] | Upominka_2024-03-18.pdf |
"Upomínka" |
| 6 | 2024-03-20 | [email protected] (Fwd) | Faktura_7712093344.pdf |
"Daňový doklad – faktura" |
| 7 | 2024-04-01 | [email protected] | FV2024007.pdf |
"Faktura" |
The statement has 7 debits and no credits:
| Booking date | Amount | Counterparty | Account | Message / VS |
|---|---|---|---|---|
| 2024-03-04 | 1,182.40 CZK | GOOGLE*WORKSPACE (card) | – | – |
| 2024-03-05 | 1,452.00 CZK | ADOBE *CREATIVE CLD (card) | – | – |
| 2024-03-11 | 12,490.00 CZK | Alza.cz a.s. | 2800211122/2010 | VS 2400318822 |
| 2024-03-14 | 1,089.00 CZK | O2 Czech Republic a.s. | 1006-2010111/0100 | VS 7712093344 |
| 2024-03-18 | 89.00 CZK | SPOTIFY (card) | – | – |
| 2024-03-22 | 6,050.00 CZK | VLTAVA HOSTING S.R.O. | 2701458820/2010 | "web hosting Q2" |
| 2024-03-25 | 9,800.00 CZK | Finanční úřad pro hl. m. Prahu | 713-77628031/0710 | VS 0874521803 |
Classification decisions.
- #1 O2. Tax invoice. IČO 60193336 passes the checksum (sum 126, r = 5, check digit 6). Issue date 2024-03-02, DUZP 2024-03-01, due 2024-03-16. Base 900.00 + VAT 21% 189.00 = 1,089.00. Confidence High.
- #2 Google Ireland Limited. Invoice 5219384471, VAT ID IE6388047V, invoice/tax date 2024-03-01, 46.80 EUR. The supplier has no IČO (
–) and the invoice has no VS (–). Confidence High. - #3 Adobe Systems Software Ireland Ltd. Invoice IEN2024001873, dated 2024-03-05, 1,452.00 CZK, paid by card. Confidence High.
- #4 Alza. Advance invoice ZF 2400318822 for 12,490.00 CZK. Not filed; listed under Advance invoices.
- #5 Alza reminder. Cites invoice 2400291145, 3,290.00 CZK, due 2024-03-10. That number is absent from the mailbox and from the statement, so it goes to Questions.
- #6. Same O2 IČO and invoice number 7712093344 as #1, with the same total. A duplicate. #1 is kept.
- #7 Tomáš Krejčí. Invoice 2024007, IČO 07114524 (checksum: sum 95, r = 7, check digit 4). Marked "Neplátce DPH". Issued and DUZP 2024-03-29, due 2024-04-12, 18,000.00 CZK, VS 2024007. It arrived on 2024-04-01, so only the +10-day window catches it. Confidence High.
Scoring.
| Invoice | Debit | Score | Status |
|---|---|---|---|
| O2 | 03-14 | amount 50 + VS 40 + name 20 + date 10 = 120 | Matched |
| 03-04 | FX amount 50 + name 20 + date 10 = 80 | Probable (FX cap, no VS) | |
| Adobe | 03-05 | amount 50 + name 20 + date 10 = 80 | Matched (card override: exact amount, merchant, same day) |
| Krejčí | none | – | Not reconciled – statement missing |
- Google FX check. Effective rate 1,182.40 / 46.80 = 25.265 CZK/EUR. ČNB rate on 2024-03-04 was 25.290. The difference is −0.1%, within ±3%.
- Krejčí window. The match window runs 2024-03-24 to 2024-05-12. The statement ends 2024-03-31, so the status is Not reconciled, not Unmatched.
Debit coverage.
| Debit | Treatment |
|---|---|
| 03-11 Alza | Covered by the listed advance |
| 03-22 hosting | No document; listed under Payments without a document |
| 03-25 FÚ | Excluded: bank code 0710, tax |
| 03-18 Spotify | Under 500 CZK |
Output.
# Invoice report – 2024-03 – Lipka Design s.r.o., IČO 08745218
Filing rule: DUZP | Search window: 2024-02-25–2024-04-10
Statement(s): Fio_2024-03.csv (2024-03-01–2024-03-31) | Missing coverage: 2024-04-01–2024-04-30
Summary: 4 filed | 2 Matched | 1 Probable | 0 Unmatched | 1 Not reconciled | 1 payment without document | 0 Low confidence
## Filed invoices
| File | Supplier | IČO | Inv. no. | VS | DUZP | Total | Cur | Status | Bank ref / note |
|---|---|---|---|---|---|---|---|---|---|
| 2024-03-01_Google-Ireland_5219384471_46-80-EUR.pdf | Google Ireland Limited | – | 5219384471 | – | 2024-03-01 | 46.80 | EUR | Probable | 2024-03-04, 1,182.40 CZK; 25.265 vs ČNB 25.290 (2024-03-04), −0.1%; no VS |
| 2024-03-01_O2-Czech-Republic_7712093344_1089-00-CZK.pdf | O2 Czech Republic a.s. | 60193336 | 7712093344 | 7712093344 | 2024-03-01 | 1,089.00 | CZK | Matched | 2024-03-14, amount+VS |
| 2024-03-05_Adobe-Systems-Software-Ireland_IEN2024001873_1452-00-CZK.pdf | Adobe Systems Software Ireland Ltd | – | IEN2024001873 | – | 2024-03-05 | 1,452.00 | CZK | Matched | 2024-03-05, card, amount+merchant |
| 2024-03-29_Tomas-Krejci_2024007_18000-00-CZK.pdf | Tomáš Krejčí | 07114524 | 2024007 | 2024007 | 2024-03-29 | 18,000.00 | CZK | Not reconciled – statement missing | Due 2024-04-12; upload Fio_2024-04 |
## Payments without a document (accountant: request these)
| Booking date | Amount | Counterparty | Account | Message/VS |
|---|---|---|---|---|
| 2024-03-22 | 6,050.00 CZK | VLTAVA HOSTING S.R.O. | 2701458820/2010 | "web hosting Q2" |
Excluded: 2024-03-25, 9,800.00 CZK, tax (Finanční úřad, bank code 0710)
Under 500 CZK without document: 1 debit, 89.00 CZK
## Advance invoices – expect final tax document
- Alza.cz a.s. (IČO 27082440), ZF 2400318822, 12,490.00 CZK, paid 2024-03-11, final document found: no
## Needs manual download
- none
## Duplicates and corrections
- O2 7712093344 – copy from 2024-03-20 (Fwd, [email protected]) skipped
## Questions for you / the accountant
- Vltava Hosting s.r.o., 6,050.00 CZK paid 2024-03-22: please forward the invoice for "web hosting Q2".
- Alza ZF 2400318822: please forward the "daňový doklad k přijaté platbě"; it is not in the mailbox.
- Alza reminder of 2024-03-18 cites invoice 2400291145 (3,290.00 CZK, due 2024-03-10): not in the mailbox and not paid in March. Do you have it?
- Upload the April statement (Fio_2024-04) to reconcile Tomáš Krejčí 2024007.
Manifest excerpt (/Invoices/2024/03/_manifest_2024-03.csv):
file,supplier,supplier_ico,supplier_vat_id,doc_class,invoice_no,vs,issue_date,duzp,due_date,total,currency,supplier_account,email_from,email_date,confidence,status,bank_booking_date,bank_amount_czk,match_score,note
2024-03-01_Google-Ireland_5219384471_46-80-EUR.pdf,Google Ireland Limited,–,IE6388047V,invoice,5219384471,–,2024-03-01,2024-03-01,2024-03-01,46.80,EUR,–,[email protected],2024-03-02,High,Probable,2024-03-04,1182.40,80,"FX 25.265 vs ČNB 25.290 (2024-03-04); missing VS"
2024-03-01_O2-Czech-Republic_7712093344_1089-00-CZK.pdf,O2 Czech Republic a.s.,60193336,CZ60193336,invoice,7712093344,7712093344,2024-03-02,2024-03-01,2024-03-16,1089.00,CZK,1006-2010111/0100,[email protected],2024-03-02,High,Matched,2024-03-14,1089.00,120,"issue date 2024-03-02 differs from DUZP month: no"
2024-03-05_Adobe-Systems-Software-Ireland_IEN2024001873_1452-00-CZK.pdf,Adobe Systems Software Ireland Ltd,–,IE6364992H,receipt,IEN2024001873,–,2024-03-05,2024-03-05,2024-03-05,1452.00,CZK,–,[email protected],2024-03-05,High,Matched,2024-03-05,1452.00,80,"card override"
2024-03-29_Tomas-Krejci_2024007_18000-00-CZK.pdf,Tomáš Krejčí,07114524,–,invoice,2024007,2024007,2024-03-29,2024-03-29,2024-04-12,18000.00,CZK,2101187734/2010,[email protected],2024-04-01,High,Not reconciled – statement missing,,,,"Neplátce DPH; needs 2024-04-01–2024-04-30"
Quality bar
- The user's confirmation of folder pattern, filing rule and period predates the creation time of every folder under
/Invoices/YYYY/MM/. - Every file in the month folder opens. Its page-1 title is in the File rows of the classification table in step 3, and its name matches exactly one
filevalue in the manifest. - Every file name is ASCII-only and follows
YYYY-MM-DD_Supplier_InvoiceNo_Amount-CUR.pdf, with the date equal to the manifest's filing date. - The manifest contains no value absent from its source document. Unknowns are
?and non-applicable fields are–. - Every IČO in the manifest passes the mod-11 checksum, or its row is Low confidence.
- Every Probable note names its missing signal. Every foreign-currency note gives the effective rate, the ČNB rate and the ČNB date.
- No debit appears in more than one match unless the note says "split payment" or "conflict".
- Every debit of 500 CZK or more is matched, listed under Payments without a document, covered by a listed advance, or listed on the Excluded line with a category.
- No invoice is Unmatched while its window (issue − 5 to due + 30 days) extends past the last statement date.
- The Summary counts equal the row counts in the tables. The manifest row count equals the PDF count in the folder, adjusted for
_multifiles. - No email was modified. No Drive file that existed before the run has a changed path, name or modification time.
- If Low confidence exceeds 15%, the report's first line is the WARNING line.
Failure modes
Accountant finds invoices in the wrong month — files were dated by email received date or issue date instead of DUZP — for every manifest row where issue_date and duzp fall in different months, confirm the folder month equals the DUZP month.
Proformas booked as costs — a zálohová faktura was filed as an invoice — search the text of every filed PDF for "záloh", "proforma" and "výzva k platbě"; any hit must be a "daňový doklad k přijaté platbě".
Duplicate costs — a forwarded or resent invoice was filed twice under different names — group the manifest by supplier IČO (or name) and invoice number; every group has 1 row or one _v2 row flagged in Questions.
Everything shows Matched but the accountant disagrees — recurring same-amount charges were matched on amount alone across months — confirm no debit is used twice and every Matched row has amount + VS, amount + account, or the card-override note.
Missing-document list is empty in a month with card spending — card debits were compared only against invoices with a VS and silently dropped — recount statement debits of 500 CZK or more and confirm each has one of the four outcomes in the Quality bar.
End-of-month invoices reported as unpaid — invoices due next month were marked Unmatched against a one-month statement — check every Unmatched row's due date + 30 days against the statement end date.
Late invoices missing — the search stopped at period end, and invoices emailed on days 1–10 of the next month were never found — confirm the search window end is at least period end + 10 days.
Credit note inflates costs — a dobropis was filed with a positive amount — every row with doc_class = credit note has a minus- file name and a negative total.
License
MIT