Invoice Parser API

Turn any invoice PDF or image into clean, structured JSON through one endpoint. Vendor, invoice number, dates, totals, tax, and line items — normalized and ready to use. Rule-based parsing reads every field, then an AI model checks the result and corrects what it finds wrong before you get it.
97%

97% field-level accuracy

Tested on 500+ real receipts and invoices

Every result also carries confidence and needs_review.
How we test →

What it does

One endpoint

Send a PDF, PNG, or JPG to a single endpoint and get back named fields, not raw text.

Built for line items

Get each row — description, quantity, unit price, and totals — not just the invoice header.

Normalized output

ISO dates, decimal amounts, and a consistent schema across every vendor's layout.

Real output

Live example

Sample document

SellerNunez Inc
Invoice #31293737
Date2020-12-15
7 line items
Total$408.66

Real output from the API — nothing hand-edited. The data object returned by GET /api/v1/documents/{id}.

{
  "document_type": "invoice",
  "document_number": "31293737",
  "invoice_id": "31293737",
  "receipt_id": null,
  "date": "2020-12-15",
  "due_date": null,
  "currency": "USD",
  "merchant": "Nunez Inc",
  "merchant_address": "6551 Janet Gardens, Michaelberg, KS 90952",
  "merchant_email": null,
  "customer": "Alvarez Inc",
  "subtotal": "371.51",
  "tax": "37.15",
  "tax_rate": "10.00",
  "discount": null,
  "shipping": null,
  "total": "408.66",
  "payment_method": null,
  "notes": null,
  "line_items": [
    {
      "description": "Women's black cocktail dress, size 4",
      "quantity": 3,
      "price": "19.99",
      "line_total": "59.97",
      "vat_rate": "10.00"
    },
    {
      "description": "Christmas Dress Grace Karin Sleeveless Christmas dress Red Black size Large",
      "quantity": 1,
      "price": "9.99",
      "line_total": "9.99",
      "vat_rate": "10.00"
    },
    {
      "description": "Windsor womens black and Pink Bodycon Sleeveless Dress, Womens Size Small",
      "quantity": 1,
      "price": "15.83",
      "line_total": "15.83",
      "vat_rate": "10.00"
    },
    {
      "description": "Lumiere Large Multicolored Orange Short Dress NWT",
      "quantity": 4,
      "price": "4.99",
      "line_total": "19.96",
      "vat_rate": "10.00"
    },
    {
      "description": "Xhilaration Womens L Burgandy Boho Embroidered Festival Mini Dress NEW",
      "quantity": 4,
      "price": "14.95",
      "line_total": "59.80",
      "vat_rate": "10.00"
    },
    {
      "description": "Johnny Was Medium Linen Wrap Dress Dessert Rose Embroiderd Bohemian",
      "quantity": 2,
      "price": "89.99",
      "line_total": "179.98",
      "vat_rate": "10.00"
    },
    {
      "description": "Pre-Owned Women's Nah Nah Dress Size 8 Black Sheer Formal Sexy",
      "quantity": 2,
      "price": "12.99",
      "line_total": "25.98",
      "vat_rate": "10.00"
    }
  ]
}

Code

Submit the file, then fetch the JSON.

Every sample submits the file, then fetches the result until its status is completed or failed. On Starter and Pro, a webhook can deliver it instead.

# 1. Submit the document
curl -X POST https://docuparseapi.com/api/v1/extract \
  -H "Authorization: Bearer $DOCUPARSE_API_KEY" \
  -F "file=@invoice.pdf"
# → {"success": true, "document_id": "<id>", "status": "queued"}

# 2. Fetch the result (repeat until "status" is "completed" or "failed")
curl https://docuparseapi.com/api/v1/documents/<id> \
  -H "Authorization: Bearer $DOCUPARSE_API_KEY"

Try it on your own document

Upload a receipt or invoice and see the JSON. No sign-up needed.

Try it on your document — no sign-up

Output

Fields returned

document_type
document_number
invoice_id
date
due_date
currency
merchant
merchant_address
merchant_email
customer
subtotal
tax
tax_rate
discount
shipping
total
notes
confidence
needs_review
line_items[] (description, quantity, price, line_total, vat_rate)

Full schema with types →

FAQ

Questions

What is an invoice parser API?

+
An invoice parser API takes an invoice PDF or image and returns its data as structured JSON: vendor, invoice number, dates, totals, tax and every line item.

Which invoice fields are returned?

+
invoice_id, date, due_date, merchant, merchant_address, customer, currency, subtotal, tax, tax_rate, discount, shipping, total, and line items with description, quantity, price, line_total and vat_rate.

How are multi-page invoices billed?

+
As one document, with up to 10 pages. A 10-page invoice costs the same as a one-page receipt. On per-page APIs such as AWS Textract and Mindee it would be 10 billable pages.

How long can a document be?

+
Every document includes up to 10 pages. A 10-page invoice counts as one document, the same as a one-page receipt. A document of 11 to 20 pages counts as two documents.

Can I send the data to QuickBooks or Xero?

+
Yes. Our guides show how to create a bill from the extracted fields and attach the original PDF.

How is AI used?

+
Rule-based parsing reads every field, then an AI model checks the result and corrects what it finds wrong before you get it.

What does it cost per invoice?

+
Free covers 20 a month. Starter is $11.99 for 1,000 invoices a month; Pro is $49.99 for 5,000. No minimum, no annual contract.

How do I get the result?

+
Submit the file to POST /api/v1/extract, then fetch it from GET /api/v1/documents/{id}. On Starter and Pro, a webhook can push it to your server instead.

How long are invoices stored?

+
Until you delete them from your dashboard. They are not used to train AI models.

Guides: QuickBooks · Xero

How the extraction works+
  1. 01Read — the document is converted to text with OCR (for images) or parsed directly (for digital PDFs).
  2. 02Parse — deterministic rules pull out each field and line item and normalize dates and amounts.
  3. 03Check — the result is scored for confidence: totals are reconciled (subtotal + tax = total), required fields are verified, and formats are validated.
  4. 04Review — an AI model then reviews every document and corrects the fields it finds wrong, looking hardest at the ones the rules were unsure of.

Every response includes a confidence score and a needs_review flag, so you always know which results to trust and which to double-check.

Try it on your own document.

20 documents a month free, with full API access. No credit card. Webhooks on Starter and Pro.

Try it on your document — no sign-up