Integrations
From documents to rows in your data warehouse
Invoices, payslips, bank statements and certificates arrive as PDFs and scans. Holofin reads them and writes every field into a table you own, with the evidence attached.
Pick your warehouse
| FIELD | VALUE | CONFIDENCE | PAGE | NEEDS_REVIEW | |
|---|---|---|---|---|---|
| 1 | invoice_number | F-2026-0412 | 0.99 | 1 | FALSE |
| 2 | invoice_date | 2026-10-14 | 0.98 | 1 | FALSE |
| 3 | due_date | 2026-11-13 | 0.97 | 1 | FALSE |
| 4 | supplier_name | Atelier Mécanique Durand SARL | 0.99 | 1 | FALSE |
| 5 | total_excl_tax | 4860.00 | 0.98 | 1 | FALSE |
| 6 | vat_amount | 972.00 | 0.71 | 1 | TRUE |
| 7 | total_incl_tax | 5832.00 | 0.97 | 1 | FALSE |
✓7 fields loaded
!1 flagged for review
One pipeline, every warehouse
- 1
Connect your warehouse once
Create a role with insert rights on one schema and paste its credentials into Holofin. Holofin creates the table on the first load; nothing else in your warehouse is visible to it.
- 2
Send documents the way you already do
Upload in the app, forward by email, or post to the API. Holofin classifies each file, splits bundles into documents and reads the fields of each type.
- 3
Query the rows
Each field lands as one row with its confidence, the page it came from and a needs_review flag. Join it to your own tables in your warehouse like any other source.
The table Holofin writes
One row per field, so a new document type never changes the table. The same columns exist in every warehouse; types follow your warehouse's own names.
| document_id | STRING | Holofin's identifier for the document, stable across reloads. |
|---|---|---|
| document_type | STRING | The class Holofin gave the document: supplier_invoice, payslip, bank_statement, and so on. |
| field | STRING | The field name, in snake_case, as defined in your extraction schema. |
| value | STRING | The value as normalized text: ISO dates, dot decimals, IBANs without spaces. |
| confidence | FLOAT | Between 0 and 1. How sure Holofin is of the value. |
| page | INTEGER | The page of the source file the value was read on. |
| bbox | ARRAY<FLOAT> | Where on that page: x, y, width, height, as fractions of the page. |
| needs_review | BOOLEAN | True when the confidence is low or a rule failed, such as a balance that does not add up. |
| reviewed_by | STRING | Who confirmed or corrected the value in Holofin, once someone has. |
| loaded_at | TIMESTAMP | When the row was written. Corrections write a new row; the latest wins. |
Security
- Documents are processed in Europe, on OVHcloud servers in France certified ISO 27001.
- Holofin only ever writes to the schema you grant. It cannot read your other tables.
- Retention of the source files in Holofin is set per organization, from zero data retention to indefinite. Rows in your warehouse follow your own policies.
- GDPR: Holofin acts as your processor. No document leaves the European Union.
Put Holofin on your own documents.
Every value linked to the page it came from, every PDF checked for tampering, rules checked across the whole file.