Skip to main content
Invoice intelligence · API-first

Structured finance from invoices — for teams that ship.

Upload PDFs or images (or pass a URL), get validated JSON, persisted rows, BI, reporting currency, and rule-based insights — without re-sending full documents to a model for analytics. Built for developers, agencies, and finance operators wiring their own pipeline.

example-response.json
POST /api/extract-invoice-file   multipart field "file"
Authorization: Bearer API key (bf_live_…) or session JWT

// Response — example parsed fields + meta
{
  "counterparty": "Acme Corp",
  "invoice_number": "INV-8829",
  "total": 1450.0,
  "tax": 116.0,
  "currency": "USD",
  "meta": {
    "source": "extracted",
    "invoiceId": "…"
  }
}

One pipeline from upload to numbers you trust

OCR and PDF text, heuristics, and model-assisted JSON extraction — then storage, dedupe, quotas, and finance APIs on the structured data (not re-reading every PDF for BI).

Ingestion

PDFs, JPEGs, or PNGs — URL or multipart upload. Optional expense vs revenue per document.

Extract & merge

OCR when needed, model-assisted JSON extraction with fallbacks, merged with heuristics and schema repair so line items and totals stay coherent.

Persist & analyze

Stored in the database with usage accounting and dedupe. Same HTTP surface powers the dashboard and your integrations — aggregates, trends, and insights on fields already saved.

Architectural core

Built for messy real-world PDFs

International dates, currencies, VAT-style lines, and weak scans: text layers plus OCR, then extraction and validation tuned for invoice-shaped documents — not a generic “drop any PDF” toy.

Throughput you can plan for

Async-friendly extraction with clear quotas and duplicate detection — scale from a single integration to higher volume without surprise billing on mystery metrics.

Drop into your stack

REST on your deployment: Bearer JWT or bf_live_ API keys, predictable JSON, and interactive explorers in the dashboard so you debug before you wire production.

Sensible data boundaries

BI, insights, and aggregates run on structured fields already stored — we do not send full PDFs back through a model for analytics. TLS in transit; encryption at rest follows your hosting platform. You own your compliance story.

curl -X POST "$NEXT_PUBLIC_APP_URL/api/extract-invoice-file" \
  -H "Authorization: Bearer $BILLFLOW_API_KEY" \
  -F "file=@invoice.pdf" \
  -F "invoice_kind=expense"

Same routes your dashboard calls

Reference docs and in-app API explorers for extraction, invoices, BI, charts, and insights. Copy working examples, then run them against your project URL and API key.

Open documentation

Ship the invoice layer you do not want to rebuild

Free tier: limited successful extractions per rolling window (see Pricing). No credit card required.