| Node used | n8n-nodes-holded · 42 resources · 323 operations · MIT |
|---|---|
| Platforms connected | Shopify · Stripe · Calendly · HubSpot · Asana · Holded |
| When to use n8n | Workflows <10 nodes · no backend dev · fast prototyping |
| When NOT to use n8n | High volume · complex tax logic · serious testing |
Why n8n + Holded is a good fit for small businesses
n8n is the most widely adopted open source workflow engine for connecting SaaS tools without writing full code. Holded is the most widespread Spanish ERP among small businesses. The obvious intersection: when a small business has 4-5 SaaS tools connected and needs them to talk to each other, n8n gives you the glue without hiring a backend dev.
What was missing was an n8n node that truly covered Holded's API v2, not the 10 most common operations but all 323. That is why we published n8n-nodes-holded on npm under the MIT license with full coverage and a provenance attestation.
These are 5 workflows we see repeat across clients, all solved with n8n + the node, without custom backend code. If your case fits, you can have it in production in an afternoon.
Workflow #1 — Shopify order → Holded invoice
The classic one. Every confirmed order in Shopify generates the corresponding invoice in Holded with its customer, series and correct VAT.
Production considerations: enable "Continue on fail" mode on the Holded node so that one error does not block the next order. Idempotency: use the Shopify order_id as the external reference in Holded so retries do not duplicate. For Verifactu, see the blog.
Workflow #2 — Stripe charge.succeeded → Holded contact + invoice
For services charged through Stripe (subscriptions, one-off payments). The charge.succeeded webhook comes into n8n and generates a formal invoice in Holded.
Considerations: if you use Stripe Tax as your main tax system, do NOT create an invoice in Holded, you would duplicate it. The decision is "who issues the formal invoice": Stripe (with Stripe Tax enabled) or Holded (recommended for Spain thanks to native Verifactu).
Workflow #3 — Calendly confirmed booking → Holded CRM contact
For professional services (consulting, coaching, design). Every confirmed Calendly booking creates/updates the contact in Holded's CRM with the prospect's information.
Considerations: Calendly gives you few required fields (name + email). If you want to enrich (job title, company, tax ID) add a scraping/enrichment step with Clearbit or similar before the upsert.
Workflow #4 — HubSpot deal.stage = closed-won → Holded proforma
For sales teams that close deals in HubSpot. When a deal moves to "closed won", the proforma is automatically created in Holded to send to the customer.
Considerations: HubSpot deals have line items but may not carry VAT applied. Make sure the mapping to Holded assigns a default VAT based on the customer's country. For intra-community B2B with a valid VIES tax ID → 0% VAT with an exemption code.
Workflow #5 — Asana task delivered → Holded hourly invoice
For agencies/consultancies that bill per project/hour. When an Asana task is marked as completed with the "billable" tag, an invoice is generated in Holded based on the logged hours.
Considerations: group invoices by customer. Instead of generating one invoice per task (which can be dozens a month), set up a monthly cron that gathers all the "billable" tasks for the period and generates ONE consolidated invoice with each task as a line. Cleaner for the customer and for your month-end close.
Self-hosted n8n vs n8n Cloud vs custom backend service
If your case fits the 5 workflows above or simple variants, decide:
- →n8n Cloud: if you are just starting, the node is a community one so Cloud lets you install it without any prior configuration. Operational within hours. To consider: tax data passes through n8n Cloud servers, which may require a GDPR assessment for sensitive data depending on your sector.
- →Self-hosted n8n on a VPS: full control, tax data on your own infrastructure, without the plan's imposed limits on executions/users. Requires initial setup and maintenance (Docker Compose, updates, backups).
- →Custom backend service (fixed one-off project): when workflows become high volume, complex tax logic, Verifactu with multi-currency edge cases, serious testing requirements. This is where our custom integration services come in.
Frequently asked questions
Do I need self-hosted n8n or n8n Cloud to use the n8n-nodes-holded node?
It works on both. n8n Cloud makes it easy (Settings → Community Nodes → install @francodesystems-npm/n8n-nodes-holded). Self-hosted requires enabling N8N_COMMUNITY_PACKAGES_ENABLED=true. For small businesses starting out, Cloud is the simplest option. For high volumes (>10,000 executions/month) or data privacy requirements for tax data (recommended for Spain's Verifactu), go self-hosted on a dedicated VPS.
When should I use n8n and when should I write custom code?
n8n is a perfect fit for: workflows with fewer than 10 nodes, logic that fits into simple if/else branches, teams without a backend dev, fast prototyping to validate a use case. Custom code fits when: high volume with critical latency, complex tax logic (Verifactu with multi-currency edge cases), integrations with services that have no available node, serious testing requirements. The honest rule of thumb: if your n8n workflow starts having more than 20 nodes or you need complicated JS functions at every step, it is time to move it to code.
Are n8n workflows Verifactu compliant?
Yes, if they are well designed. What the n8n-nodes-holded node does is call Holded's API v2, which has native Verifactu (Holded is an AEAT Social Collaborator). The workflow has to respect: deduplication by external key (order_id, charge_id, etc.) so it does not create duplicate invoices on retries, strict creation order for invoices (concurrency 1 on the billing worker), validation of required fields before invoking the node. If that is missing, the problem is NOT Verifactu, it is the workflow.
Is the n8n-nodes-holded node official from Holded?
No, it is an open source community node maintained by Francodesystems under the MIT license. 'Holded' and its logo are trademarks of Holded Technologies S.L. used under nominative fair use. The node is not affiliated with or sponsored by Holded. Even so, it covers 100% of the official API v2 (42 resources · 323 operations), it is published on npm with a provenance attestation signed by GitHub Actions OIDC, and it is regenerated whenever Holded extends v2.
Can I combine n8n + a custom service for hybrid cases?
Yes, it is the most realistic pattern for small businesses that grow. n8n for the 80% of simple workflows (reminders, one-off syncs, notifications) and a dedicated backend service for the critical 20% (invoicing with Verifactu, bank reconciliation, high-volume integrations). The backend service exposes webhooks that n8n can call, and n8n notifies the service when events appear that require tax/complex logic.
Related reading
Juan Cantón Rodríguez
Founder & lead developer at Francodesystems. Maintains n8n-nodes-holded with 100% coverage of Holded's API v2. The workflows in this post are running in real small businesses.