Receipt parsing

Convert Receipts to JSON

Upload a receipt file and receive a structured JSON object with merchant, total, tax, date, currency, receipt ID, payment method, and line items. One endpoint. No parser to build. Rule-based parsing reads every field, then an AI model checks the result and corrects what it finds wrong before you get it.

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

JSON structure

What the JSON includes

Named fields your application can read directly — no parsing required

merchant
Store or vendor name
total
Final charged amount
subtotal
Pre-tax total
tax
Tax amount
date
Transaction date
currency
ISO 3-letter code
receipt_id
Receipt identifier
payment_method
Card, cash, etc.
merchant_email
Vendor email if present
merchant_address
Store address if present
line_items
Products or services list

Receipt file → JSON object

Send the file. Receive structured data. No custom parsing, no regex, no layout detection.

Before — receipt file

EXAMPLE MARKET
123 Commerce Street
Date: 05/10/2026
Receipt #R-10492
Example item x1 ..... $19.50
Subtotal: $39.00
Tax (10%): $3.90
Total: $42.90
Payment: Card

After — JSON response

{
  "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"
    }
  ]
}

Request

# 1. Submit the document
curl -X POST https://docuparseapi.com/api/v1/extract \
  -H "Authorization: Bearer $DOCUPARSE_API_KEY" \
  -F "file=@receipt.jpg"
# → {"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"

Response

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

Sample invoice — receipt examples coming soon.

{
  "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"
    }
  ]
}

FAQ

Frequently asked questions

What formats does DocuParse API accept for receipts?

+
DocuParse API accepts PDF, JPG, PNG, and CSV files. Both digital receipts and scanned paper receipts are supported.

What JSON fields are returned for a receipt?

+
The response includes merchant, total, subtotal, tax, date, currency, receipt_id, payment_method, merchant_email, merchant_address, and line_items, plus confidence and needs_review.

Does it work with scanned receipts?

+
Yes. DocuParse API handles scanned receipts automatically. The extraction returns the same named fields regardless of scan quality.

Can I use this in a Node.js or Python app?

+
Yes. The API is a standard REST endpoint that accepts multipart file uploads. Any HTTP client works. The docs include copy-paste examples for Node.js and Python.

Is the output always JSON?

+
Yes. Every response from the extract endpoint is a JSON object. There is no raw text mode.

What if the receipt does not have all fields?

+
Fields that cannot be extracted are omitted from the response or returned as null. Use your own validation rules for any required fields.

Start converting receipts to JSON

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