Package Information
Available Nodes
Documentation generating…
Documentation
n8n-nodes-2nodoc
n8n community node for 2nodoc, a SaaS e-invoicing platform (Solution Compatible RFE, France/Belgium). Create, list, and update invoices and clients, manage the e-invoicing (RFE/PA-PDP) lifecycle, and download PDF/Factur-X files, directly from your n8n workflows.
Status: v0.2. Covered scope: Invoices, Clients, E-Invoices (RFE) with the full e-invoice action set. Coming soon: Products, Team Users, purchase invoice from OCR.
Prerequisites
You need a 2nodoc account before you can use this node:
- Create a Team account at 2nodoc.com/register.
- Complete the KYC verification for your company (required by French/Belgian e-invoicing regulation before your account can send or receive real invoices).
- Once your account is verified, generate an API token from your 2nodoc dashboard (Settings → API) — this is the value you'll use in the credential below.
Installation
In a self-hosted n8n instance:
- Settings → Community Nodes → Install
- Enter
n8n-nodes-2nodoc
Or locally for development:
npm install
npm run build
npm link
# then, in the ~/.n8n/nodes folder (or N8N_CUSTOM_EXTENSIONS):
npm link n8n-nodes-2nodoc
Credentials
Create a 2nodoc API credential with:
- API Token: token generated from the 2nodoc dashboard (Settings → API), sent as
Authorization: Bearer <token>. Requires a verified 2nodoc Team account — see Prerequisites above. - Base URL:
https://api.2nodoc.comby default.
Resources and covered operations
Invoice (/api/public/invoices)
Create, Get, Get Many, Update, Delete, Update Status, Convert Quote to Invoice, Send by Email, Get Send History, Download PDF, Download Factur-X.
Client (/api/public/clients)
Create, Get, Get Many, Update, Delete.
E-Invoice / RFE (/api/public/einvoices)
Connection Status, Connected Company, Get, Get Many (received/sent), Accept, Conditionally Accept, Reject, Open Dispute, Suspend, Payment Received, Complete, Initiate Payment.
Accept takes an optional Reason; Reject, Open Dispute, Conditionally Accept, and Suspend require one (the API rejects the call otherwise).
Every create/update operation exposes an Additional Fields field (JSON) to pass fields not yet explicitly modeled in the node, without having to wait for a new version.
Notes and gotchas
- Invoice ID vs. invoice number: operations that require an ID (e.g. Invoice → Get) expect the internal numeric ID (e.g.
519717), not the display number (e.g.F202600112). Use Invoice → Get Many or E-Invoice → Get Many to look up the internal ID first. - Email validation: the 2nodoc API rejects reserved/special-use email domains (e.g.
.local). Use a real domain for client emails. - Multi-item execution: like any n8n node, this node's
execute()runs once per input item unless "Execute Once" is enabled on the node. Be careful when chaining a write operation (Create/Update/Delete) after a node that outputs multiple items — it will run once per item, which can unintentionally create duplicates. - Get Many now unwraps the list correctly (v0.2.0): Invoice → Get Many and E-Invoice → Get Many previously output a single item containing the whole
{invoices: [...], total, ...}wrapper instead of one item per invoice. Fixed in v0.2.0 — Get Many now outputs one item per record for every resource, same as Client → Get Many already did. - Send by Email now sends the recipient (v0.2.0): earlier versions called the send endpoint without a recipient email, so it likely failed against the real API. v0.2.0 adds a required To Email field, plus optional Format (FACTUR-X/PDF), Subject, and Message.
Example workflow
A simple "create client → create invoice → send by email" chain:
- 2nodoc → Client → Create with the client's
additionalFields(e.g.{"name": "Acme Corp", "email": "billing@acme.com"}) - 2nodoc → Invoice → Create using the Client ID from step 1, a Document Type (
Invoice), an Invoice Date, and one or more Lines - 2nodoc → Invoice → Send by Email using the Invoice ID from step 2
Development
npm install
npm run build # compiles TypeScript and copies icons into dist/
npm run lint # eslint-plugin-n8n-nodes-base rules
To test locally in n8n: npm link, then npm link n8n-nodes-2nodoc from your instance's custom nodes folder (N8N_CUSTOM_EXTENSIONS environment variable), then restart n8n.
Publishing
npm run build
npm publish --access public
Since May 1st, 2026, n8n verification (the "verified" badge) requires publishing via GitHub Actions with npm provenance — see docs.n8n.io for the workflow configuration.
License
MIT — © Byte4flow Limited