Connecting POP to n8n
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
- An n8n instance (cloud or self-hosted).
- A valid POP
license_key(see get-your-license-key).
What the POP node offers
The official node (n8n-nodes-pop) exposes two resources:
- Invoice — Create SdI Invoice (XML), Create Peppol Invoice (UBL), Create KSeF Invoice (FA(3) XML), Create ZUGFeRD Invoice, Get Invoice Status, Get Peppol Document, Verify SdI Document (XML), Sync Document to Zoho (syncs an invoice or credit note to Zoho Books/Invoice via the native POP connector — requires Zoho already connected on the POP account, no minimum plan; optional connector-status check before sending).
- VAT Validation — Validate VAT Number, via the EU’s VIES service (not the POP API).
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
- Install the official node: https://n8n.io/integrations/pop/.
- Create a POP API credential with your
license_key(a single field, sent as theX-API-Keyheader); n8n verifies it by callingGET /account-profile. - Add the POP node, choose the resource and operation (e.g. Invoice → Create SdI Invoice (XML)).
- 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).
- If you want POP to send the document immediately (not just generate it), enable Send Invoice:
it automatically adds the
sdi-via-poporpeppol-via-popintegration 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
- Node not authenticated — the
license_keyin the credential is invalid or has been regenerated: update it fromAccount > API. - Missing fields in the mapped payload — same validation as the underlying REST API: check the guide for the specific route (e.g. api/sdi) for the required fields.
- Line discount not applied — if you enable “Discount” on an order line, the “Discount Percent” field is required: without it, validation fails.
- VIES validation slow or failed — the Validate VAT Number node automatically retries up to 5
times on transient VIES service failures (
MS_UNAVAILABLE,TIMEOUT, etc.); a persistent failure after the retries indicates the VIES service is unreachable, not a POP configuration issue. - The workflow stops on a single error — if you want n8n to continue with the following items instead of stopping the workflow, enable “Continue On Fail” on the node: the error is attached to the output item instead of interrupting execution.
Related configuration
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.