ininvoice + Holded: how to automate accounts payable without changing ERP
Holded is the cloud ERP you use daily: billing, accounting, payroll, CRM. ininvoice sits upstream of Holded as a touchless accounts payable layer: email intake, structured reading, line-by-line three-way matching and duplicate detection. When the invoice is reconciled, ininvoice exports the ready entry to Holded via CSV or API. Result: your SME keeps Holded as the single accounting source and removes the manual re-entry of every supplier invoice.
If you run Holded, half the problem is solved. Invoices you issue, accounting, taxes, payroll, CRM: Holded covers the full SME cycle from a single panel.
The other side — invoices you receive — is still manual. They arrive by email, someone downloads them, types them, cross-checks with the PO in Excel and at month-end the entry is keyed into Holded by hand.
This article explains how ininvoice connects with Holded to close that gap without changing anything in your setup.
Why Holded doesn't do three-way matching (and that's fine)
Holded is an ERP. It records, posts and reports. It does this very well for Spanish SMEs: holded.com is the clear reference in cloud ERP for the segment.
Three-way matching is a different discipline. It is not accounting. It is purchase control: cross-checking the invoice against the issued PO and the received delivery note, line by line, before approving payment. The only way to detect that a supplier is invoicing at a different price from the agreed one or charging for quantities that never reached the warehouse.
This fits in a layer upstream of the ERP, by design. The same applies to SAP, Sage or Xero: the ERP stores the entry, it doesn't prevent an incorrect entry from going in. That's why the AP automation market exists as a category separate from the ERP market.
ininvoice occupies that layer. Holded remains your accounting source. It just receives clean data.
End-to-end flow: from supplier email to Holded
- Email intake. You connect Gmail or Outlook in read-only mode. ininvoice detects each incoming invoice (PDF, XML, FacturaE) and dedupes by hash. No forwarding to an alias mailbox.
- Structured reading. If the document carries signed XML (FacturaE, B2B e-invoice), it takes precedence over the visual PDF. If only PDF, IDP extracts supplier, tax ID, base, VAT, withholding tax, lines and referenced PO.
- Three-way matching. ininvoice cross-checks the invoice against PO and delivery note line by line, with 2% or EUR 1.50 OR-mode per-line tolerance. Matching lines are marked matched. Lines breaking tolerance are routed to the buyer or warehouse with context.
- Duplicate verification. Comparison by supplier + number + amount + date. The invoice paid last month and resent by the supplier doesn't go in twice.
- Export to Holded. When the invoice is approved (automatic if matched, manual if it has justified variance), it is exported to Holded as a ready entry: mapped supplier, suggested account, VAT breakdown, withholding tax if applicable.
The controller only intervenes in step 3 when there is a real exception. Everything else happens on its own.
What data exactly reaches Holded
- Supplier identified by tax ID, mapped against the existing supplier list in Holded.
- Suggested accounting account based on category learned from history.
- Taxable base and VAT breakdown by rate (21%, 10%, 4%, exempt, reverse charge).
- Withholding tax on freelance professional invoices, with the withheld base separated.
- PO number referenced and matching status (matched, variance, no PO).
- Detail lines with quantity, pre-tax unit price and description — useful for spend analytics by SKU.
- Invoice date, computed due date and declared payment method.
- Original attachment (PDF/XML) anchored to the entry for audit.
Holded receives the entry like any other: it appears in the ledger, computes in your monthly close and remains visible for your advisor.
Technical integration: CSV, API or Webhooks
- CSV export compatible with Holded's standard journal-entry importer. The safest format and requires no cross-authentication.
- Holded REST API: direct integration with the API documented at developers.holded.com to create entries and suppliers programmatically.
- Bidirectional webhooks: ininvoice notifies Holded when an invoice is approved; Holded could notify ininvoice when a payment goes out to close the cycle.
Starting with CSV covers 90% of the value and activates in hours. API integration is justified when volume exceeds 200 invoices/month and the manual importer becomes heavy. Holded is the integration target: the natural destination of the AP data ininvoice cleans and reconciles.
Time savings for a Holded team
| Manual task | Before (min/invoice) | After with ininvoice |
|---|---|---|
| Email download, rename PDF | 2 min | 0 min |
| Manual header keying in Holded | 3 min | 0 min (auto-exported) |
| Match against PO (Excel) | 5 min | 0 min (auto) |
| Duplicate check | 1 min | 0 min (auto) |
| Exception resolution (when needed) | 10 min | 3-5 min with context |
For 200 invoices/month with 10% exceptions: roughly 30-40 hours/month recovered for the admin team. The exact figure depends on your simple-invoice vs PO-invoice mix and your current duplicate rate, which we measure in the first 30 days.
Verifactu and Holded: how the combined flow changes
Verifactu — the AEAT verifiable invoicing system — obliges issuers. As recipient (the AP side), you have no obligation to generate Verifactu records. But you will receive more and more Verifactu-stamped invoices.
- The signed XML becomes authoritative. ininvoice prioritizes signed content over visual PDF. Holded receives data verified at source, not inferred by OCR.
- Traceability improves. The unique ID of the issued invoice is anchored to the entry. If AEAT asks, the full path — issuer → ininvoice → Holded → close — is auditable.
Full detail in Verifactu and accounts payable.
Want to see it on your real invoices?
Connect Gmail or Outlook, let ininvoice process 30 days of invoices and measure how many would be exported touchless to your Holded. Get started.
If you're migrating to Holded from another ERP
Many SMEs reach Holded from A3, Contasol or ContaPlus. Migration is a good time to add the touchless AP layer in the same project:
- The admin team is already in change mode. Adopting two systems at once costs less net effort than adopting them in two separate phases.
- The supplier master is built only once, synced between Holded and ininvoice.
- The chart of accounts and suggested accounting logic are trained from month one with real Holded data.
Activation time: 48 h ininvoice + Holded already running
- Day 1. Email connection (Gmail or Outlook). Supplier master and chart of accounts imported from Holded to ininvoice. Tolerance configuration per category.
- Day 2. First invoices in flow. Fine-tune accounting account mapping. Validation of first export batch to Holded.
- Week 1. First real three-way reconciliations. Metrics on touchless rate, duplicate rate and average exception time.
- Month 1. Monthly close with entries imported from ininvoice. Categorization model adjustment with real data.
No consultant, no SOW and no historical data migration: ininvoice works on the invoices that arrive from today, not on the historical archive.
Holded controller checklist before activating
- Supplier master in Holded updated with correct tax IDs — key for automatic mapping.
- Chart of accounts documented: which account to use for which recurring expense type.
- VAT rates and withholding tax reviewed for each usual supplier.
- Single email mailbox where invoices arrive (shared or individual).
- PO policy: which purchases go through a formal PO and which are automatic recurrences?
- Tolerances per category defined (default 2% or EUR 1.50 OR-mode).
- Approvers assigned by amount limit and expense family.
- Duplicate policy: how the supplier is notified when resending an already-paid invoice.
- Monthly close calendar: on which day final entries are imported into Holded.
- Team contact point for critical exceptions (high variance, new supplier, big invoice).
Frequently asked questions
- Does ininvoice replace Holded?
- No. Holded remains your ERP and accounting source. ininvoice is the AP layer that delivers clean data to it.
- Do we need to retrain the team on something new?
- No for the Holded team. Only the AP lead works in ininvoice (exception review). The rest keeps seeing Holded as before.
- Can I keep entering invoices manually in Holded for special cases?
- Yes. ininvoice doesn't block Holded. They coexist: the majority arrive automatically, the occasional ones you can keep typing.
- How is the supplier master synced?
- In the initial setup it is imported from Holded. When ininvoice detects a new supplier, it is automatically created in Holded on the next export.
- Does it work with Holded Premium or only Pro?
- Both Holded plans allow entry imports. API integration depends on the Holded plan you have; CSV import is universal.
- What about invoices already posted to Holded before activating ininvoice?
- They stay as they are. ininvoice works on those entering after activation. Historical handling is not touched.
- Can I deactivate the integration if it doesn't work?
- Yes. ininvoice doesn't write to Holded without your batch approval, and there's no lock-in. If you decide to stop, Holded stays intact.
How many monthly invoices could you export automatically to Holded?
Connect your mailbox, import suppliers from Holded and measure the real touchless rate over 30 days. Get started.
Three takeaways
- Holded handles the ERP. ininvoice handles the upstream AP layer: intake, three-way matching, duplicates. They don't compete, they fit.
- The entry that reaches Holded comes with mapped supplier, suggested account, VAT breakdown and withholding tax. Zero re-keying.
- Activation in 48 h with no consultant. No historical migration. Only invoices entering from today flow through.
Related content
See demo with my invoices
Connect Gmail or Outlook. ininvoice ingests, cross-checks line by line with 2% / EUR 1.50 OR-mode tolerance and exports the reconciled entry to your Holded.
Get startedEUR 249/month · No lock-in · Plug and play, no implementation cost