Example

Invoice to QuickBooks — Real Extraction Walkthrough

A real vendor invoice processed by Parsli and posted to QuickBooks Online as a Bill — with the original PDF attached. Here's exactly what went in, what came out, and what landed in QuickBooks.

Source: Source document modeled on Intuit's publicly-published sample QuickBooks vendor invoice (intuit.com/support). Vendor details, amounts, and addresses are illustrative; no real customer data is shown. This is a representative example of what Parsli extracts — your real invoices produce the same shape of output.
1Input

Document comes in

Sample vendor invoice (Intuit QuickBooks public-docs sample, format-preserved)

2Parsli

AI extracts to your schema

11 fields defined · Google Gemini 2.5 Pro

3Destination

QuickBooks Online

Structured, validated, ready to post

Step 1

The schema

The fields we asked Parsli to extract. Defined once in the no-code schema builder (no per-vendor templates).

FieldTypeRequiredDescription
vendor_namestringSupplier name — matched against your QuickBooks Vendor list
vendor_addressstringBilling address on the invoice
invoice_numberstringVendor's invoice number
invoice_datedateDate the invoice was issued (ISO 8601)
due_datedatePayment due date
po_numberstringPO reference if present
subtotalcurrencyPre-tax total in invoice currency
taxcurrencyTax amount
totalcurrencyAmount due — maps to QuickBooks Bill total
payment_termsstringe.g. Net 30, Net 60
line_itemstableTable of line items: description, quantity, unit_price, total
Step 2

The extraction

Exact JSON returned by Parsli for this document. Confidence scores included for every field so you can flag low-confidence extractions for review.

extraction.jsonExtracted in under 4s
{
  "vendor_name": "Acme Manufacturing Co.",
  "vendor_address": "4521 Industrial Blvd, Columbus, OH 43215, USA",
  "invoice_number": "INV-2026-04821",
  "invoice_date": "2026-04-15",
  "due_date": "2026-05-15",
  "po_number": "PO-18472",
  "subtotal": 2847,
  "tax": 256.23,
  "total": 3103.23,
  "payment_terms": "Net 30",
  "line_items": [
    {
      "description": "Widget assembly — SKU W-104",
      "quantity": 50,
      "unit_price": 42,
      "total": 2100
    },
    {
      "description": "Shipping and handling",
      "quantity": 1,
      "unit_price": 147,
      "total": 147
    },
    {
      "description": "Expedite fee",
      "quantity": 1,
      "unit_price": 600,
      "total": 600
    }
  ],
  "confidence_scores": {
    "vendor_name": 0.98,
    "invoice_number": 1,
    "total": 1,
    "line_items": 0.95
  }
}
Step 3

Lands in QuickBooks Online

What happens after extraction — where the data goes, what it looks like in the destination system.

Bill #INV-2026-04821 posted under vendor "Acme Manufacturing Co." with all 3 line items expanded to line-level detail in QuickBooks. The original invoice PDF is attached to the Bill as an Attachable. Total: $3,103.23, due 2026-05-15. Parsli matched the extracted vendor name against the existing QuickBooks Vendor list; had it been a new vendor, the delivery would have failed loudly (auto-create-vendor toggle is OFF by default) so no duplicate vendor ever gets silently created.

See the QuickBooks Online integration

Walkthrough

What we did

We defined an 11-field Parsli schema for vendor invoices (vendor name, dates, totals, PO, line items as a table) and pointed the parser at Acme's PDF. The AI read the document end-to-end in one pass — no template zones, no per-vendor training — and returned structured JSON matching the schema in under 4 seconds. The parser was configured with QuickBooks as a destination: the same extraction went straight to QuickBooks Online as a Bill, with the PDF attached.

Why it worked

Invoice layouts vary wildly between vendors but the semantic fields (who's billing whom, for what, for how much, due when) are stable. Google Gemini 2.5 Pro, which powers Parsli's extraction, is strong at mapping these semantic fields across layout variations — so the same schema works for Acme's invoice as for a completely different format from a different vendor. The `line_items` table field preserved each row with quantity, unit price, and line total — critical for QuickBooks Bills that need line-level detail for coding against expense accounts.

How it's different from template-based tools

A template-based parser (Docparser, Parseur) would have required someone to draw field zones on a sample Acme invoice. When Acme redesigns their invoice next quarter, the template breaks silently — missing fields, wrong extractions, or worse, Bills posting with wrong amounts. Parsli's AI approach adapts automatically. And because the QuickBooks integration is native (OAuth 2.0, Intuit App Assessment approved), there's no Zapier subscription in the middle — just invoice in, Bill out.

Try your own document.

Upload an invoice, email, or PDF. Define the fields you want. Get back structured JSON — same shape as this example, your data. Free plan included.