Turn purchase orders into structured JSON with a single API call. PO number, vendor, buyer, SKU-level line items, delivery date, and totals - typed and ready for 3-way matching or ERP import. No templates, no per-supplier setup.
Send the PO and a schema. Buyer and vendor, every SKU line, and the totals come back typed - quantities and prices as numbers, dates ISO-formatted.
curl -X POST \
https://api-parse.conversiontools.io/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@purchase-order.pdf" \
-F 'schema={
"po_number": "string",
"order_date": "date",
"vendor": { "name": "string", "address": "string" },
"buyer": { "name": "string", "department": "string" },
"delivery_date": "date",
"payment_terms": "string",
"line_items": [{
"sku": "string",
"description": "string",
"quantity": "number",
"unit_price": "number",
"amount": "number"
}],
"subtotal": "number",
"tax": "number",
"total": "number",
"currency": "string"
}'{
"status": "completed",
"pages": 1,
"data": {
"po_number": "PO-2026-00471",
"order_date": "2026-04-08",
"vendor": {
"name": "Northwind Supplies",
"address": "55 Dock St, Portland, OR"
},
"buyer": {
"name": "Globex Inc",
"department": "Operations"
},
"delivery_date": "2026-04-22",
"payment_terms": "Net 30",
"line_items": [
{
"sku": "NW-4421",
"description": "Steel brackets, 50mm",
"quantity": 200,
"unit_price": 1.85,
"amount": 370.00
},
{
"sku": "NW-7790",
"description": "Hex bolts M8 (box of 100)",
"quantity": 12,
"unit_price": 9.40,
"amount": 112.80
}
],
"subtotal": 482.80,
"tax": 43.45,
"total": 526.25,
"currency": "USD"
}
}A purchase order is not just another invoice. The schema captures what procurement teams actually reconcile against.
Extract POs, invoices, and receipts with consistent field names and the typed output lines up for an automated 3-way match. PO number and line totals come back as the same shape every time.
Each ordered line is its own object with sku, description, quantity, unit price, and amount - the level of detail an ERP import or inventory system needs, not a flattened text blob.
Buyer and vendor, delivery date, and payment terms all come back structured, so the JSON carries the full context of the order, not just the money.
A purchase order is the buyer's document - it states what was ordered before anything ships or gets billed. The schema captures both the buyer and the vendor, SKU-level line items, and a requested delivery date, where an invoice focuses on amounts owed. Keeping PO fields consistent with your invoice and receipt schemas is what makes automated 3-way matching possible.
Yes. Extract POs, invoices, and receipts with overlapping field names (po_number, vendor, line item sku, quantity, amount), and the typed JSON lines up for a 3-way match in your own code or ERP. The API does the reading; your reconciliation logic compares the structured output.
Yes. Multi-page purchase orders are processed in a single call, and line items that continue across pages are returned as one array. Define line_items as an array of objects in your schema and each row comes back as a separate typed object.
That is the intent. The response is typed JSON - numbers as numbers, dates ISO-formatted, line items as an array - so it maps directly onto an ERP import, a procurement API, or a database row without a parsing layer in between.
Digital PDFs, scanned PDFs, and images (JPEG, PNG, WebP, TIFF), including POs received as email attachments. OCR is applied automatically to scanned documents, so the JSON output is the same whether the PO was generated digitally or printed and scanned.
The same schema-driven API works across every document type. Define a schema once, extract from thousands of files.
Extract structured JSON from any document with custom schemas.
Parse any PDF into structured JSON, scanned or digital.
Vendor, line items, totals, tax, and dates from invoices.
Store, items, totals, and payment method from receipts.
Transactions, running balances, and dates for reconciliation.
Box-level data from W-2, 1099, and other tax forms.
Parties, dates, governing law, and key clauses.
Carrier, parties, ports, containers, and cargo.
Free tier covers your first 100 pages a month. No credit card to start.