Lexoffice Automation: Connect Your Accounting with n8n and Make.com
Automate your lexoffice workflows with n8n and Make.com.
Lexoffice is Germany's most popular cloud accounting software for freelancers and small businesses. With over 300,000 users, Lexoffice has established itself as a modern alternative to traditional accounting solutions. The major advantage: Lexoffice offers a modern REST API that makes automation significantly easier.
Why Automate Lexoffice?
Typical manual tasks:| Task | Manual Effort | Automated |
|---|---|---|
| Creating invoices from shop systems | 5 min/invoice | Automatic |
| Recording and categorizing receipts | 3 min/receipt | 30 sec/receipt |
| Payment reminders | 30 min/week | Automatic |
| Reporting to accountant | 2h/month | 1 click |
| Matching bank transactions | 1h/week | AI-powered |
Lexoffice API: The Basics
Setting Up API Access
Available API Endpoints
| Endpoint | Functions | Typical Use Case |
|---|---|---|
| /contacts | Manage customers/suppliers | CRM sync |
| /invoices | Create/retrieve invoices | Shop integration |
| /vouchers | Manage receipts | Receipt capture |
| /payments | Manage payments | Payment reminders |
| /credit-notes | Credit notes | Returns |
| /quotations | Quotes | Sales automation |
API Limits
- 100 requests/minute - Standard limit
- Pagination - Max 100 entries per request
- Rate limiting - 429 error when exceeded
The 10 Most Important Lexoffice Automations
1. Shopify/WooCommerce -> Lexoffice Invoices
Trigger: New order in shop Workflow:Shop (New Order)
|
Check/create customer data
|
Create invoice in Lexoffice
|
Send PDF to customer
|
Mark order as "invoiced"
n8n Implementation:
// Create Lexoffice invoice
{
"voucherDate": "2024-01-15",
"address": {
"name": order.customer.name,
"street": order.shipping.address,
"zip": order.shipping.zip,
"city": order.shipping.city,
"countryCode": "DE"
},
"lineItems": order.items.map(item => ({
"type": "custom",
"name": item.name,
"quantity": item.quantity,
"unitPrice": {
"netAmount": item.price,
"taxRatePercentage": 19
}
})),
"totalPrice": {
"currency": "EUR"
}
}
2. Automatic Receipt Capture
Trigger: Email with attachment or upload to folder Workflow:Email/Dropbox (new receipt)
|
OCR extraction
|
Lexoffice: Create voucher
|
Automatic categorization
|
If unclear: Slack notification
Make.com Scenario:
3. CRM Synchronization
Trigger: New contact in HubSpot/Pipedrive Workflow:CRM (New Customer)
|
Check: Exists in Lexoffice?
|
No: Create contact
Yes: Update contact
|
Save Lexoffice ID in CRM
4. Automatic Payment Reminders
Trigger: Daily at 9:00 AM Workflow:Schedule (daily)
|
Lexoffice: Get open invoices
|
Filter: Overdue > 7 days
|
For each invoice:
- Level 1: Payment reminder
- Level 2: 1st reminder notice
- Level 3: 2nd reminder notice
|
Send email
|
Update status in Lexoffice
5. Quote to Invoice Conversion
Trigger: Quote accepted Workflow:Quote Status: Accepted
|
Lexoffice: Retrieve quote
|
Create invoice from quote
|
Generate PDF
|
Send to customer
6. Recurring Invoices
Trigger: Monthly on the 1st Workflow:Schedule (1st of month)
|
List: Get subscription customers
|
For each customer:
- Create invoice
- Send PDF
- Trigger SEPA direct debit
7. Bank Integration with AI
Trigger: New bank transactions (via finAPI) Workflow:finAPI (new transactions)
|
AI: Categorization
(GPT-4/Claude)
|
Lexoffice: Match payment
|
Unclear bookings: For review
8. Accountant Report
Trigger: End of month Workflow:Schedule (last day of month)
|
Lexoffice: Get monthly summary
|
Create Excel/PDF report
|
Email to accountant
9. Expense Approval
Trigger: New receipt above threshold Workflow:Lexoffice (new receipt > 500 EUR)
|
Slack: Request approval
|
Wait for response
|
Approved: Release receipt
Rejected: Mark receipt
10. Inventory Sync
Trigger: Stock level changes Workflow:Inventory System (stock change)
|
Lexoffice: Update item
|
If below threshold: Reorder suggestion
Step-by-Step: Shop to Lexoffice with n8n
Prerequisites
- n8n Cloud or Self-Hosted
- Lexoffice API key
- Shopify/WooCommerce admin access
Building the Workflow
Step 1: Set up triggerNode: Shopify Trigger
- Event: Order Created
- Credentials: Shopify OAuth
Step 2: Check/create contact
Node: HTTP Request
- Method: GET
- URL: https://api.lexoffice.io/v1/contacts
- Query: email={{ $json.customer.email }}
- Headers: Authorization: Bearer YOUR_API_KEY
Node: IF
- Condition: Contact exists?
- Yes: Use contact ID
- No: Create contact
Step 3: Create invoice
Node: HTTP Request
- Method: POST
- URL: https://api.lexoffice.io/v1/invoices
- Body: (see JavaScript below)
{
"voucherDate": "{{ $now.format('yyyy-MM-dd') }}",
"address": {
"contactId": "{{ $('Contact').item.json.id }}"
},
"lineItems": [
{{#each $json.line_items}}
{
"type": "custom",
"name": "{{ this.name }}",
"quantity": {{ this.quantity }},
"unitPrice": {
"netAmount": {{ this.price }},
"taxRatePercentage": 19
}
}{{#unless @last}},{{/unless}}
{{/each}}
],
"taxConditions": {
"taxType": "net"
},
"shippingConditions": {
"shippingType": "delivery",
"shippingDate": "{{ $now.plus(3, 'days').format('yyyy-MM-dd') }}"
},
"paymentConditions": {
"paymentTermLabel": "Payable within 14 days",
"paymentTermDuration": 14
}
}
Step 4: Finalize invoice
Node: HTTP Request
- Method: POST
- URL: https://api.lexoffice.io/v1/invoices/{{ $json.id }}/document
Step 5: Send PDF
Node: HTTP Request
- Method: GET
- URL: https://api.lexoffice.io/v1/invoices/{{ $json.id }}/document
- Response: Binary
Node: Send Email
- To: {{ $('Shopify Trigger').item.json.customer.email }}
- Subject: Your Invoice {{ $json.voucherNumber }}
- Attachment: Invoice PDF
Make.com: Using Lexoffice Modules
Make.com offers native Lexoffice modules:
Available Modules
| Module | Function |
|---|---|
| Watch Invoices | Trigger on new invoices |
| Create Invoice | Create invoice |
| Get Contact | Retrieve contact |
| Create Contact | Create contact |
| Create Voucher | Create receipt |
| List Payments | Retrieve payments |
Example Scenario
- Contact exists -> continue
- Contact missing -> Create Contact
Error Handling
Common Errors
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Invalid API key | Generate new key |
| 429 Too Many Requests | Rate limit | Add delays |
| 400 Bad Request | Invalid data | Validate before request |
| 404 Not Found | Resource missing | Check ID |
Best Practice: Retry Logic
// n8n Code Node
const maxRetries = 3;
let attempt = 0;
while (attempt < maxRetries) {
try {
// API Request
return result;
} catch (error) {
if (error.response?.status === 429) {
await new Promise(r => setTimeout(r, 60000)); // Wait 1 min
attempt++;
} else {
throw error;
}
}
}
Security and Compliance
Protect API Key
- Never hardcode in code
- Use n8n Credentials
- Rotate regularly
GoBD Compliance
- Lexoffice is GoBD-certified
- Automation doesn't change that
- Observe archiving requirements
GDPR
- Process customer data only for intended purposes
- Observe deletion deadlines (Lexoffice supports this)
Cost-Benefit Analysis
Investment
| Item | Cost |
|---|---|
| Lexoffice (M/L) | 12-30 EUR/month |
| n8n/Make.com | 50-120 EUR/month |
| Setup | 1,000-3,000 EUR one-time |
Savings
| Process | Before | After | Savings |
|---|---|---|---|
| 100 invoices/month | 8h | 0.5h | 7.5h |
| 200 receipts/month | 10h | 2h | 8h |
| Payment reminders | 4h | 0h | 4h |
| Total | 22h | 2.5h | 19.5h |
Advanced Integrations
Lexoffice + Stripe
Automatically create invoices for Stripe payments:
Stripe Webhook (Payment Success)
|
Lexoffice: Create invoice
|
Lexoffice: Mark as paid
Lexoffice + Calendly
For service providers with booking systems:
Calendly (Appointment booked)
|
Lexoffice: Create contact
|
Lexoffice: Create invoice
|
Send email with invoice
Lexoffice + Notion
Project-based billing:
Notion (Project completed)
|
Extract time entries from Notion
|
Lexoffice: Invoice with line items
Conclusion
Lexoffice is an ideal candidate for automation thanks to its modern API. With n8n or Make.com you can:
- Automatically create invoices from shop systems
- Intelligently capture and categorize receipts
- Fully automate payment reminders
- Generate accountant reports at the click of a button
Next Steps
We support you with Lexoffice automation - from analysis to finished integration.