Three-way matching used to be one full-time AP analyst. DocParse handles 94% of matches automatically and our analyst now does anomaly review.
Every PO.Three-way matched.
PO number, line items with SKUs, delivery terms, ship-to, bill-to. Wires into your ERP and matches against invoices and goods receipts automatically.
{
"po_no": "PO-77840",
"buyer": "Acme Industries",
"supplier": "Northwind Logistics",
"po_date": "2026-04-12",
"delivery_date": "2026-05-03",
"total": 48720.00,
"line_items": [ 12 SKUs ],
"incoterms": "FOB"
}Three reasons teams switch to us
Line-level extraction
Every SKU with description, quantity, unit price, line total, GL code, and ship-to. Captures price-list mismatches at intake.
Auto-3-way match
PO ↔ invoice ↔ goods receipt matched automatically. Exceptions flagged with the discrepant fields and reasons.
ERP-ready output
Native integrations with NetSuite, SAP, Dynamics, Oracle, Coupa. Output already coded to your GL and cost centers.
From raw purchase orders
to structured data, in four steps.
Starter schema for purchase orders.
Tweakable in seconds.
The purchase orders template comes with a 10-field starter schema based on the most common fields teams pull from purchase orders. Add your own fields, mark which are required, and change types in the dashboard or via the REST API.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Purchaseorders",
"type": "object",
"required": [
"po_no",
"buyer",
"supplier",
"po_date",
"ship_to",
"bill_to",
"currency",
"total",
"line_items"
],
"properties": {
"po_no": {
"type": "string"
},
"buyer": {
"type": "string"
},
"supplier": {
"type": "string"
},
"po_date": {
"type": "string"
},
"delivery_date": {
"type": "string"
},
"ship_to": {
"type": "string"
},
"bill_to": {
"type": "string"
},
"currency": {
"type": "string"
},
"total": {
"type": "number"
},
"line_items": {
"type": "array"
}
}
}Field-level accuracy per field.
Multi-modal models do the reading, and accuracy depends on document quality. The numbers below are illustrative ranges we've seen on purchase orders — run your own documents and compare against a small ground-truth set before you scale.
accuracy ceiling
One endpoint.
Every output you need.
# Extract with one POST
curl -X POST "https://api.docparse.io/v1/purchase-orders" \
-H "Authorization: Bearer $DOCPARSE_KEY" \
-F file=@"po-acme-77840.pdf" \
-F schema="po" \
-F webhook="https://api.acme.co/incoming"
# Returns:
{
"status": "complete",
"confidence": 0.987,
"latency_ms": 2412,
"data": { ... }
}Plain HTTP, no SDK lock-in
Bearer-token auth with revocable, SHA-256-hashed API keys. Call it from any language that can hit a REST endpoint — we publish docs and copy-pasteable snippets, not opinionated wrappers.
Signed webhooks for async
Register an endpoint, set the events, and we POST signed deliveries (HMAC-SHA256, Standard Webhooks spec) as extractions finish. Every attempt is logged in the dashboard with response code, body, and timing.
Why teams switch from regex.
A look at how DocParse compares to the three things you've probably already tried.
Reach the tools you already run.
DocParse ships two integration surfaces directly — REST API and signed webhooks — plus a native Zapier app that opens up everything else.
How teams use DocParse for purchase orders.
Illustrative scenarios drawn from teams piloting DocParse — names and figures are examples, not customer quotes.
Our suppliers send POs in 18 different formats. DocParse normalizes them all into NetSuite. Zero supplier complaints about format requirements.
The price-list-mismatch detection caught $1.2M in supplier overcharges in the first six months. The product paid for itself in two weeks.
The questions teams ask before they sign up.
POs into your ERP. Today.
Three-way matching, line-level extraction, ERP-coded output. Live by tomorrow.