Connecting POP to n8n

Integrationsn8n2026-09-01

Goal

Generate SdI, PEPPOL, KSeF, or ZUGFeRD invoices, check their status, and validate EU VAT numbers inside an n8n workflow, without manually calling the REST API.

Prerequisites

What the POP node offers

The official node (n8n-nodes-pop) exposes two resources:

Create KSeF Invoice shares the same invoice input form as the other creation operations, plus a Submit via KSeF Provider (Yes/No) option to send the document straight to the KSeF provider instead of only generating the XML locally — equivalent to setting integration.use = ksef-via-pop on the underlying REST request (see api/ksef). Create ZUGFeRD Invoice only generates the ZUGFeRD/Factur-X package (no send option: submission is always handled internally by POP, see api/zugferd).

It doesn’t cover PDF: for that domain use the REST API directly (see api/pdf).

For Zoho there are two distinct, non-equivalent paths: Sync Document to Zoho above (uses the Zoho connector already linked on your POP account, no separate OAuth setup in n8n) or the dedicated n8n-zoho package (self-hosted, Zoho OAuth credentials configured directly in n8n, routed through a signed webhook — install via npm only, it isn’t approved/listed on n8n’s official Community Nodes registry). Pick based on where you want the Zoho OAuth connection to live.

Steps

  1. Install the official node: https://n8n.io/integrations/pop/.
  2. Create a POP API credential with your license_key (a single field, sent as the X-API-Key header); n8n verifies it by calling GET /account-profile.
  3. Add the POP node, choose the resource and operation (e.g. Invoice → Create SdI Invoice (XML)).
  4. Choose the input mode: Use Incoming JSON (uses the incoming JSON as-is), Form Fields (fill in the fields in the node), JSON, or Raw (XML/Other).
  5. If you want POP to send the document immediately (not just generate it), enable Send Invoice: it automatically adds the sdi-via-pop or peppol-via-pop integration to the request.

Verify

Run the workflow once and check the node’s output: on success it returns XML/JSON depending on the operation; on error, a NodeApiError with the URL, HTTP status, and response body — useful for immediately spotting which field failed validation.

Common errors

For the alternative Zoho path (self-hosted, OAuth configured in n8n, manual npm install only), see n8n-zoho (or api/connectors for the underlying routing mechanism). For details on the native connector used by Sync Document to Zoho, see zoho.