1. Home
  2. Integrations

n8n, Make and Zapier

Send compliant e-invoices from your automations without writing code. An order is paid, Invoir turns it into a Factur-X, ZUGFeRD, XRechnung or Peppol BIS invoice that passed the official rules, and the next step emails or files the PDF. The same app also checks the e-invoices you receive.

Before you start

  1. Get a free API key: enter your email, click the link we send, copy the key. 25 documents a month, no credit card.
  2. In the dashboard, also create a test key (inv_test_…). Test documents are the same but carry a TEST watermark, never count against your quota and are deleted after 24 hours. Build and try your workflow with the test key, then swap in the live key.

Every platform asks for the key once, when you create the connection, and checks it with a free call. Usage is counted the same way as for the API: one document per generated invoice, validation or extraction.

What you can do

The same four operations on every platform:

OperationInputOutput
Create invoiceProfile, number, dates, seller, buyer, line items, payment, references. Or the complete invoice JSON.Invoice ID, totals and VAT breakdown, validation report, and the PDF and XML as files for the next step.
Get invoiceThe invoice ID.The same answer and files again (kept 90 days, test documents 24 hours).
Validate e-invoiceA PDF or XML file.Valid or not, error and warning counts, and each finding with its rule ID, message and location.
Extract XMLA Factur-X or ZUGFeRD PDF.The embedded XML, as text and as a file.

Profiles: factur-x and zugferd (PDF/A-3 with the XML inside, for France and most of Germany), xrechnung-ubl and xrechnung-cii (German public buyers), peppol-bis (Belgium from 2026, the Netherlands and the Peppol network; hand the XML to your access point), plain (a branded PDF without XML). Totals are always computed by Invoir from the lines, so the PDF, the XML and the numbers never disagree. See XRechnung vs ZUGFeRD if you are unsure which one you need.

Due date or payment terms: an e-invoice needs one of the two when an amount is due (EN 16931 rule BR-CO-25); without either, Invoir answers with an error naming the due date.

Delivery date: fill it in (German invoices must state the date of supply). Without any delivery details a Factur-X is still valid but carries one warning.

Retries without duplicates: fill in Idempotency key with something unique to the order (its ID). If the step runs again with the same key and data, you get the first invoice back and nothing is counted twice.

n8n

Set up

  1. In n8n, open Settings → Community Nodes → Install, enter @invoir/n8n-nodes-invoir and install. (Self-hosted: npm install @invoir/n8n-nodes-invoir in ~/.n8n/nodes works too.)
  2. Add an Invoir node to a workflow, choose Create new credential and paste your key.

Example: paid order → e-invoice → email

  1. Trigger: your shop's trigger (WooCommerce, Shopify, Stripe), a webhook or a form.
  2. Invoir → Invoice → Create: profile Factur-X, invoice number, seller (your company, VAT ID, address) and buyer from the order. For a variable number of lines set Line Items Source to From JSON and map them with an expression:
    {{ $json.line_items.map(i => ({
    description: i.name, quantity: i.quantity, unitPrice: i.price, vatRate: 19
    })) }}
  3. Gmail → Send (or Send Email, Outlook) with the attachment field set to pdf: the node puts the PDF in the binary field pdf and the XML in xml.

To check what suppliers send you: Email Trigger (IMAP) with attachments → Invoir → E-Invoice File → Validate (Input Binary Field attachment_0) → If {{ $json.valid }}. The output lists each finding, so the false branch can reply with the rule IDs. Node reference and an importable workflow: github.com/invoir-dev/n8n-nodes-invoir.

Make

Set up

  1. Open the Invoir app invitation while logged in to Make and click Install. (Until Make lists Invoir in its app directory, the invitation is how you add it.)
  2. In a scenario, add an Invoir module, click Create a connection and paste your key.

Example: paid order → e-invoice → email

  1. Trigger: for example Shopify → Watch Orders, WooCommerce → Watch Orders or Stripe → Watch Events.
  2. Invoir → Create an Invoice: profile, invoice number, seller and buyer. Line items is an array: add items by hand, or switch the field to mapping and map the order's line items array (the item fields are description, quantity, unitPrice, vatRate, unit, vatCategory).
  3. Gmail → Send an Email (or Microsoft 365 Email, Google Drive → Upload a File): in Attachments choose the Invoir module as the source. Its File name and Data are the PDF (for XRechnung and Peppol BIS without a PDF: the XML); the XML is also under XML file.

Validating incoming invoices works the same way: Email → Watch Emails → Iterator over the attachments → Invoir → Validate an E-Invoice → a filter on Valid. For any other endpoint (branding, templates) use Invoir → Make an API Call.

Zapier

Set up

  1. Accept the Invoir invitation while logged in to Zapier. (Until Zapier lists Invoir in its app directory, the invitation is how you add it.)
  2. In a Zap, add an action step, search for Invoir, choose an event and sign in with your key.

Example: paid order → e-invoice → email

  1. Trigger: for example Shopify → New Paid Order, WooCommerce → Order Paid or Stripe → New Payment.
  2. Invoir → Create Invoice: choose Fill in the fields, then profile, invoice number, seller and buyer. Under Line Items map the trigger's line items (Description, Quantity, Unit Price, VAT Rate); Zapier creates one invoice line per order line. Or choose Send the complete invoice JSON for every field the API knows.
  3. Gmail → Send Email (or Google Drive → Upload File): map Invoir's PDF File (and XML File) into the attachments.

Also available: Find Invoice (by ID, with the files), Validate E-Invoice (a file from an earlier step; put a Filter on Valid) and Extract XML.

When something fails

Each platform shows Invoir's own explanation, so you can fix the input in one go:

  • 400 invalid_request: lists every missing or wrong field at once, for example buyer.reference: XRechnung requires the buyer reference (BR-DE-15).
  • 422 invoice_invalid: the official rules rejected the generated document; the failing rule IDs are listed. Nothing was stored or counted.
  • 401: the key is wrong or was revoked; update the connection.
  • 429 quota_exceeded: the free plan's 25 documents for the month are used up. Paid plans never stop; test keys never count.
  • 503 busy: Invoir was busy for 30 seconds. Zapier and Make retry on their own; in n8n turn on Retry On Fail.

Everything else, including the full invoice JSON, is in the API docs. Questions: [email protected].

Start with a free API key and a test key: 25 documents a month, test documents never count.