MosoFin · Invoice data extractor, in plain words

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.

The 20-second version

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.

What a run finds

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, pageSupplierNumberDateTotal $StatusWhy
A, p1Ridgeway WholesaleRW-8840Tue 6 Oct4,800.00Clean400 × 12.00. Known supplier. Order PO-2041 is in the books and open
A, p2Crestline LogisticsINV-7731Fri 31 Jul4,860.00StopA "Reminder" copy. The same number is in the books, and it is paid
A, p3Summit CleaningSC-0926Thu 1 Oct950.00ReviewThe work was in September, and the bill has an October date
A, p4Pinnacle DesignPD-305Wed 7 Oct2,400.00ReviewTwo supplier records in the books match Pinnacle
A, p5Lakeside FreightLF-7781Fri 2 Oct2,600.00ReviewSeptember work. The payment address is a PO box, and the supplier record shows a different address
A, p6Brightline SoftwareBS-5521Thu 1 Oct1,200.00CleanKnown supplier, terms agree, October subscription
A, p7-8Harbor Office SupplyINV-0478Fri 2 Oct1,988.66ReviewThe bill says Net 30. The supplier record says 2/10 Net 30
B, p1Harbor Office SupplyCN-0015Fri 9 Oct−96.34CleanA credit for 1 returned toner. No matching credit is in the books
B, p2Metro ShredMS-2209Fri 2 Oct139.90Clean, MediumThe figures do not add up: 120.00 + 9.90 = 129.90, not 139.90
B, p3Maple Ridge PackagingMRP-114null1,299.50ReviewNew supplier in Toronto. The bill shows "$" only, and "03/10/2026" has two possible readings
B, p4KeystoneKS-1140Thu 1 Oct350.00StopThe bill is for "Northbrook Holdings LLC", which is not a connected company
B, p5Oakfield SignsPF-0007Wed 7 Oct2,750.00ExcludedA pro forma: a quote for a sign, and not a bill
B, p6-7Harbor Office SupplystatementSet asideA statement of account. The skill offers to compare it with your payables balance, and does not post it
Example figures for a made-up company, in dollars. File A is bills_a.pdf and file B is bills_b.pdf. "Medium" is the confidence of the reading. The status is a separate grade.
Clean, 4 documents$6,043.564,800.00 + 1,200.00 + 139.90 − 96.34
Review, 5 documents$7,938.66950.00 + 2,400.00 + 2,600.00 + 1,988.66. Maple Ridge's 1,299.50 is in an unknown currency, so it is not in this total
Stop, 2 documents$5,210.004,860.00 + 350.00. The skill holds these from payment
US dollars in the extraction$19,192.226,043.56 + 7,938.66 + 5,210.00. The pro forma and the statement are not in 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.

The mistake it catches

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 months
Same supplier and same numberFound
Paid already22 Aug
StatusStop
The skill names the bill in the books that matches. It holds the $4,860 from payment until a person looks at it.

The common shortcut

Look at the unpaid bills only, then enter the new bill
Paid bills in the searchnone
Match foundno
Paid again$4,860
A list of unpaid bills does not show a bill that you paid. So the reminder copy goes into the books and into the next payment.

The 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.

How a run starts

Five questions, in one message

The skill asks these first, in one short batch. It asks only for what it cannot already see.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

What it will not guess

Three bills that need a person

Maple Ridge, MRP-114

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.

Keystone, KS-1140

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.

Lakeside, LF-7781

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.

What you need

Connect once, or upload the bills and your lists

Connected with MosoFin

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
Uploading instead

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
What you get back

Six sheets, from the bills to the coverage

InvoicesOne row for each bill, with the company, the status and any duplicate match.
Line itemsEach line exactly as the bill shows it. Three lines on the bill give three lines here.
Tax detailThe tax as printed, for each rate.
Source referenceThe file and the page for each figure.
Validation resultsEach check, its result and the tool that gave it. The sheet names each check that could not run.
CoverageWhat the skill read, and what you must supply because it could not read it.

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.

What it never does

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.
Words you'll hear

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.
Sources

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.

  1. 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.
  2. 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.
  3. 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.

About this skill

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 →