Bexio Invoice Automation: Complete Guide (2025)

Step-by-step guide: Automate Bexio invoices with n8n. QR invoice, email sending, payment reconciliation & dunning. Save 12+ hours/week.
Reporting by Lukas Huber, 10+ years Swiss Treuhand, 80+ Bexio automations
Bexio Invoice Automation: Complete Guide
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) 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 ROI: 340% in the first 6 months
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
- n8n Installation Guide
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
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
- n8n template purchase (optional): CHF 149 (Bexio Automation Pack)
Total One-time: CHF 360-509
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: (CHF 1,128 - CHF 20) / CHF 509 = 218% in first month 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
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 Abacus see Abacus Automation Guide.
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.
Next Steps
After automating invoices, I recommend:
- Expense automation: Bexio Expense Automation
- VAT reporting: Automatic Quarterly VAT Reporting
- CRM automation: Bexio CRM → HubSpot Sync
Downloads & Templates
- n8n Bexio Invoice Workflow (JSON) - Fully pre-configured workflow
- Bexio API Postman Collection - All API endpoints for testing
- 150+ Bexio n8n Workflows (Premium) - CHF 149
Questions? Contact me: lukas@lhubertreuhand.ch or LinkedIn
Last updated: November 17, 2025 | Author: Lukas Huber, Fiduciary Expert