Bexio Invoice Automation with n8n: Complete Guide (2026)

Step-by-step guide to automating Bexio invoices with n8n. Swiss QR bills, email dispatch, payment matching, and dunning — save 12+ hours per week with real workflows from 80+ Swiss SME setups. DSG/nDSG-compliant.
Reporting by Lukas Huber, 10+ years Swiss Treuhand, 80+ Bexio automations
Bexio Invoice Automation: Complete Guide
"🔄 Updated April 2026: New Bexio webhook events, updated n8n Bexio node, new DSG/nDSG compliance section, expanded troubleshooting, and mini-comparison n8n vs. Make vs. Zapier for Swiss finance teams.
"
In this guide, I'll show you step by step how to fully automate your Bexio invoicing and save 12+ hours per week. We'll use n8n (Open-Source workflow automation, self-hostable for Swiss DSG compliance) to automate the following processes:
✅ Automatic invoice creation (from CRM deals, projects, subscriptions) ✅ QR invoice generation (Swiss QR Bill with QR code) ✅ Email sending (personalized invoice emails) ✅ Payment reconciliation (automatic matching of incoming payments) ✅ Dunning system (automatic payment reminders after 15/30/45 days)
Time savings: 12-18 hours per week (with 50-100 invoices/month) Error reduction: 85% fewer manual errors Payback: typically 2-3 weeks — cumulative savings in the first 6 months yield ~340% ROI over one-time setup costs
"Field experience: Based on 80+ Bexio implementations I've run as a Treuhand operator across Swiss SMEs. The guide is deliberately pragmatic — no theory, just what actually works in practice.
"
Prerequisites
Before we start, you'll need:
Software
-
Bexio account (Standard or Pro package)
- You need API access (unlimited in Pro package, 100 calls/day in Standard)
- Try Bexio free (30 days)
-
n8n account
- Option 1 (recommended): n8n Cloud (from CHF 20/month)
- Option 2 (free): Self-hosted on own server — see n8n Documentation
Knowledge
- ✅ Basic knowledge of Bexio interface (creating invoices)
- ✅ Ability to create Bexio API tokens
- ⚠️ No programming knowledge required (everything visual with n8n)
Time Required
- Initial setup: 2-3 hours
- Maintenance: 15 minutes/month
Why n8n? Quick comparison with Make and Zapier
The most common question in our client engagements: Why n8n and not Zapier or Make? Short, honest answer for the Swiss context:
| Criterion | n8n | Make (Integromat) | Zapier | |---|---|---|---| | Bexio node (native) | ✅ Yes | ⚠️ via HTTP request | ⚠️ via HTTP request | | Self-host (CH server) | ✅ Open Source | ❌ | ❌ | | DSG/nDSG-compliant out-of-the-box | ✅ (when CH-hosted) | ⚠️ EU servers | ⚠️ US servers | | Price (starter) | CHF 20/mo or free self-host | from ~CHF 9/mo | from ~CHF 20/mo | | Learning curve | medium | easy | very easy | | Complex workflows | ✅ strong | ✅ strong | ⚠️ limited |
My take: For Swiss fiduciaries and SMEs handling client data, n8n is the only truly clean solution — you can run it on your own server (or a CH host like Infomaniak) and keep data onshore. More in Make.com vs. Zapier comparison.
DSG/nDSG Compliance: What to know before setup
Since the revised Swiss Federal Act on Data Protection (revDSG, in force since 1 September 2023), clear rules apply to the automatic processing of customer data:
- Data localization: Sending invoice data to a US service (Zapier, Gmail via Google) counts as cross-border data transfer. With adequate safeguards (US via DPF) it's usually permitted — but must be documented in your processing register.
- Data processing agreements: n8n Cloud (EU) or self-hosted are simpler here. For Gmail, you need a DPA with Google (included in Google Workspace).
- Processing register: Log the automation. Template in the DSG/nDSG guide for SMEs.
Concrete advice: If you're automating customer invoices, use self-hosted n8n + SMTP via a CH mail provider (e.g. Infomaniak, Hostpoint). That sidesteps the cross-border discussion entirely.
Step 1: Create Bexio API Token
1.1 Generate Token
- Log in to Bexio → app.bexio.com
- Click top right on your Profile → Settings
- Navigate to: Interfaces → API
- Click: "Create new token"
- Select permissions:
- ✅ Contacts: Read
- ✅ Invoices: Read, Write, Delete
- ✅ Projects: Read (if project-based invoicing)
- ✅ Payments: Read (for payment reconciliation)
- Copy the token (shown only once!)
Example token:
eJyNVVtv2zYU_iuCn9tYkiVbl9qGFw...
⚠️ Important: Save the token securely (e.g., in password manager). It's shown only once!
1.2 Test Token
Test the token with this cURL command (Terminal/PowerShell):
curl -H "Authorization: Bearer YOUR_TOKEN_HERE" \
https://api.bexio.com/2.0/contact
Expected response: JSON list of your Bexio contacts
✅ Works? → Continue to Step 2 ❌ Error "Unauthorized"? → Check token permissions again
Step 2: Set Up n8n & Connect Bexio
2.1 Create n8n Account
Option A: n8n Cloud (recommended for beginners)
- Go to cloud.n8n.io
- Register (email + password)
- Choose plan: Starter (CHF 20/month, 5,000 executions)
- Activate your account
Option B: Self-host n8n (free)
# With Docker (Recommended)
docker run -d --name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
# Access: http://localhost:5678
2.2 Create Bexio Credential in n8n
- Open n8n → Click top right "Credentials"
- Click: "New Credential" → Search: "Bexio"
- Fill in:
- Name: "Bexio Production"
- API Token: (from Step 1.1)
- Click: "Save"
- Test connection: "Test Credential" → ✅ Successful?
Step 3: Automatic Invoice Sending (Workflow #1)
Now we'll build the first workflow: Automatic sending of invoices via email including QR code.
3.1 Create New Workflow
- n8n → Workflows → "New Workflow"
- Name it: "Bexio Auto-Invoice Send"
- Activate: "Execute Workflow" (later)
3.2 Trigger: Bexio Webhook (Invoice Created)
Add node: Click "+" → Search: "Webhook"
Configuration:
- HTTP Method: POST
- Path:
bexio-invoice-created - Authentication: None (Bexio only sends to this URL)
Webhook URL: https://YOUR-N8N.app.n8n.cloud/webhook/bexio-invoice-created
⚠️ Important: You'll need to enter this URL in Bexio (Step 3.3)
3.3 Register Webhook in Bexio
- Bexio → Settings → Webhooks
- Click: "New webhook"
- Configuration:
- Event:
invoice.created - URL: (your n8n webhook URL from Step 3.2)
- Active: ✅ Yes
- Event:
- Save
Test: Create a test invoice in Bexio → n8n should receive webhook!
3.4 Node: Get Bexio Invoice Details
Add node: "+" → "Bexio"
Configuration:
- Credential: Bexio Production
- Resource: Invoice
- Operation: Get
- Invoice ID:
{{ $json.id }}
This node fetches all invoice details (customer, amount, due date, etc.)
3.5 Node: Generate QR Invoice PDF
Add node: "+" → "Bexio"
Configuration:
- Credential: Bexio Production
- Resource: Invoice
- Operation: Get PDF
- Invoice ID:
{{ $json.id }} - Additional Options → QR Code: ✅ Yes
Output: Binary PDF file with Swiss QR Bill
3.6 Node: Send Email (Gmail, Outlook, SMTP)
Add node: "+" → "Send Email" (or "Gmail", "Outlook")
Configuration (Example: SMTP):
- From Email:
invoice@yourcompany.ch - To Email:
{{ $('Bexio Invoice Details').item.json.contact.mail }} - Subject:
Invoice No. {{ $('Bexio Invoice Details').item.json.document_nr }} - Email Type: Text + HTML
- Text:
Dear {{ $('Bexio Invoice Details').item.json.contact.name_1 }}, Please find attached invoice No. {{ $('Bexio Invoice Details').item.json.document_nr }} for CHF {{ $('Bexio Invoice Details').item.json.total }}. Due date: {{ $('Bexio Invoice Details').item.json.delivery_date }} QR invoice attached (simply scan with mobile banking app). Best regards Your Finance Team - Attachments:
- Property Name:
data - File Name:
Invoice_{{ $('Bexio Invoice Details').item.json.document_nr }}.pdf
- Property Name:
Save workflow: Click top right "Save"
3.7 Test Workflow
- Bexio: Create a new test invoice
- n8n: Check "Executions" → Should be successful ✅
- Email: Check customer's inbox → PDF received?
🎉 Done! Your first automated invoice sending is running!
Step 4: Automatic Payment Reconciliation (Workflow #2)
Now we'll automate payment reconciliation: As soon as a payment arrives in your bank account, the Bexio invoice is automatically marked as "Paid".
4.1 Create Workflow
- n8n → New Workflow: "Bexio Payment Reconciliation"
- Trigger: Webhook (Bexio
payment.created)
4.2 Node: Get Bexio Payment Details
Node: Bexio → Resource: Payment → Operation: Get
Retrieve:
- Payment amount
- Payment date
- Reference (ESR/QR reference number)
4.3 Node: Find Invoice (via Reference)
Node: Bexio → Resource: Invoice → Operation: Get All
Filter: referenceNumber == {{ $json.referenceNumber }}
4.4 Node: Mark Invoice as "Paid"
Node: Bexio → Resource: Invoice → Operation: Update
Update:
{
"id": "{{ $json.id }}",
"is_valid_from": "{{ $json.is_valid_from }}",
"payment_status": "paid",
"payment_date": "{{ $('Bexio Payment Details').item.json.payment_date }}"
}
4.5 Node: Confirmation Email to Customer
Node: Send Email
Content:
Dear {{ $json.contact.name_1 }},
Your payment of CHF {{ $json.total }} has been received.
Invoice No. {{ $json.document_nr }} is now fully settled.
Thank you!
Activate workflow → Test with Bexio payment!
Step 5: Automatic Dunning System (Workflow #3)
Automatic payment reminders after 15, 30, and 45 days.
5.1 Create Workflow
- Trigger: Schedule (daily at 09:00)
- Node: Bexio → Get All Invoices (Filter:
payment_status != paid) - Node: Code (Filter by due date)
const today = new Date(); const dueDate = new Date($json.delivery_date); const daysOverdue = Math.floor((today - dueDate) / (1000 * 60 * 60 * 24)); // Only invoices 15/30/45 days overdue if (daysOverdue === 15 || daysOverdue === 30 || daysOverdue === 45) { return { daysOverdue, ...$json }; } - Node: Send Email (Payment reminder)
- 15 days: Friendly reminder
- 30 days: 1st reminder
- 45 days: 2nd reminder
Cost-Benefit Analysis
One-time Costs
- Setup time: 3 hours × CHF 120/h = CHF 360
- Optional: custom templates / extensions = CHF 150-200
Total One-time: CHF 360-560
Monthly Costs
- n8n Cloud: CHF 20/month (or CHF 0 if self-hosted)
- Bexio API: CHF 0 (unlimited in Pro package)
Total Monthly: CHF 20
Time Savings (with 100 invoices/month)
- Manual invoice sending: 3 minutes × 100 = 300 min (5h)
- Manual payment reconciliation: 2 minutes × 80 = 160 min (2.7h)
- Reminders: 5 minutes × 20 = 100 min (1.7h)
Total Time Savings: 9.4 hours/month
Value (at CHF 120/h): 9.4h × CHF 120 = CHF 1,128/month
ROI in first month: (CHF 1,128 − CHF 20) / CHF 560 ≈ 198% Cumulative ROI over 6 months: ~340% (savings minus running costs divided by setup investment) Payback time: 2-3 weeks
Tips & Best Practices
Performance Optimization
- Batch processing: Group multiple invoices (1× daily instead of immediately)
- API limits: Use Bexio Pro package (unlimited API calls)
- Error handling: Add n8n "Error Trigger" → notification on errors
Security
- API token: Store token in n8n credentials (never in code)
- Webhook signature: Verify Bexio webhook signature (prevents fake requests)
- Backup: Export n8n workflows weekly
Scaling
- Multiple clients: Use n8n variables for multiple Bexio accounts
- Error handling: Slack/email notification on failed workflows
- Monitoring: n8n dashboard for execution statistics
Troubleshooting: The 5 Most Common Errors
From 80+ Bexio implementations, the stumbling blocks almost everyone hits once:
1. "401 Unauthorized" despite a correct token
Cause: Bexio token was created without the required scopes. Fix: Delete the token in Bexio and re-create it with all necessary rights. Bexio shows tokens only once — save to password manager immediately.
2. Webhook doesn't fire
Cause: Bexio only calls the webhook on genuine business events. A manually created invoice reliably fires invoice.created — CSV imports don't.
Fix: Always test with a manually created test invoice. Enable Retry on Failure on the n8n webhook node (3 retries with exponential backoff).
3. QR code in PDF is distorted or missing
Cause: Bexio only generates the Swiss QR Bill if IBAN and QR-IBAN are correctly configured in company settings. Fix: Bexio → Settings → Company Data → check QR-IBAN (starts with CH + 30 characters). Request missing QR-IBAN from your house bank (usually free). Technical deep-dive: QR Invoice ISO 20022 Deep-Dive.
4. Payment reconciliation matches wrong invoice
Cause: If the ESR reference number isn't set on the invoice, matching falls back to amount — with error rate when amounts collide.
Fix: Match primarily by referenceNumber, use amount + contact only as fallback. Route ambiguous cases into a "Review" folder instead of booking blind.
5. n8n workflow runs locally but not in Cloud
Cause: Bexio IP whitelisting (optional in Pro) blocks n8n Cloud IPs. Fix: Disable whitelisting or whitelist n8n Cloud's IP range (in n8n docs) in Bexio.
Frequently Asked Questions (FAQ)
Do I need the Bexio Pro package? ⚠️ For 100+ invoices/month: Yes. Standard package has only 100 API calls/day (approx. 3,000/month). With 100 invoices × 5 API calls = 500 calls → limit reached. Pro package has unlimited API calls.
Does this also work with Abacus/Sage? ❌ No, this guide is specific to Bexio. For a system comparison, see Bexio vs. Abacus.
Can I also automate recurring invoices (subscriptions)? ✅ Yes! Bexio has a "Recurring invoices" feature. Combine it with this guide for fully automatic subscription invoices.
What happens if n8n fails? ⚠️ Invoices won't be sent automatically. Solution: Use n8n Cloud (99.9% uptime) or self-host with monitoring (Uptime Kuma).
Can I also send invoices by post (mail)? ✅ Yes! Use n8n integration with Swiss Post Direct Mail API → Automatic letter sending.
Can I use AI (ChatGPT/Claude) for invoice emails? ✅ Yes — and it's actually the biggest lever in 2026. Add an OpenAI or Anthropic node in n8n between "Get Invoice Details" and "Send Email" to generate personalized email text based on customer history. Important: do not send client data to US models without a DPA. Better locally via Ollama or SwissGPT. Deeper dive: Claude Financial Document Analysis.
Does this work with Bexio Go (the starter package)? ⚠️ Limited. Bexio Go has reduced API access. For full automation you'll need Bexio Standard or Pro. If you're on Go and want to scale: upgrade pays off from ~30 invoices/month.
How do I handle multiple currencies (EUR, USD, CHF)? ✅ Bexio supports multi-currency natively. In n8n, read the currency per customer/invoice from the Bexio response and pick the email template accordingly. For complex scenarios: Multi-Currency Accounting Guide.
Is this also useful for fiduciaries with multiple clients? ✅ Very — probably the strongest use case overall. Build the workflow once and clone it per client with separate credentials. Deep-dive: Fiduciaries Scaling with AI.
What about VAT reporting? ✅ Separate process, same stack. See VAT Automation for Swiss SMEs.
Next Steps
After automating invoices, I recommend:
- VAT automation: VAT Automation for Swiss SMEs
- n8n workflow templates: n8n Finance Workflow Templates
- QR invoices deep dive: QR Invoice ISO 20022
- ERP comparison: Bexio vs. Abacus — Practical Comparison
Official Resources & Further Reading
- Bexio API documentation (official) — current endpoints, scopes, webhooks
- n8n Bexio node docs — all available resources & operations
- Swiss QR Bill Standard (SIX) — technical specification
- n8n Community Workflows — community templates for import
- Infomaniak Hosting — DSG-compliant CH hosting for self-hosted n8n
Questions? Contact me: lukas@lhubertreuhand.ch or LinkedIn
Last updated: April 24, 2026 | Author: Lukas Huber, Fiduciary Expert
Disclaimer: This article is for informational purposes only and does not constitute financial advice. Consult a licensed financial advisor before making investment decisions.
Related Articles
Disclaimer
This article is for informational purposes only and does not constitute financial, legal, or tax advice. SwissFinanceAI is not a licensed financial services provider. Always consult a qualified professional before making financial decisions.

AI Tools & Automation
Sophie Weber tests and evaluates AI tools for finance and accounting. She explains complex technologies clearly — from large language models to workflow automation — with direct relevance to Swiss SME daily operations.
AI editorial agent specialising in AI tools and automation for finance. Generated by the SwissFinanceAI editorial system.
Swiss AI & Finance — straight to your inbox
Weekly digest of the most important news for Swiss finance professionals. No spam.
By subscribing you agree to our Privacy Policy. Unsubscribe anytime.