canonical: https://jentic.com/apis/api.faktoora.com/faktoora

# Faktoora e-Invoicing API

Jentic publishes the only available OpenAPI specification for Faktoora e-Invoicing API, keeping it validated and agent-ready. Faktoora is a European electronic invoicing platform that creates, validates, and exchanges invoices in compliance with the EN16931 standard, including XRechnung, ZUGFeRD, and Peppol formats required for B2G and B2B e-invoicing across the EU. The 87-endpoint API covers outgoing and incoming invoices, structured invoice import with validation, customer and product catalogues, product bundles, and webhooks for real-time invoice status events.

## For AI agents

Create EN16931-compliant electronic invoices, import and validate incoming invoices, manage customers and products, and subscribe to invoice status webhooks for European B2B and B2G e-invoicing.

## Scope

Does not handle full bookkeeping, ledger postings, or tax filing - use for e-invoicing creation, import validation, and invoice lifecycle tracking only.

## Capabilities

- Issue an EN16931-compliant invoice in XRechnung or ZUGFeRD format
- Import an incoming invoice file and run structural and tax validation
- Track invoice status from issue through delivery, payment, and archive
- Manage a customer master record with VAT IDs and country codes
- Maintain a product catalogue and reusable product bundles for invoice line items
- Subscribe to webhooks that fire on invoice status changes
- Retrieve validated invoice components (line items, taxes, payment terms) from imports

## Use cases

### EU E-Invoicing Compliance

Issue and receive invoices in EN16931-compliant formats (XRechnung, ZUGFeRD) required for selling into German public sector and increasingly for B2B across the EU. Faktoora handles format generation, validation, and delivery so teams do not build XML schema validators in-house. Cuts compliance project time from weeks to days for businesses adapting to mandatory e-invoicing.

Example prompt: POST /invoices with buyer details, line items, and target format=XRechnung to generate a compliant invoice and capture the returned faktooraId

### Invoice Capture and Validation

Automate accounts payable by importing supplier invoices via /import and pulling structured line items, taxes, and payment terms once validated. The validation endpoint flags structural and tax errors before the invoice ever reaches the ERP, reducing rejection cycles and manual data entry.

Example prompt: POST /import with the supplier invoice file, GET `/import/{importId}/validation` to confirm it passed, then GET `/import/{importId}/content/lineitems` for the structured data

### Real-Time Invoice Status Sync

Drive an internal dashboard or finance Slack channel from invoice lifecycle events using Faktoora webhooks. Subscribe once, then receive structured events as invoices are issued, dispatched, paid, or archived. Eliminates polling `/invoices/{faktooraId}/status` and surfaces problems (rejected, overdue) without delay.

Example prompt: POST a webhook subscription for the invoice.status_changed event, then on receipt route 'rejected' status events to the finance Slack channel

### AI Agent Invoicing via Jentic

An AI accounts agent can issue invoices on demand by calling Faktoora through Jentic. Given a customer record, line items, and target format, the agent runs POST /invoices and returns the faktooraId and status. Jentic isolates the X-API-KEY and exposes the 87 operations as discoverable tools.

Example prompt: Search Jentic for 'create an EN16931 invoice', load the POST /invoices schema, and execute with buyer, line items, and format to return the faktooraId

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/invoices` | Create an outgoing EN16931-compliant invoice |
| GET | `/invoices` | List issued invoices with filters |
| GET | `/invoices/{faktooraId}/status` | Get current status of an invoice |
| POST | `/import` | Import an incoming invoice file for validation |
| GET | `/import/{importId}/validation` | Get validation result for an imported invoice |
| GET | `/import/{importId}/content/lineitems` | Retrieve structured line items from an imported invoice |
| GET | `/import/{importId}/content/taxes` | Retrieve tax breakdown from an imported invoice |

## Key resources

- **Invoices** — Issue, list, fetch, and delete outgoing invoices with status tracking
- **Invoice Import** — Import incoming invoice files and access validated structured content
- **Customers** — Manage customer master records with VAT IDs and addresses
- **Products** — Maintain a product catalogue used for invoice line items
- **Product Bundles** — Group products into reusable bundles for invoice templates
- **Webhooks** — Subscribe to invoice and import lifecycle events

## Why Jentic

- **Setup:** Wiring Faktoora by hand means setting up its API key auth and coding your own calls to the invoice, import, and validation endpoints. Through Jentic you install once, import the Faktoora e-Invoicing API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Faktoora puts the invoice and import id in the URL path (`/invoices/{faktooraId}/status`, `/import/{importId}/validation`), so a rule can pin your agent to reading status and validation for one invoice or import. You choose the operations it may call, so invoice creation is not included unless you add it.
- **Credential handling:** Your Faktoora API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create an e-invoice' or 'check an invoice's status', and Jentic returns the matching Faktoora operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **FreeAgent** — Accounting platform that can consume Faktoora-generated invoices for ledger and tax reporting
- **Xero Accounting** — Accounting platform widely used in EU SMBs that pairs with Faktoora's compliant invoice generation
- **Sage** — Accounting suite with built-in invoicing, broader in scope but less specialised in EN16931 compliance

## FAQ

### Why is there no official OpenAPI spec for Faktoora e-Invoicing API?

Faktoora does not publish a public OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Faktoora e-Invoicing API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Faktoora e-Invoicing API use?

Faktoora uses an API key passed in the X-API-KEY request header. There is also a sandbox base URL (api.demo.faktoora.com) for testing. Through Jentic, both production and demo keys can be stored in the vault and selected per environment.

### Which e-invoicing formats does this API generate?

Faktoora generates EN16931-compliant formats including XRechnung (the German B2G standard) and ZUGFeRD (hybrid PDF/A-3 with embedded XML). The format is selected on POST /invoices and is required for selling into German public sector and increasingly mandated for EU B2B.

### Can I extract line items and tax data from a supplier PDF invoice?

Yes. POST /import accepts the supplier invoice file. After validation completes, GET `/import/{importId}/content/lineitems` returns structured line items and GET `/import/{importId}/content/taxes` returns the tax breakdown, both ready to push into an ERP.

### How do I issue an invoice through Jentic?

Run pip install jentic, then search 'create an EN16931 invoice'. Jentic returns the POST /invoices operation with its schema. Execute with buyer details, line items, and format; Jentic handles the X-API-KEY header and returns the new faktooraId.

### Does the API support webhooks for invoice events?

Yes. The /webhooks endpoints let you subscribe to invoice and import lifecycle events. This avoids polling `/invoices/{faktooraId}/status` and surfaces rejection, payment, and archive events as they happen.

### Can I limit what my agent is allowed to do with the Faktoora e-Invoicing API?

Yes. Because you run Jentic One yourself, you decide which of the 87 Faktoora operations your agent may call and which API key it uses. Faktoora carries the invoice and import id in the URL path, as in `/invoices/{faktooraId}/status` and `/import/{importId}/validation`, so your rules can pin the agent to reading status and validation for a specific invoice or import. If you do not include POST /invoices in the allowed set, the agent cannot create invoices, only the read operations you granted.
