This workflow corresponds to n8n.io template #buchpilot-weekly-report-v1 — we link there as the canonical source.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"meta": {
"templateId": "buchpilot-weekly-report-v1"
},
"name": "BuchPilot: Woechentlicher Rechnungs-Report",
"nodes": [
{
"id": "schedule-1",
"name": "Jeden Montag 8:00",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 * * 1"
}
]
}
}
},
{
"id": "get-invoices",
"name": "Offene Rechnungen laden",
"type": "n8n-nodes-buchpilot.sevDesk",
"typeVersion": 1,
"position": [
460,
300
],
"parameters": {
"resource": "invoice",
"operation": "getMany",
"limit": 100,
"filters": {
"status": "200"
}
},
"credentials": {
"sevDeskApi": {
"name": "<your credential>"
}
}
},
{
"id": "filter-faellig",
"name": "Faellige filtern",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
680,
300
],
"parameters": {
"conditions": {
"options": {
"caseSensitive": false,
"leftValue": ""
},
"conditions": [
{
"id": "condition-1",
"leftValue": "={{ new Date($json.invoiceDate).getTime() + ($json.timeToPay || 14) * 86400000 }}",
"rightValue": "={{ Date.now() }}",
"operator": {
"type": "number",
"operation": "lt"
}
}
],
"combinator": "and"
}
}
},
{
"id": "format",
"name": "Report formatieren",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
900,
200
],
"parameters": {
"mode": "manual",
"duplicateItem": false,
"assignments": {
"assignments": [
{
"id": "assign-1",
"name": "rechnungsnummer",
"value": "={{ $json.invoiceNumber || $json.header || 'Ohne Nr.' }}",
"type": "string"
},
{
"id": "assign-2",
"name": "betrag_brutto",
"value": "={{ Number($json.sumGross).toFixed(2) }} EUR",
"type": "string"
},
{
"id": "assign-3",
"name": "faellig_seit",
"value": "={{ new Date(new Date($json.invoiceDate).getTime() + ($json.timeToPay || 14) * 86400000).toISOString().split('T')[0] }}",
"type": "string"
}
]
},
"options": {}
}
},
{
"id": "aggregate",
"name": "Zusammenfassung",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
1120,
200
],
"parameters": {
"aggregate": "aggregateAllItemData",
"options": {
"destinationFieldName": "rechnungen"
}
}
},
{
"id": "email-body",
"name": "E-Mail Text",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1340,
200
],
"parameters": {
"mode": "manual",
"duplicateItem": false,
"assignments": {
"assignments": [
{
"id": "assign-mail-1",
"name": "subject",
"value": "Woechentlicher Rechnungs-Report \u2014 Faellige Rechnungen",
"type": "string"
},
{
"id": "assign-mail-2",
"name": "body",
"value": "={{ 'Hallo,\\n\\nfolgende Rechnungen sind faellig:\\n\\n' + ($json.rechnungen || []).map(r => '- ' + r.rechnungsnummer + ': ' + r.betrag_brutto + ' (faellig seit ' + r.faellig_seit + ')').join('\\n') + '\\n\\nAnzahl faelliger Rechnungen: ' + ($json.rechnungen || []).length + '\\n\\nDieser Report wurde automatisch von BuchPilot erstellt.' }}",
"type": "string"
}
]
},
"options": {}
}
},
{
"id": "send-email",
"name": "Report senden",
"type": "n8n-nodes-base.sendEmail",
"typeVersion": 1,
"position": [
1560,
200
],
"parameters": {
"from": "={{ $env.SMTP_FROM || 'noreply@example.com' }}",
"to": "DEINE_EMAIL_HIER",
"subject": "={{ $json.subject }}",
"text": "={{ $json.body }}"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
}
},
{
"id": "keine-faelligen",
"name": "Keine faelligen Rechnungen",
"type": "n8n-nodes-base.noOp",
"typeVersion": 1,
"position": [
900,
400
],
"parameters": {}
}
],
"connections": {
"Jeden Montag 8:00": {
"main": [
[
{
"node": "Offene Rechnungen laden",
"type": "main",
"index": 0
}
]
]
},
"Offene Rechnungen laden": {
"main": [
[
{
"node": "Faellige filtern",
"type": "main",
"index": 0
}
]
]
},
"Faellige filtern": {
"main": [
[
{
"node": "Report formatieren",
"type": "main",
"index": 0
}
],
[
{
"node": "Keine faelligen Rechnungen",
"type": "main",
"index": 0
}
]
]
},
"Report formatieren": {
"main": [
[
{
"node": "Zusammenfassung",
"type": "main",
"index": 0
}
]
]
},
"Zusammenfassung": {
"main": [
[
{
"node": "E-Mail Text",
"type": "main",
"index": 0
}
]
]
},
"E-Mail Text": {
"main": [
[
{
"node": "Report senden",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"tags": [
{
"name": "BuchPilot"
}
]
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
sevDeskApismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
BuchPilot: Woechentlicher Rechnungs-Report. Uses n8n-nodes-buchpilot, sendEmail. Scheduled trigger; 8 nodes.
Source: https://github.com/makririch/n8n-nodes-dachflow/blob/9c701ef10602fbada10ed463cf59ed1212a90e62/templates/weekly-invoice-report.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Automatically track Stripe invoices and create Google Calendar reminders for upcoming due dates. This workflow ensures you never miss a payment deadline by running daily checks, filtering invoices due
Small business owners, finance teams, accountants, and bookkeepers who use Xero for invoicing and want to improve cash flow by automating payment reminders. If you're spending time manually following
This workflow provides a powerful solution for businesses using QuickBooks Online to automate their payment reminder process. It solves the time-consuming and manual task of chasing late payments by c
Invoice Follow-Up (7-Day Reminder). Uses quickbooks, emailSend, googleSheets. Scheduled trigger; 5 nodes.
This is the ultimate sales-to-cash automation. When a deal in Airtable is marked "Approved for Invoicing," this workflow intelligently syncs customer data across QuickBooks and Stripe (creating them i