Accuracy benchmark
We emailed 558 documents to five client companies.
We set this up the way a bookkeeping firm uses DocStreamAI: one firm account managing five clients. A roofer, a plumber, a restaurant group, a creative agency and an importer, each with its own email inbox connected to DocStreamAI and its own QuickBooks company. Every PDF landed in the client's inbox the way supplier mail really does, as phone photos, faxes and credits with the minus sign in the wrong place. DocStreamAI picked each email up from that inbox, classified every attachment, read the fields and posted the result to that client's QuickBooks. Then we checked every step against an answer key. The 558 documents arrived as 551 PDFs, because some PDFs hold more than one bill.
- Supplier email
- Client's inbox
- DocStreamAI
- Client's QuickBooks
- documents emailed
- 558documents emailed
- emails to five client inboxes
- 493emails to five client inboxes
- records scored
- 559records scored
- kinds of trap
- 18kinds of trap
Benchmark report · every document sent
Classified correctly as invoice, receipt, credit memo or statement†
551 of 559 records. 558 documents sent, scored as 559 records on October 2, 2026.
98.3%
of fields read correctly (6,584 of 6,695 fields, across the 515 documents scored field by field)
95.9%
of documents with every key field right*† (494 of 515)
25 of 25
vendor statements recognised and kept out of the books
98.6%
of bills and vendor credits from documents with no trap posted to QuickBooks with every field matching (146 of 148)
* Line descriptions, quantities and unit prices are left out of this figure.
† One invoice titled “Statement of Charges” was set aside as a vendor statement, so no record was made. We count it as a miss.
By company · fields read correctly
Results · every record
551 of 559 records posted right or were kept out of QuickBooks.
Every record was checked against its answer key, scored October 2, 2026. The 558 documents make 559 records, because one scenario PDF is scored as two bills. The 8 it missed: 7 went into QuickBooks wrong and 1 never reached a record. Click a document to see it.
1 to 3 of 8
Roofing · Receipt
Went into QuickBooks wrong
Sent to Kestovane Ridge Roofing
Read right, then posted with the wrong date by a bug in our bulk submit button. The date in QuickBooks does not match the receipt.
Roofing · Receipt
Went into QuickBooks wrong
Sent to Kestovane Ridge Roofing
Read right, then posted with the wrong date by a bug in our bulk submit button. The date in QuickBooks does not match the receipt.
Restaurant · Invoice
Never reached a record
Sent to Fennick & Thorlow Restaurant Group
One invoice titled “Statement of Charges” was set aside as a vendor statement, so no record was made. We count it as a miss.
Creative agency · Receipt
Went into QuickBooks wrong
Sent to Wendlemarsh Creative Studio
Read right, then posted with the wrong date by a bug in our bulk submit button. The date in QuickBooks does not match the receipt.
Restaurant · Invoice
Went into QuickBooks wrong
Sent to Fennick & Thorlow Restaurant Group
Its printed due date disagrees with its payment terms, which should have held it for review.
Roofing · Receipt
Went into QuickBooks wrong
Sent to Kestovane Ridge Roofing
A payment printed on the page was not read, so the full total posted while a balance was still due. It should have been held for review.
Creative agency · Invoice
Went into QuickBooks wrong
Sent to Wendlemarsh Creative Studio
Read as a receipt, so it posted as an expense where a bill was due. Its printed due date also disagrees with its payment terms, which should have held it for review.
Creative agency · Invoice
Went into QuickBooks wrong
Sent to Wendlemarsh Creative Studio
Its due date was not read, and it should have been held for review. It went into QuickBooks as an expense where a bill was due, with no QuickBooks record linked back to it.
Delivery
How 493 emails got from the inbox to QuickBooks
Every email went to one client's inbox. DocStreamAI picked it up there, classified each attachment, extracted the fields and posted the record to that client's QuickBooks company. File names and subject lines never say "statement", "duplicate" or "two bills", so the only way to get these right is to read the page.
The five lanes add up to 540 documents. The other 18 of the 558 are scenario files, credit memos and multi-bill PDFs, sent to the same inboxes on top of each company's pile.
77% of the emails are the everyday case, one document attached. The rest are the shapes that go wrong.
382emails
One document per email
Right result: One record in the books.
25emails
Several invoices on one email
Right result: One bill for each attachment.
20emails
A receipt and an invoice together
Right result: An expense for the receipt and a bill for the invoice.
6emails
Several bills inside one PDF
Right result: Each invoice becomes its own bill. A long invoice stays one bill.
25emails
Vendor statements of account
Right result: No new bills. Seven of these emails also carry one new invoice, and only that invoice becomes a bill.
20emails
Emails about money with nothing attached
Right result: Nothing created.
10emails
The same invoice sent twice
Right result: Flagged as a duplicate, never posted twice.
5emails
"Did we ever pay this?"
Right result: No second bill.
Results · inside DocStreamAI
What DocStreamAI read
All 558 documents, text and scanned PDFs together, scored October 2, 2026. Each one was measured inside DocStreamAI from its company's inbox and checked against the answer key generated with it. Scanned PDFs are also broken out in their own section below, and receipts get a closer look in the receipts section.
Scored October 2, 2026: 558 documents sent, text and scanned PDFs together. 515 were scored field by field against their answer keys.
- 98.3%6584 of 6695
Extraction
Values read correctly off the page: vendor, dates, totals, tax, line items.
Every key field right at once* on 95.9% of documents (494 of 515)
- 98.6%551 of 559
Detection
Each document recognised as what it is: invoice, receipt, credit memo, or a vendor statement kept out of the books.
Of the 8 it got wrong, 3 were held for review, 1 never reached a record, 1 was not posted, 1 was waiting to match a card payment, 1 was posted, and the QuickBooks record matched, and 1 was posted when it should have been held for review
- 99.8%557 of 558
Intake
Documents that reached DocStreamAI from the email and were handled: a record for each bill, receipt and credit, and none for a vendor statement.
Vendor statements kept out of the books: 25 of 25
- 100.0%392 of 392
Vendor
The vendor on the QuickBooks record matches the document. Full breakdown in the vendor section below.
- Not measured yet
Categorization
The expense account chosen matches the one the company's chart of accounts intends.
Extraction, field by field
- Vendor name99.6%513 of 515
- Document number99.6%513 of 515
- Document date98.6%508 of 515
- Due date98.6%508 of 515
- Currency99.8%514 of 515
- Subtotal99.8%514 of 515
- Tax99.8%514 of 515
- Total99.6%513 of 515
- Number of lines98.1%505 of 515
- Line descriptionsLower severity97.9%504 of 515
- Line quantitiesLower severity94.4%486 of 515
- Unit pricesLower severity94.6%487 of 515
- Line amounts98.1%505 of 515
* Line descriptions, quantities and unit prices count as lower severity and are left out of this figure. QuickBooks records each line by its amount, so a wrong quantity or unit price does not change what lands in the books. Counting them too: 92.2% (475 of 515).
Every document we got wrong, grouped by cause: see every miss and why.
The five companies
Pick a business. Open its books.
Each one is invented, with its own QuickBooks company, its own email inbox and user, and a chart of accounts built for its trade. Open a company to see its full chart. Submission was set to automatic, so a document went straight to QuickBooks unless one of DocStreamAI's checks held it for review.
Image quality
One invoice, five ways it shows up
216 of the documents carry no text layer at all. Scans with speckle and skew, photos taken at an angle, faxes crushed to black and white. The picture is all there is to read.
324
Clean PDF
Straight from the vendor's system
140
Office scan
Speckle, skew, grey paper
49
Phone photo
At an angle, shadow across it
14
Fax
One bit black and white
13
Photocopy
Dark band down one edge
Deliberate difficulty
18 kinds of trap, set on purpose
Most of them lead to a confident, plausible, wrong number. Nothing looks broken, which is exactly why they cost money. Most damaging first. On receipts, DocStreamAI caught 24 of the 25.
- Subtotal1,284.00Sales tax99.51TOTAL1,383.51Paid by card-1,383.51BALANCE DUE0.00
The total is not the amount owed
The largest number on the page, the last number, and the number beside the word Total are all the same wrong number. Read it and you pay a bill that was already settled.
20 documents in the test kit, modelled on a document we have seen in use
- Shingles, 12 bdl418.20Drip edge, 10 ft46.90Rewards year to date41,820.00Amount due465.10
A bigger, unrelated number in the money column
It is frequently the largest figure on the document, often a hundred times the actual total, so anything that reaches for the biggest number returns it.
15 documents in the test kit, modelled on a document we have seen in use
- Skelvane Ridge Building ProductsThe Skelvane Ridge Building Products CoSKELVANE RIDGE BLDG PRODUCTSone supplier, three vendor records
The same vendor, spelled several ways
Each spelling can create a separate vendor record, splitting one supplier's history across several records and breaking every report built on it.
15 documents in the test kit, modelled on a document we have seen in use
- Returned material56.82-Restock fee4.00
The minus sign after the number
Stop reading at the last digit and you get a positive 56.82. The sign is silently dropped, so a credit posts as a charge.
10 documents in the test kit, modelled on a document we have seen in use
- Credit applied(56.82)Invoice 20417512.40
Negatives in parentheses
Drop the parentheses and the sign flips. It is the same failure as above, arriving by a different route.
10 documents in the test kit, modelled on a document we have seen in use
- Lines, tax included216.00Includes tax16.46Total216.00
Tax already inside the line amounts
Add the tax on top, as most documents require, and the bill is overstated by the tax amount.
10 documents in the test kit, modelled on a document we have seen in use
- INV 4471 03/14640.00INV 4478 03/14640.00same vendor, same PO, two real bills
Two real invoices that look like one
Matching on vendor and amount collapses them into one, and a legitimate second bill is never paid.
10 documents in the test kit, modelled on a document we have seen in use
- INV 2093 03/021,118.40INV 2093 03/021,118.40arrived again four days later
The same invoice delivered twice
Treat them as two documents and the same bill gets paid twice.
10 documents in the test kit, modelled on a document we have seen in use
- €1.240,50£86.20C$312.00MX$4,150.00
Not in dollars
Read the number without the currency and the amount is right but the money is wrong.
10 documents in the test kit
- p.1 Pellworth FastenersINV 5521p.2 Dunmere Sheet MetalINV 0907one file, two vendors
Two separate invoices in one file
Read as a single document, two vendors' money merges into one bill and the second supplier never gets recorded.
6 documents in the test kit, modelled on a document we have seen in use
- Charges480.00Payment received-400.00Credit memo-80.00Balance0.00
Charges, then payments, then nothing owed
Post it as a payable and you have created a bill for money that is not owed.
5 documents in the test kit, modelled on a document we have seen in use
- Invoice date04/09/26Due date0/00/00
A date field that prints 0/00/00
The field is not empty, so every check for a missing value passes it straight through. Only an attempt to parse it reveals it is junk.
5 documents in the test kit, modelled on a document we have seen in use
- TermsNet 30Due date
Payment terms, but no due date
The due date has to be calculated from the terms and the invoice date, or a perfectly good bill gets held back for review.
9 documents in the test kit, modelled on a document we have seen in use
- Qty PriceExt12 8.5096.9012 × 8.50 is 102.00, the vendor billed 96.90
Quantity times price does not equal the line total
Recalculate from quantity and unit price and you silently restate the invoice to a number the vendor never charged.
5 documents in the test kit, modelled on a document we have seen in use
- TermsDue date
No due date at all
This one should be held for a human. A bill with no due date is often a quote or an order confirmation that was misread as an invoice.
1 document in the test kit, modelled on a document we have seen in use
- Issued04/01/26Due04/01/26monthly plan, paid on issue
Issue date and due date are the same
It is not an overdue bill, and treating it as one puts a recurring charge into a chasing workflow.
5 documents in the test kit, modelled on a document we have seen in use
- Freight.00Fuel surcharge12.00
Amounts printed as .00
Strict number parsing rejects it, and a lenient parser can attach it to the wrong field.
5 documents in the test kit, modelled on a document we have seen in use
- Romaine, cs 6141.00short 2 cs, credit to follow
The driver wrote on it
The printed total is no longer what is owed, and only the handwriting knows the real number.
1 document in the test kit, modelled on a document we have seen in use
Results · wrong fields
What happened to a misread field
494 of 515 documents had every key field right*. Submission was automatic, so an invoice went to QuickBooks unless something kept it out. Here is every invoice read with a field wrong, by how serious the mistake was.
11 invoices had a key field misread, text and scanned together, and 10 of them were kept out of the books. Another 5 had only a lower severity slip, such as a unit price, which does not change what QuickBooks records.
- Total, tax or subtotal wrong1invoicesKept out 1 · Posted 00
- Document date wrong5invoicesKept out 5 · Posted 00
- Due date wrong, document date right3invoicesKept out 2 · Posted 11
- Vendor name, document number or currency wrong2invoicesKept out 2 · Posted 00
- Lower severity only: a description, quantity or unit price5invoicesKept out 0 · Posted 55
Kept out of the booksPosted to QuickBooks
What "kept out" covers: 10 were held for review by one of DocStreamAI's checks.
Results · receipts
Receipts, from the inbox to the books
200 receipts across the five companies, text and scanned together, with measures of their own. Each one was checked against its answer key, and every one that posted was read back from QuickBooks.
Reading the receipt
- 100.0%200 of 200
Reached DocStreamAI and read
- 97.5%195 of 200
Read as a receipt
- 95.5%191 of 200
Every key field right
- 88.5%177 of 200
Every field right, line items included
Traps
24 of 25 caught
5 of 5
Not in dollars
5 read in their own currency and kept out of these US dollar books.
5 of 5
A bigger, unrelated number
The stray figure was never taken for the total.
5 of 5
Vendor spelled another way
Booked to the same vendor however the name was written.
9 of 10
Total is not the amount owed
5 held for review because a balance was still due, and 4 paid in full and posted for the full total.
1 missed: 1 posted its full total while a balance was still due, and should have been held for review.
In QuickBooks
185 posted as expenses, and every one read back from QuickBooks.
Amount
185 of 185
Tax
185 of 185
Vendor
185 of 185
Date
182 of 185
Currency
185 of 185
Kept out of the books
15 of 200 never posted, so nothing wrong reached QuickBooks.
- 5showed a balance due that differs from the total. Each was held for review, as it should be.
- 5not in dollars. Each was read in its own currency and not posted to these US dollar books.
- 4read as an invoice. Each was kept out, so nothing wrong was posted.
- 1read right but not posted by the end of the test.
Where every receipt ended up, by company
Every receipt is counted once, in one of these. Passed means right from the email to the QuickBooks record.
- 147 passed end to end
- 14 traps caught, posted with every field right
- 20 posted with the total right, a line item or subtotal read differently
- 15 kept out of QuickBooks, nothing posted
- 4 posted with a mistake
- 0 never reached a record
- Roofing40 receipts
- 27 passed end to end
- 2 traps caught, posted with every field right
- 6 posted with the total right, a line item or subtotal read differently
- 2 kept out of QuickBooks, nothing posted
- 3 posted with a mistake
- HVAC & plumbing40 receipts
- 24 passed end to end
- 3 traps caught, posted with every field right
- 8 posted with the total right, a line item or subtotal read differently
- 5 kept out of QuickBooks, nothing posted
- Restaurant40 receipts
- 33 passed end to end
- 2 traps caught, posted with every field right
- 1 posted with the total right, a line item or subtotal read differently
- 4 kept out of QuickBooks, nothing posted
- Creative agency40 receipts
- 29 passed end to end
- 4 traps caught, posted with every field right
- 4 posted with the total right, a line item or subtotal read differently
- 2 kept out of QuickBooks, nothing posted
- 1 posted with a mistake
- E-commerce40 receipts
- 34 passed end to end
- 3 traps caught, posted with every field right
- 1 posted with the total right, a line item or subtotal read differently
- 2 kept out of QuickBooks, nothing posted
- When more than one applies, a receipt counts once, under the worst: never reached a record, then posted with a mistake, then kept out, then a line item or subtotal read differently.
- Kept out means nothing reached the books: the receipt was held for review, or read and left unposted.
- Of the 24 traps caught, 14 posted with every field right. The rest are counted where they ended up: 10 kept out of QuickBooks.
Where it went wrong
- 1 of 10 "total is not the amount owed" receipts posted its full total while a balance was still due. It should have been held for review.
- 3 receipts were read right but posted with the wrong date by a bug in our bulk submit button. The date in QuickBooks does not match the receipt.
- 5 receipts were read as an invoice: 4 were kept out of QuickBooks, and 1 still posted right as an expense.
- 23 receipts had a line item or the subtotal read differently. Every other field was right on each one, the total included.
Results · vendors
Did each record land on the right vendor?
A vendor only needs to be set up once. After that, every bill, receipt and credit from them should land on the same vendor in QuickBooks, whatever way the name is written. We read every posted record back from QuickBooks and compared its vendor with the document.
How this was tested
Every bill, vendor credit and expense that posted in the five QuickBooks companies was read back, and the vendor on each record was compared with the vendor printed on the document.
QuickBooks records with the right vendor. Text and scanned PDFs, every document type.
- Vendor name written differentlythe spelling trap100.0%12 of 12
- Text PDFs100.0%238 of 238
- Scanned PDFs100.0%154 of 154
- Invoices100.0%164 of 164
- Receipts100.0%185 of 185
- Credit memos100.0%43 of 43
- Roofing
- 90 of 90
- HVAC & plumbing
- 80 of 80
- Restaurant
- 68 of 68
- Creative agency
- 79 of 79
- E-commerce
- 75 of 75
392posted with the right vendor
The vendor on the QuickBooks record is the vendor on the document. That includes all 12 posted records where the vendor's name was written a different way, such as with "The" in front or "Co" at the end.
0posted with the wrong vendor
No record in any of the five companies landed on the wrong vendor.
Results · scanned PDFs
Scanned PDFs, on their own
Once a scan is read, it scores almost level with a text PDF: 98.3% of fields read correctly against 98.3%, and 215 of 216 identified as the right type. They are counted in the results above too. Here they stand on their own, next to the text PDFs, the kind billing software makes.
216 scanned PDFs sent: office scans, phone photos, faxes and photocopies saved as PDF. All of them reached DocStreamAI. 208 were scored field by field. The other 8 are vendor statements, which have no fields to score.
Once a scan is read
- 98.3%2659 of 2704
Fields read correctly
- 95.2%198 of 208
Every key field right*
- 99.5%215 of 216
Type detected
Text PDFs, for comparison: 98.3% of fields read correctly, and every key field right* on 96.4% of documents.
Getting a scan to that point
The only attachment on its email
167 of 167
All 167 reached DocStreamAI.
Sent with other attachments
49 of 49
All 49 reached DocStreamAI.
Scanned vendor statements kept out of the books
8 of 8
All 8 were recognised as statements. None was posted as a bill.
* Line descriptions, quantities and unit prices count as lower severity and are left out of this figure. QuickBooks records each line by its amount, so a wrong quantity or unit price does not change what lands in the books. Counting them too: 91.3% (190 of 208).
Results · in QuickBooks
What landed in QuickBooks
The second place accuracy counts: the record in QuickBooks matches the document, field by field. Read back from each QuickBooks company, per record type.
Every record posted
400 of 405 records posted to QuickBooks match the document on every field, every record type.
The 5 that do not: 2 of the records that posted wrong, named at the top of this report, and 3 posted with a wrong date by a bug in our bulk submit button.
Documents with no trap
98.6% of bills and vendor credits posted to QuickBooks with every field matching the document.
Bills and vendor credits, traps included: 206 of 208 (99.0%).
- 98.8%163 of 165
Bills
Created from invoices.
98.8% match the document, traps included. From documents with no trap: 103 of 105. 2 invoices went in as expenses where a bill was due, and count here as bills that do not match.
- 100.0%43 of 43
Vendor credits
Created from credit memos.
100.0% match the document, traps included. From documents with no trap: 43 of 43.
- 98.4%182 of 185
Expenses
Created from receipts.
98.4% match the receipt on every field read back, lines included. On amount, tax, vendor, date and currency: 182 of 185. All 185 posted receipts across all five companies were read back.

