Invoice Parsing API — OCR Any Invoice Into Structured JSON
POST a PDF or scanned invoice and get back labeled JSON: invoice number, dates, seller and buyer data, line items, totals, VAT and currency. Textract-grade OCR handles the pixels; LLM structuring handles the meaning — no per-vendor templates, ever.
14-day trial · 100,000 words included · No credit card required
See the Invoice OCR in Action
Run a real extraction job on a sample invoice — straight from this page.
Try it live — no signup needed
Live demoPick a sample document and watch this API process it in real time.
That was a live API response. Get your own API key and 100,000 free trial words — no credit card required.
Double opt-in, unsubscribe anytime.
How the Invoice Parsing API Works
One multipart POST in, labeled invoice JSON out — fully asynchronous.
POST the invoice file
Send a PDF or scanned image (JPG/PNG/TIFF) up to 100 MB to /api/v1/finance/parse_invoice with your Bearer token.
Get a status URL
The API answers instantly with 202 Accepted and a status_url — OCR and AI structuring run on our queue, not in your request thread.
Poll or get a webhook
Poll the status URL or pass a webhook URL header to be called back the moment extraction completes.
Read structured JSON
Receive invoice number, issue and due dates, seller/buyer details, line items with quantities and unit prices, net/gross totals, VAT rates and currency.
Call it from any stack
Submit a job, poll the status URL, get structured JSON. SDKs available for PHP, Laravel, Python, Node.js, .NET and Flutter.
curl -X POST "https://sharpapi.com/api/v1/finance/parse_invoice" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"file": "@invoice.pdf"}'
$response = Http::withToken('YOUR_API_KEY')
->post('https://sharpapi.com/api/v1/finance/parse_invoice', {"file": "@invoice.pdf"});
$statusUrl = $response->json('status_url'); // poll until status = success
import requests
response = requests.post(
"https://sharpapi.com/api/v1/finance/parse_invoice",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"file": "@invoice.pdf"},
)
status_url = response.json()["status_url"] # poll until status == "success"
{
"data": {
"type": "api_job_result",
"id": "e00ebeec-6df3-4282-b515-8c447ea5d6ab",
"attributes": {
"status": "success",
"type": "invoice_parse",
"result": [
{
"source_pages": [
1
],
"document": {
"type": "invoice",
"original_type_label": "Invoice",
"is_invoice": true,
"is_copy": false,
"copy_type": null
},
"invoice": {
"invoice_number": "D7BDFA00-0019",
"issue_date": "2025-12-07",
"due_date": "2025-12-07",
"document_date": null,
"order_date": null,
"delivery_date": null,
"shipping_date": null,
"pricing_date": null,
"currency": "USD",
"exchange_rate": null,
"page_info": "1 of 1",
"amount_in_words": "",
"notes": "",
"remarks": "",
"delivery_instructions": "",
"terms_and_conditions": [],
"late_payment_interest_rate": null
},
"references": {
"delivery_order_number": "",
"purchase_order_number": "",
"sales_order_number": "",
"customer_reference": "",
"external_document_number": "",
"grn_number": "",
"route_number": "",
"lorry_number": "",
"serial_number": "",
"batch_number": "",
"other_references": []
},
"e_invoice": {
"uuid": "",
"e_invoice_code": "",
"e_invoice_type": "",
"e_invoice_version": "",
"submission_id": "",
"submission_document_id": "",
"submission_long_id": "",
"submission_status": "",
"validation_datetime": null,
"digital_signature_present": false,
"validated_link": "",
"original_e_invoice_ref": "",
"qr_code_present": false
},
"seller": {
"name": "OpenAl, LLC",
"trade_name": "OpenAl",
"registration_number": "",
"tin": "",
"sst_id": "",
"gst_id": "",
"vat_id": "GB434338990",
"msic_code": "",
"business_activity": "",
"address": {
"street_line_1": "548 Market Street",
"street_line_2": "PMB 97273",
"city": "San Francisco",
"state": "California",
"postcode": "94104-5401",
"country": "US"
},
"phone": "",
"fax": "",
"email": "",
"website": "",
"bank_details": [
{
"bank_name": "",
"account_name": "",
"account_number": "",
"sort_code": "",
"swift_code": "",
"iban": ""
}
],
"contact_person": {
"name": "",
"role": "",
"phone": "",
"email": ""
}
},
"buyer": {
"name": "A2Z WEB LTD",
"trade_name": "",
"registration_number": "",
"tin": "",
"brn": "",
"sst_id": "",
"gst_id": "",
"vat_id": "",
"customer_account_number": "",
"billing_address": {
"location_name": "",
"street_line_1": "Unit 4e Enterprise Court, Farfield",
"street_line_2": "Park",
"city": "Rotherham",
"state": "",
"postcode": "S63 5DB",
"country": "GB"
},
"delivery_address": {
"recipient_name": "",
"location_name": "",
"street_line_1": "Unit 10 Enterprise Court",
"street_line_2": "Farfield Park",
"city": "Rotherham",
"state": "",
"postcode": "S63 5DB",
"country": "GB"
},
"delivery_address_same_as_billing": false,
"phone": "",
"fax": "",
"email": "",
"attention_to": {
"name": "",
"phone": "",
"email": ""
}
},
"sales_info": {
"salesperson_name": "",
"salesperson_code": "",
"salesperson_phone": "",
"sales_agent": "",
"sales_location": "",
"sales_department": "",
"outlet_name": ""
},
"financials": {
"subtotal": 15.57,
"gross_amount": null,
"total_discount_amount": null,
"shipping_charge": null,
"delivery_fee": null,
"total_excl_tax": 15.57,
"total_tax_amount": 3.11,
"service_tax_amount": null,
"total_incl_tax": 18.68,
"rounding_adjustment": null,
"total_payable": 18.68,
"amount_paid": null,
"amount_due": 18.68,
"tax_details": [
{
"tax_type": "VAT",
"tax_rate": 20,
"taxable_amount": 15.57,
"tax_amount": 3.11
}
]
},
"line_items": [
{
"line_number": 1,
"item_code": "",
"stock_code": "",
"barcode": "",
"description": "OpenAl API usage credit",
"classification_code": "",
"country_of_origin": "",
"quantity": 1,
"free_quantity": null,
"unit_of_measure": "",
"unit_of_measure_raw": "",
"pack_size": "",
"total_units": null,
"weight": null,
"weight_uom": "",
"unit_price": 15.57,
"discount_percent": null,
"discount_amount": null,
"subtotal": 15.57,
"tax_rate": 20,
"tax_type": "VAT",
"tax_amount": 3.11,
"total_excl_tax": 15.57,
"total_incl_tax": null,
"expiry_date": null,
"batch_lot_number": "",
"service_start_date": null,
"service_end_date": null
}
],
"payment": {
"payment_terms": "",
"payment_terms_days": null,
"payment_method": "",
"payment_date": null,
"payment_reference": "",
"jompay_biller_code": "",
"jompay_ref_1": ""
},
"logistics": {
"shipping_method": "",
"vehicle_number": "",
"driver_name": "",
"delivery_zone": "",
"delivery_time_constraint": "",
"carton_count": null,
"total_volume": null,
"total_weight": null,
"goods_received_confirmation": false,
"received_by": "",
"receiver_signature_present": false
}
}
]
}
}
}
Who Builds on the Invoice OCR API
Anywhere invoices arrive as files and your system needs numbers.
AP Automation
Capture supplier invoices from email inboxes and portals, extract the data and push it straight into approval workflows.
Accounting Software
Add "drop an invoice here" to your bookkeeping product and post ledger entries from the parsed totals and VAT breakdown.
Expense Management
Let employees photograph receipts and invoices; parse amounts, dates and vendors for instant expense claims.
ERP Integration
Feed structured invoice data into SAP, NetSuite, Dynamics or your in-house ERP without manual keying.
Procurement & 3-Way Matching
Match parsed line items, quantities and unit prices against purchase orders and goods receipts automatically.
Document Archives
Backfill years of scanned invoices into a searchable database with structured metadata per document.
More document endpoints in the catalog: Browse Accounting & Finance APIs →
Why Developers Pick This Invoice Parser
OCR + LLM in one call
Textract-grade OCR reads the document, an LLM labels it. You never stitch two vendors together or post-process raw text yourself.
Typed, labeled JSON schema
Dates as dates, amounts as numbers, line items as arrays. The same schema for every vendor layout — your integration code stays put.
No templates to maintain
New supplier, new layout, new language? Nothing to configure. The AI structuring generalizes instead of matching rules.
80+ languages
Parse invoices in English, German, Polish, French, Spanish and dozens more — including mixed-language documents.
Async with webhooks
202-and-poll by default; add a webhook URL header for callbacks. Designed for batch pipelines processing thousands of documents.
Per-word pricing, GDPR & SOC 2
No per-page OCR fees — you pay per processed word. SOC 2 Type II audited, GDPR compliant, documents processed transiently.
SharpAPI ist jetzt SOC 2 Typ II konform. Sie können Details bei unserem überprüfen Vertrauenszentrum-Portal.
Ihre Daten sind Ihre Daten. Erfahren Sie, wie wir sie schützen und die globalen Datenschutzstandards einhalten in unserem Datenverarbeitungs- und Konformitätsrichtlinie .
Predictable pricing from $50/month
14-day free trial with 100,000 words included. No credit card required. 30-day money-back guarantee on your first payment.
Invoice Parsing API — FAQ
-
PDF files (native or scanned) and images — JPG, JPEG, PNG and TIFF — up to 100 MB. The OCR layer reads scans and photos, so paper invoices captured with a phone camera parse the same way as digital PDFs.
-
Invoice number, issue date, due date, seller and buyer names, addresses and tax IDs, individual line items with descriptions, quantities and unit prices, net, tax and gross totals, VAT rates and currency — returned as one structured JSON document.
-
Plain OCR gives you raw text and coordinates; you still have to figure out which number is the total and which line is a product. This endpoint combines Textract-grade OCR with LLM structuring, so the output is already labeled, typed JSON — no template rules per vendor layout.
-
Yes. There are no per-vendor templates to configure — the AI structuring adapts to layouts and languages it has never seen, including 80+ languages and mixed-language invoices.
-
Pricing is per processed word, not per page or per document — plans start at $50/month, and the 14-day free trial includes 100,000 words with no credit card required. There are no separate OCR fees.
-
SharpAPI is SOC 2 Type II certified and GDPR compliant. Uploaded invoices are processed transiently and never used to train models. Details are in the Data Handling and Compliance policy.
Stop Keying Invoices by Hand
Grab an API key, POST your first invoice, and get labeled JSON with line items and totals back in seconds.
Keine Kreditkarte erforderlich