Document extraction that remembers.

Send invoices, statements and IDs from any sender, as PDFs, scans or photos. Every layout answers with the same keys, under your own field names, so there is no parser to write. docRefinery learns each layout once, then remembers it.

100 pages a month free. No credit card. Or try one document with no account.

Your own

What you send

Harbor & Pine Studio

Sample Invoice page

What your team sees

Your field names, each cited to the page

Remembered · seen 12×

What your API receives

Clean JSON, one shape for every document

[

{ "alias": "invoice_number",

"text": "HP-2026-0417",

"field_confidence": 0.99,

"location": { "page": 1 } }

{ "alias": "bill_to",

"text": "Calder Ridge Supply Co.",

"field_confidence": 0.99,

"location": { "page": 1 } }

{ "alias": "amount_due",

"text": "9428.58",

"field_confidence": 0.99,

"location": { "page": 1 } }

]

Sample documents with fictional data. Scores are illustrative. Point at any value to follow it.

Reads the paperwork you already get: PDFs, scans and photos, in 70+ languages and scripts

  • Invoice
  • RechnungInvoice
  • 請求書Invoice
  • كشف حسابBank statement
  • ConnaissementBill of lading
  • LohnabrechnungPayslip
  • 영수증Receipt
  • FacturaInvoice
  • Bon de commandePurchase order
  • 提单Bill of lading
  • Extrato bancárioBank statement
  • Счёт-фактураInvoice
  • PasaportePassport
  • فاتورةInvoice
  • 領収書Receipt
  • FatturaInvoice
  • KontoauszugBank statement

Printed anywhere, in any words. It lands in the same place.

Each supplier puts the invoice number, the amount and the due date somewhere different, and calls them something different. You get them in the same three fields, every time, named the way you chose.

Sample invoice from Harbor & Pine Studio

Your invoice record

Invoice numberprinted “Invoice No.” HP-2026-0417
HP-2026-0417
Amount to payprinted “Amount Due” $9,428.58
9428.58USD
Due dateprinted “Due Date” November 2, 2026
2026-11-02

Same three fields for every supplier. Dates and amounts written one way. Sample suppliers and values.

Follow one invoice all the way through

From the moment it arrives to the moment it lands in your system, and what changes the next time that sender writes.

Sample invoice from Harbor and Pine Studio
  • 1Sender recognisedHarbor & Pine Studio, seen 12×
  • 2Total matches the line items$9,428.58
  • 3Due date falls after the invoice date2026-11-02
  • 4Ship-to differs from bill-toSent to a person, by your rule
  • 5IBAN not on the pageOnly an account ending is printed, so null, not guessed

Ready to post, one field for review

The first invoice teaches it. The rest are remembered.

Most extractors read your five hundredth invoice as though it were the first. docRefinery learns a sender’s layout once, and every document after starts from what it already knows.

  1. First invoice

    Harbor & Pine

    New layout, learned

    Two values go to a person. Their answers are kept.

    2 values for a person

  2. Second invoice

    Harbor & Pine

    Recognised on sight

    The correction comes back as a suggested fix, tested on this layout first.

    1 value for a person

  3. Five hundredth invoice

    Harbor & Pine

    Remembered, seen 500×

    Quicker and steadier. If the sender changes its form, the layout is re-trained.

    0 values for a person

Illustrative: the same sample invoice layout, shown three times.

Put anything on Runway

Send a mixed pile: invoices, statements, receipts, bills. You never say what any of them is. Runway works out each one and returns the fields your team set for that type.

You send

POST /v1/runway/async

Seven files, three languages, two of them photos. No labels.

Runway returns

scan_0412.pdf is an

Invoice

document_type confidence 0.98

Sample invoice

Your fields for an invoice

  • invoice_number

    HP-2026-04170.99

  • bill_to

    Calder Ridge Supply Co.0.99

  • due_date

    2026-11-020.98

  • po_number

    CRS-882140.97

  • line_items

    4 rows0.96

Same shape for every type: one parser reads them all.

20 types and 785 fields ready on day one. Remembered after the first from each sender.

Not in the catalogue? We train your type free

Fine-tune a sender’s layout before it runs

Classification tells you what a document is. Fine-tune decides exactly what you get from one sender: the fields only they print, an instruction in your words, the accuracy you need. Approve it once and every document of that layout follows it.

The document is recognised and the fields for its type are lined up. Nothing has run yet.

Sample invoice header from Harbor and Pine Studio

Harbor & Pine Studio · invoice · the same layout every month

Harbor & Pine Studio

invoice · 0.94Draft · nothing run
ModelBalancedAccurateConfidence scoring on
  • Invoice numberHP-2026-0417 · ≥ 0.85

    System-optimised instruction

  • Due date2026-11-02 · ≥ 0.85

    System-optimised instruction

2 fields · 0 in your words

Field-level governance. Your organisation decides what gets extracted.

An admin defines each field once: a plain instruction, the key it returns as, its type, whether it is required and the confidence it must reach. Every call obeys it. Try it: switch a field or move a threshold.

Owners and admins edit. Members run.

  • Invoice numberThe supplier’s own referenceinvoice_number · TextRequired
  • Total dueThe amount to pay, after taxtotal_due · AmountRequired
  • Due dateWhen payment is duedue_date · DateOptional
  • Bank accountFull IBAN, only if printed in fulliban · TextOptional
  • Cost centreInternal code, if the supplier prints itcost_centre · TextOptional

What every caller receives

  • "invoice_number": "HP-2026-0417"0.99
  • "total_due": "9428.58"to review
  • "due_date": "2026-11-02"0.93
  • "iban": nullnot on page

4 approved fields. Anything below its threshold goes to a person, not to your system.

What a caller cannot do

POST /v1/runway/async?fields=salary,home_address

The extraction call takes no field list at all. A key can only receive the fields your organisation approved.

Everything between the document and your system

A short review queue, rules you set once, a citation on every value, and nothing invented.

Your team clears a short queue

Only values below your threshold reach a person. They confirm or correct, and every change is kept.

Review queue3 waiting · threshold 0.85

  • Northwind FreightPO referencePO-77?412 · 0.61Review
  • Halden MutualClaim total2,310.00 · 0.72Review
  • Kestrel LinesGross weight19.0? · 0.58Review
  • Cascade PowerDue date2026-10-29 · 0.97Approved

Every value cited

Each value carries its page, its box and a confidence score.

invoice_numberpage 1 · 0.99

Null, never guessed

If a value is not on the page it comes back null, never a plausible guess.

Invoice no.NWF-20418

PO referencePO-77?412

VAT IDnull

Rules set once, from one sample

Upload one document, keep the fields you want, add rules, and replay past documents before going live.

AP invoices · rules

  • total_due equals the sum of line_items
  • due_date is after issue_date
  • Below 0.85, send to review
  • Version 4Live
  • Version 3Replayed on 212 files
  • Version 2Compared

Long files, split

A long file is separated into the documents inside it, up to 100 MB per upload.

Invoice
Statement
Utility bill

70+ languages and scripts

Left to right, right to left, and the alphabets in between.

InvoiceRechnungFacturaفاتورة請求書СчётFatturaबीजकFaktura

Not on our list? We train it, free.

The catalogue covers 20 document types. When yours is missing, we train it on your samples, host it, and retrain it when the form changes. You pay only for the pages you extract.

In the catalogue

  • Invoice
  • Receipt
  • Bank statement
  • Purchase order
  • Utility bill
  • Passport
  • Bill of lading
  • and 13 more

Yours, when it is missing

Freight settlementTrained, hosted, sorted on sight

An example type. It gets its own fields, thresholds and governance, like any built-in one.

What it costs you

Training a classifier for your types
No charge
Hosting and running it
No charge
Retraining as your documents change
No charge
Help with fields, thresholds and rollout
No charge
Extraction volume once it is live
Your normal plan
See how custom types work

Built for the teams who live in paperwork

The advantage grows wherever the same senders keep sending the same forms.

Accounts payable

A fixed supplier list sending the same forms every month is the best case this product has.

Your vendor list barely changes. A few hundred layouts cover years of invoices, and each one is learned the first time it arrives.

  • Invoices
  • Purchase orders
  • Remittance advice
  • Credit notes
See accounts payable
  • Invoice
  • Purchase order
  • Receipt

Why not just ask a general LLM?

It will read a document. It will not tell you when it guessed, where a value came from, or remember the sender next month.

Field accuracy on 2,400 business documents

Invoices, receipts, statements and IDs from 310 senders, 14 languages. Each system scored on the same hand-checked fields.

2,400 documents

  • docRefinery98.1%

  • Manual entry, single pass96.3%

  • General-purpose LLM, prompted91.4%

  • Template OCR86.7%

  • Open-source parser81.2%

Scale from 0 to 100%. Fields a system left blank count as wrong; a correct null counts as right.

Run your own document
  • A field is missing

    A general LLM: Can return a plausible value

    docRefinery: Returns null, and says so

  • Where a value came from

    A general LLM: Hard to trace

    docRefinery: Page and box for each value

  • How sure it is

    A general LLM: No score you can act on

    docRefinery: A score on each field, with your threshold

  • The same sender next month

    A general LLM: Starts from nothing

    docRefinery: Remembered, and learns from corrections

  • Where it runs

    A general LLM: Usually someone else’s cloud

    docRefinery: Our cloud, your VPC, or air-gapped

Early access, built in the open

What runs today, what is still being built, and a direct line to the people building it.

Running today

  • Managed cloud, private VPC or air-gapped
  • A review queue with your own thresholds
  • A workflow from one sample
  • REST API, with keys per account
  • Export to JSON, CSV or XLSX
  • Long files split, up to 100 MB
  • Chrome extension, in early access

Being built

  • Webhooks and integrationsIn design
  • Salesforce and CRM write-backPlanned
  • SSOPlanned for Enterprise
  • SOC 2 Type IIAudit in progress, no report yet
  • Presentations and wider office formatsIn development

Being built, not shipped. Status on the roadmap.

What you get in early access

  • A direct line to the engineers building it
  • A say in what ships next
  • 100 pages a month free, no credit card

Early access is open to anyone with a Google account. Sign up, run your own documents, and tell us what is missing.

What does retyping cost you?

Move the sliders to match your team. The result is your own numbers, not a promise.

167 hours

of typing a month at your numbers, or about $5,000 of staff time.

Try it on your documents

One call in. Clean JSON out.

No schema needed to start: send a document and get back what matters on it. When you want the same fields every time, set them once.

curl -X POST https://api.docrefinery.com/v1/runway/async \
  -H "Authorization: Bearer $DOCREFINERY_KEY" \
  -F "file=@invoice.pdf"

200 Response

{ "status": "fulfilled", "document_type": "invoice",
  "fields": [
    { "alias": "invoice_number", "text": "HP-2026-0417",
      "field_confidence": 0.99, "location": { "page": 1 } },
    { "alias": "iban", "text": null }, …
  ] }

API keys are switched on per account, so ask us when you are ready. Until then, run documents in the dashboard.

  • REST API

    POST a file, poll, and read structured JSON.

    { "status": "fulfilled" }

  • A workflow from one sample

    Upload one document and keep the fields you want.

    invoice_numbertotal_dueline_items

  • Chrome extension

    Early access. Fills the form in your open tab.

    3 fields matched on this pageFill

  • Export

    JSON, CSV or XLSX, with corrections applied.

    results.xlsxresults.csvresults.json

Runs where your documents live

Managed cloud by default. Your private VPC or fully air-gapped on the Enterprise plan, on models inside your network.

  • Managed cloud

    Pages are read inOur cloud

    Leaves your networkYes

    Available onEvery plan

  • Private VPC

    Pages are read inYour cloud account

    Leaves your networkNo

    Available onEnterprise

  • Air-gapped

    Pages are read inYour own hardware

    Leaves your networkNo

    Available onEnterprise

  • Encrypted

    In transit and at rest

  • Retention you set

    From 7 days to custom

  • SOC 2 Type II

    Audit in progress, no report yet

  • SSO

    Planned for Enterprise

  • Webhooks

    In design

Also being built: wider office formats, a retrieval pipeline and CRM write-back. See the roadmap.

Start free. Pay by the page.

Starter

Free

up to 100 pages a month

For trying it on real documents. No credit card and no trial clock.

Start free

Team and Scale

Custom

subscription or per page

For production: the review queue, reviewer seats, volume pricing and custom classifiers.

Contact sales

Enterprise

Custom

annual contract

For documents that cannot leave your network: private VPC or air-gapped.

Contact sales

Sales quotes the exact rate from your volume, document types and deployment. See every plan.

Questions, answered plainly

More depth is in the guides and the API docs.

  • docRefinery is a document data extraction API, a form of intelligent document processing (IDP). It reads a PDF, scan or photo, OCR included, and returns structured fields with confidence scores. Teams use it for invoice extraction in accounts payable, and for lending, KYC, insurance claims and logistics paperwork. You define the output, every document type answers in the same format, and it learns each sender’s layout once and remembers it.

  • Invoices, bank statements, receipts, purchase orders, utility bills, passports, bills of lading and more: 20 types in the catalogue, in 70+ languages and scripts. Files can be PDFs, scans or photographs, and spreadsheets (.xlsx, .ods, .csv) on the API where your deployment enables them. Presentations and wider office formats are in development, and a retrieval pipeline is planned; neither is available yet.

  • Confidence scoring is on by default: fields come back with a score earned from the page, and you set the threshold for each field. A field that is not on the page comes back null rather than a plausible guess. Anything below your threshold goes to a review queue, where a person confirms or corrects it and every change is kept. A correction becomes a suggested fix, tested on that layout’s own documents before anyone applies it.

  • Through a REST API. POST a file to /v1/runway/async, poll for the run, and read structured JSON. When you want the same fields every time, build a workflow from one sample document and run it by its id. Results export as JSON, CSV or XLSX, and a Chrome extension in early access fills the form in your open tab. API keys are switched on per account, so talk to us when you are ready to connect a system; until then you can run documents in the dashboard. Webhooks are in design, not available yet.

  • Yes. Private VPC and fully air-gapped on-premises deployment run today on the Enterprise plan, on models hosted inside your network, so a document never has to leave it.

  • Not yet. Our SOC 2 Type II audit is in progress, with no report yet. SSO is planned for Enterprise and not available yet. We make no data-residency commitments yet.

Bring one vendor’s invoices. We’ll remember the rest.

The first document teaches us the layout. Every one after it is recognised on sight.

100 pages a month free. No credit card.