Turn any document into structured data

Finance teams

Invoices, receipts and statements turned into checked figures, with an audit trail behind every value.

What goes in

Purchase invoices, expense receipts and bank or card statements.

  • Totals and tax checked against the page, not just copied.
  • A review queue for exceptions, with who approved what and when.
  • Keeping periods, legal hold and a named storage region per workspace.

What comes out

{
  "document_type": "invoice",
  "supplier": {
    "name": "Oficina Aldama SL",
    "vat_id": "ESB12345678"
  },
  "invoice_number": "F-2026-0781",
  "invoice_date": "2026-09-10",
  "currency": "EUR",
  "net_total": 2410,
  "tax": {
    "rate": 21,
    "amount": 506.1
  },
  "gross_total": 2916.1,
  "checks": {
    "lines_sum_matches_net_total": true,
    "duplicate_invoice_number": false
  },
  "approval": {
    "state": "approved",
    "by": "finance@example.com",
    "at": "2026-09-11T09:14:00Z"
  },
  "retention": {
    "keep_until": "2033-09-10",
    "legal_hold": false,
    "storage_region": "eu"
  }
}

How it works

  1. 01

    Upload a file or take a photo. PDFs, photos and scans all work, up to 100 MB on paid plans.

  2. 02

    Formalini reads it and fills your template, or proposes a structure from the document itself.

  3. 03

    Check the values against the page, then export the JSON or send it onwards by API or webhook.

Common questions

Do you replace our accounting system?

No. Formalini prepares the data and delivers it to the system you already use.

Can we prove where a figure came from?

Yes. Each value links to the page and position it was read from, and changes are recorded.

Related pages