A pile of supplier bills came in. What do they say, and should we not pay one of them?
This skill reads your supplier bills, from PDFs, scans or photos. It turns each bill into fields that your books can use. Then it checks each bill against your books before anyone pays it.
You give it the bills. It reads the supplier, the number, the dates, the lines and the totals. It writes null for a field that it cannot see. It looks for a bill that is already in your books or already paid. It gives each bill one status: Clean, Review or Stop. It never posts a bill, never pays a bill and never changes your books.
Twelve documents at Northbrook Trading on 12 October
Northbrook Trading works in US dollars and keeps its books in QuickBooks, connected through MosoFin. On Monday 12 October 2026, the owner gives the skill two PDFs. The first PDF has 8 pages and 7 documents. The second PDF has 7 pages and 6 documents. One of the 13 documents is a supplier statement, so the skill sets it aside. That leaves 12 documents to read.
For each bill, the skill records the supplier, the amount, the date and a description of the purchase. The US tax agency lists the same details for the papers that support a business expense1. The skill also records the file and the page of each figure, so that you can find the paper again.
| File, page | Supplier | Number | Date | Total $ | Status | Why |
|---|---|---|---|---|---|---|
| A, p1 | Ridgeway Wholesale | RW-8840 | Tue 6 Oct | 4,800.00 | Clean | 400 × 12.00. Known supplier. Order PO-2041 is in the books and open |
| A, p2 | Crestline Logistics | INV-7731 | Fri 31 Jul | 4,860.00 | Stop | A "Reminder" copy. The same number is in the books, and it is paid |
| A, p3 | Summit Cleaning | SC-0926 | Thu 1 Oct | 950.00 | Review | The work was in September, and the bill has an October date |
| A, p4 | Pinnacle Design | PD-305 | Wed 7 Oct | 2,400.00 | Review | Two supplier records in the books match Pinnacle |
| A, p5 | Lakeside Freight | LF-7781 | Fri 2 Oct | 2,600.00 | Review | September work. The payment address is a PO box, and the supplier record shows a different address |
| A, p6 | Brightline Software | BS-5521 | Thu 1 Oct | 1,200.00 | Clean | Known supplier, terms agree, October subscription |
| A, p7-8 | Harbor Office Supply | INV-0478 | Fri 2 Oct | 1,988.66 | Review | The bill says Net 30. The supplier record says 2/10 Net 30 |
| B, p1 | Harbor Office Supply | CN-0015 | Fri 9 Oct | −96.34 | Clean | A credit for 1 returned toner. No matching credit is in the books |
| B, p2 | Metro Shred | MS-2209 | Fri 2 Oct | 139.90 | Clean, Medium | The figures do not add up: 120.00 + 9.90 = 129.90, not 139.90 |
| B, p3 | Maple Ridge Packaging | MRP-114 | null | 1,299.50 | Review | New supplier in Toronto. The bill shows "$" only, and "03/10/2026" has two possible readings |
| B, p4 | Keystone | KS-1140 | Thu 1 Oct | 350.00 | Stop | The bill is for "Northbrook Holdings LLC", which is not a connected company |
| B, p5 | Oakfield Signs | PF-0007 | Wed 7 Oct | 2,750.00 | Excluded | A pro forma: a quote for a sign, and not a bill |
| B, p6-7 | Harbor Office Supply | statement | Set aside | A statement of account. The skill offers to compare it with your payables balance, and does not post it |
The count of 12 includes the credit memo and the pro forma, because the skill read them. Only 11 documents become rows in the extraction. Only 10 of those are in the US dollar totals, because Maple Ridge's currency is unknown. The status count is 4 Clean + 5 Review + 2 Stop + 1 Excluded = 12.
A reminder copy of a bill that you paid in August
Crestline Logistics sent bill INV-7731 for $4,860 again, with the word "Reminder" on it. Northbrook paid that bill by cheque on Saturday 22 August. It paid the same bill again by ACH on Friday 4 September. A reminder copy looks like a new bill.
What the skill does
It searches all bills from Crestline, paid and open, for the last 12 monthsThe common shortcut
Look at the unpaid bills only, then enter the new billThe skill matches on the supplier and the bill number, with the number written in one standard form. It also matches on the amount and a window of dates. Duplicate bills occur in large organizations too. The US Government Accountability Office found 365 possible duplicate invoices in one payment system of the Veterans Health Administration. Their value was about $1.7 million, over fiscal years 2018 to 20232.
That system compares key fields with bills that it paid already. The GAO says that its own data matching shows possible problems, and that a match is not proof2. The skill works in the same way. A match gives a Stop for a person to look at. If the skill finds no match, it does not call that proof that the bill is new.
The double payment of August and September is a different problem. This skill does not name a skill for it. This page's reading is that the duplicate invoice detection skill finds it. This skill stops the third copy.
Five questions, in one message
The skill asks these first, in one short batch. It asks only for what it cannot already see.
- Use MosoFin for this run, or upload the data yourself?MosoFin is the connection to your books and the other platforms you link. With it, the skill reads from there. Without it, you upload the files, and the checks are the same. The skill asks this only if your account has the MosoFin tools. If not, it says once that the run is manual.
- The bills: PDF, PNG, JPG or a scan of many pages.Your books do not hold the bills, so you always supply them. You must supply this item. The skill records each file name and the count.
- Which company receives the bills? In a group of companies, which company does each bill belong to?The skill compares the name on each bill with this company. On the MosoFin path, it reads the legal name from your company profile. In a group, it proposes a company for each bill from the name on it, and you approve each one.
- Which output: Excel (xlsx), CSV or JSON?This is optional. The default is Excel. The skill makes the file only when you say yes. If you say no, you get the same sheets as tables in the chat.
- Is any document in the batch not a bill, for example a receipt, a statement, a contract or a quote?Accountants usually do not post statements and pro formas. The skill asks you before it extracts any document that is not a bill.
Then it reads the plan back and waits for your yes. This is the skill's own read-back, for Northbrook:
"Extracting 12 invoices from two PDFs you uploaded for Northbrook Trading, and validating each against the vendor master and posted bills read from your Mosofin connection. Output as xlsx. One file looks like a supplier statement, which is usually not posted — shall I set it aside and go ahead with the rest?"
For Northbrook, the "one file" is the last two pages of bills_b.pdf. The method also tells the skill to ask how far back the duplicate search must go. Northbrook agreed to 12 months. The skill can start to read the bills before you approve the workspace. It checks nothing against your books until you say yes.
Three bills that need a person
Which dollar, and which date?
The bill shows "$" only. Many countries use the dollar sign. The Toronto address is a hint, and it is not proof. The date "03/10/2026" can be 3 October or 10 March. The skill flags the currency and the date and asks you. The skill does not say what to write in these fields while they are open. This page shows null.
A bill for a different company
The bill is for "Northbrook Holdings LLC". No connected company has that name. The skill stops and asks you. It never sends the bill to the company with the nearest name.
A new payment address
The payment address on the bill is a PO box, and the supplier record shows a different address. The skill cannot read bank details, so it reports the bank-detail check as NOT RUN. It asks you to call Lakeside on a phone number that you already have.
The FBI gives the same advice for payment requests that come by email. Check the request by a different channel, for example a call to a number that you already have on file. Never change payment details before you check the change with the intended recipient3.
Metro Shred's figures do not add up. The skill reads the figures again first. If they stay the same, it records them as printed, marks the reading Medium and shows the difference of 10.00. It never fixes a figure without telling you.
Connect once, or upload the bills and your lists
Say yes, then give it the bills
- It reads back the workspace and the company file by name, and waits for your yes
- It reads the supplier list: name, tax ID, address and terms
- It reads the bills in your books and the payments, and the purchase orders where they exist
- It reads the company's legal name, base currency and country from the company profile
- You still give it the bills. MosoFin holds no documents and no supplier bank details
Bring the bills, and your lists if you have them
- The bills: PDF, PNG, JPG or a scan of many pages. Required
- Your company's legal name and any trading names, typed in the chat. Required
- Each supplier's history: all bills, open and paid, and the payments. CSV or XLSX, recommended. Without it, the duplicate and already-paid checks cannot run. A list of unpaid bills alone is not enough
- Supplier list with name, tax ID, address and terms. CSV or XLSX, recommended
- A supplier name map and the output format. Optional
Six sheets, from the bills to the coverage
For Northbrook, the file is Invoices_Extracted_2026-10-12_12invoices.xlsx. The skill can give JSON in place of the sheets. After you see the results, it offers to save your preferences for the next run. It never saves the contents of a bill, an amount, bank details, a payment address or a document.
Six rules that never bend
- Never reads MosoFin without asking. A connected account is not permission to read it.
- Never reads your books before you answer the intake questions and say yes to the read-back.
- Never writes, updates or deletes anything, in any system. Every entry that it makes is a proposal for a person to post.
- Never guesses a field. A field that it cannot see is null. It never assumes a currency, a date or a supplier. A "$" alone is never US dollars by default. It never fixes a bill without telling you when the figures do not add up.
- Never treats the address check as the bank-detail check. It reports the bank-detail check as NOT RUN. A change of bank details needs a check by a different channel. It never enters, sends or stores bank details, and it hides them in the output.
- Stops on a duplicate, a bill that is paid already, or a bill for another company. It asks when the name on the bill matches no connected company. It flags a new supplier for review and never accuses that supplier.
Six terms, in plain English
- Bill-To
- The company name that the supplier writes on the bill as the customer.
- Duplicate invoice
- A second copy of a bill that is already in your books. If you pay it, you pay twice2.
- Remit-to
- The name and address that the supplier asks you to pay.
- Credit memo
- A document from the supplier that reduces what you owe, for example for returned goods. Its amounts are negative.
- Pro forma
- A quote in the shape of a bill. It is not a bill, so the skill excludes it unless you say otherwise.
- Statement
- A list of a supplier's bills and payments. Accountants usually post the bills on it, and not the statement.
Where the facts on this page come from
The sources are a US tax agency page, a US audit report and an FBI notice. We found each one on 28 October 2026 in search results. We did not open the pages, so follow each link for today's wording. What the skill does comes from the skill's own files.
- IRS: What kind of records should I keepInvoices are among the papers that support purchases and expenses. These papers should show the payee, the amount, proof of payment, the date and a description of the purchase. Proof of payment alone does not show that the amount was a business expense.
- GAO: Veterans Health Administration, Further Improvements Needed to ... (special mode transportation invoices)The GAO found 365 possible duplicate invoices in one VA payment system, about $1.7 million, over fiscal years 2018 to 2023. That system archives an exact match of key fields to a paid invoice as a duplicate, and sends near matches to a person for review. The GAO says that its data matching shows possible problems and is not proof of improper payments.
- FBI Internet Crime Complaint Center (IC3): Public Service Announcement on business email compromise, 2023Check payment and purchase requests outside email, for example by a call to a number that you already have on file. Never make a payment change before you check it with the intended recipient.
No outside authority backs the Clean, Review and Stop statuses, the confidence levels, the six sheets or the file name. They are the skill's own rules. We made up Northbrook Trading, the batch of 12 documents and every figure in the example for this page. All three sources are US sources.
This page explains invoice-data-extractor, from the MosoFin finance skills library, MosoFin/mosofin-finance-skills on GitHub. Read the skill on GitHub → The skill is in the card format on the main branch. It merged in PR #1 on 26 October 2026, and a bookkeeping-audit fix followed on 27 October 2026. This page describes that version. Want the worked examples? Learn it step by step →