Billomat API Integration: Buchhaltung automatisieren mit n8n und Make.com
So verbinden Sie Billomat mit Ihren anderen Business-Tools.
Billomat ist eine beliebte Cloud-Buchhaltungssoftware für Freelancer und kleine Unternehmen in Deutschland. Mit der Billomat API können Sie Rechnungen automatisch erstellen, Zahlungen tracken und Ihre Buchhaltung automatisieren. In diesem Guide zeigen wir die wichtigsten Automatisierungen.
Warum Billomat automatisieren?
Typische manuelle Aufgaben:| Aufgabe | Manueller Aufwand | Automatisiert |
|---|---|---|
| Rechnung aus Bestellung erstellen | 10 Min/Rechnung | Automatisch |
| Mahnungen versenden | 30 Min/Woche | Automatisch |
| Zahlungseingänge prüfen | 20 Min/Tag | Echtzeit |
| Kundendaten synchronisieren | 5 Min/Kunde | Automatisch |
| Monatsabschluss vorbereiten | 2h/Monat | 1 Klick |
Billomat API Grundlagen
API-Zugang einrichten
API-Authentifizierung
// Alle Requests brauchen diesen Header
{
"headers": {
"X-BillomatApiKey": "YOUR_API_KEY",
"Content-Type": "application/json"
}
}
Basis-URL
https://IHRE_BILLOMAT_ID.billomat.net/api/
Verfügbare Endpunkte
| Endpunkt | Funktion |
|---|---|
/clients | Kunden verwalten |
/invoices | Rechnungen |
/offers | Angebote |
/credit-notes | Gutschriften |
/recurring | Wiederkehrende Rechnungen |
/payments | Zahlungen |
/articles | Artikel/Produkte |
Workflow 1: Automatische Rechnungserstellung
Der Workflow
Shopify/WooCommerce (Neue Bestellung)
↓
Kunde in Billomat suchen/anlegen
↓
Rechnung erstellen
↓
PDF generieren
↓
Per E-Mail versenden
n8n Implementation
Node 1: Webhook von Shop Node 2: Kunde suchen// Node: HTTP Request
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/clients",
"qs": {
"email": "{{ $json.customer.email }}"
},
"headers": {
"X-BillomatApiKey": "{{ $env.BILLOMAT_API_KEY }}"
}
}
Node 3: Kunde anlegen (falls neu)
// Node: HTTP Request
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/clients",
"headers": {
"X-BillomatApiKey": "{{ $env.BILLOMAT_API_KEY }}",
"Content-Type": "application/json"
},
"body": {
"client": {
"name": "{{ $json.customer.name }}",
"email": "{{ $json.customer.email }}",
"street": "{{ $json.shipping.address }}",
"zip": "{{ $json.shipping.zip }}",
"city": "{{ $json.shipping.city }}",
"country_code": "DE"
}
}
}
Node 4: Rechnung erstellen
// Node: HTTP Request
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/invoices",
"headers": {
"X-BillomatApiKey": "{{ $env.BILLOMAT_API_KEY }}",
"Content-Type": "application/json"
},
"body": {
"invoice": {
"client_id": "{{ $json.clientId }}",
"date": "{{ $now.format('yyyy-MM-dd') }}",
"due_days": 14,
"invoice-items": {
"invoice-item": $json.items.map(item => ({
"title": item.name,
"quantity": item.quantity,
"unit_price": item.price,
"tax_rate": 19
}))
}
}
}
}
Node 5: Rechnung finalisieren & senden
// Rechnung abschließen
{
"method": "PUT",
"url": "https://IHRE_ID.billomat.net/api/invoices/{{ $json.invoice.id }}/complete",
"headers": { "X-BillomatApiKey": "{{ $env.BILLOMAT_API_KEY }}" }
}
// Per E-Mail senden
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/invoices/{{ $json.invoice.id }}/email",
"body": {
"email": {
"recipients": { "to": "{{ $json.customer.email }}" },
"subject": "Ihre Rechnung {{ $json.invoice.invoice_number }}",
"body": "Anbei erhalten Sie Ihre Rechnung..."
}
}
}
Workflow 2: Automatisches Mahnwesen
Der Workflow
Schedule (täglich 9:00)
↓
Billomat: Überfällige Rechnungen
↓
Für jede Rechnung:
- Mahnstufe prüfen
- Entsprechende Mahnung senden
↓
Bericht an Buchhaltung
Implementation
// Node: HTTP Request - Überfällige Rechnungen
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/invoices",
"qs": {
"status": "OPEN",
"due_date_to": "{{ $now.minus(1, 'day').format('yyyy-MM-dd') }}"
}
}
// Node: Code - Mahnstufe bestimmen
const invoice = $json;
const dueDate = new Date(invoice.due_date);
const today = new Date();
const daysOverdue = Math.floor((today - dueDate) / (1000 <em> 60 </em> 60 * 24));
let dunningLevel, action;
if (daysOverdue <= 7) {
dunningLevel = 1;
action = 'friendly_reminder';
} else if (daysOverdue <= 14) {
dunningLevel = 2;
action = 'first_dunning';
} else if (daysOverdue <= 21) {
dunningLevel = 3;
action = 'second_dunning';
} else {
dunningLevel = 4;
action = 'final_warning';
}
return { dunningLevel, action, daysOverdue };
// Node: Mahnung erstellen
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/reminders",
"body": {
"reminder": {
"invoice_id": "{{ $json.invoice.id }}",
"date": "{{ $now.format('yyyy-MM-dd') }}",
"due_days": 7,
"level": {{ $json.dunningLevel }}
}
}
}
Workflow 3: Zahlungsabgleich
Der Workflow
Bank (neuer Umsatz)
↓
Verwendungszweck analysieren
↓
Passende Rechnung finden
↓
Zahlung in Billomat buchen
↓
Rechnung als bezahlt markieren
Implementation
// Node: Code - Rechnungsnummer aus Verwendungszweck
const reference = $json.bankTransaction.reference;
// Typische Muster für Rechnungsnummern
const patterns = [
/RE-?\d{4,}/i,
/RG-?\d{4,}/i,
/INV-?\d{4,}/i,
/\d{6,}/ // Fallback: längere Zahlen
];
let invoiceNumber = null;
for (const pattern of patterns) {
const match = reference.match(pattern);
if (match) {
invoiceNumber = match[0];
break;
}
}
return { invoiceNumber };
// Node: Rechnung suchen
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/invoices",
"qs": {
"invoice_number": "{{ $json.invoiceNumber }}"
}
}
// Node: Zahlung buchen
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/incoming-payments",
"body": {
"incoming-payment": {
"invoice_id": "{{ $json.invoice.id }}",
"date": "{{ $json.bankTransaction.date }}",
"amount": {{ $json.bankTransaction.amount }},
"comment": "Automatisch zugeordnet"
}
}
}
Workflow 4: Wiederkehrende Rechnungen
Der Workflow
Schedule (1. des Monats)
↓
Billomat: Fällige Recurring Invoices
↓
Rechnungen generieren
↓
Versenden
Recurring Invoice abrufen
// Alle wiederkehrenden Rechnungen
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/recurrings"
}
Rechnung aus Template erstellen
// Rechnung aus Recurring generieren
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/recurrings/{{ $json.recurring.id }}/create"
}
Workflow 5: CRM-Synchronisation
Der Workflow
HubSpot (Neuer Deal gewonnen)
↓
Kunde in Billomat anlegen
↓
Angebot erstellen
↓
In Rechnung umwandeln
Implementation
// Node: HubSpot Deal Daten
// Kunde in Billomat anlegen
{
"client": {
"name": "{{ $json.deal.company_name }}",
"email": "{{ $json.deal.contact_email }}",
"note": "HubSpot Deal: {{ $json.deal.id }}"
}
}
// Node: Angebot erstellen
{
"offer": {
"client_id": "{{ $json.clientId }}",
"date": "{{ $now.format('yyyy-MM-dd') }}",
"validity": 30,
"offer-items": {
"offer-item": [{
"title": "{{ $json.deal.product_name }}",
"quantity": 1,
"unit_price": {{ $json.deal.amount }}
}]
}
}
}
Make.com Integration
HTTP Module nutzen
Da Make.com kein natives Billomat-Modul hat:
Beispiel-Szenario
WooCommerce (New Order)
↓
HTTP: Billomat - Search Client
↓
Router:
├─ Client exists → Get ID
└─ Client missing → HTTP: Create Client
↓
HTTP: Create Invoice
↓
HTTP: Complete Invoice
↓
HTTP: Send Invoice Email
Artikel-Verwaltung
Artikel synchronisieren
// Artikel aus Shop in Billomat importieren
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/articles",
"body": {
"article": {
"number": "{{ $json.sku }}",
"title": "{{ $json.name }}",
"description": "{{ $json.description }}",
"sales_price": {{ $json.price }},
"tax_rate": 19
}
}
}
Artikel in Rechnung verwenden
// Rechnung mit Artikel-Referenz
{
"invoice-items": {
"invoice-item": [{
"article_id": "{{ $json.articleId }}",
"quantity": 2
}]
}
}
PDF-Dokumente
Rechnung als PDF abrufen
// PDF URL abrufen
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/invoices/{{ $json.invoiceId }}/pdf"
}
// Response enthält PDF URL
// Download via HTTP Request (Binary)
PDF per E-Mail senden
// Über Billomat E-Mail-Funktion
{
"method": "POST",
"url": "https://IHRE_ID.billomat.net/api/invoices/{{ $json.invoiceId }}/email",
"body": {
"email": {
"recipients": {
"to": "kunde@example.com",
"cc": "buchhaltung@firma.de"
},
"subject": "Ihre Rechnung Nr. {{ $json.invoiceNumber }}",
"body": "Sehr geehrte Damen und Herren,\n\nanbei erhalten Sie Ihre Rechnung.\n\nMit freundlichen Grüßen",
"attach_pdf": true
}
}
}
Reporting
Umsatz-Statistiken
// Offene Rechnungen
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/invoices",
"qs": {
"status": "OPEN"
}
}
// Bezahlte Rechnungen (Zeitraum)
{
"method": "GET",
"url": "https://IHRE_ID.billomat.net/api/invoices",
"qs": {
"status": "PAID",
"from": "2024-01-01",
"to": "2024-01-31"
}
}
Automatischer Monatsreport
// Node: Code - Statistiken berechnen
const invoices = $json.invoices.invoice;
const stats = {
total: invoices.length,
paid: invoices.filter(i => i.status === 'PAID').length,
open: invoices.filter(i => i.status === 'OPEN').length,
overdue: invoices.filter(i => i.status === 'OVERDUE').length,
revenue: invoices
.filter(i => i.status === 'PAID')
.reduce((sum, i) => sum + parseFloat(i.total_gross), 0)
};
return stats;
Best Practices
1. Rate Limits beachten
// Maximal 60 Requests pro Minute
// Bei Batch-Operationen: Delays einbauen
await wait(1000); // 1 Sekunde zwischen Requests
2. Fehlerbehandlung
try {
await createInvoice(data);
} catch (error) {
if (error.status === 401) {
// API Key ungültig
await alertAdmin('Billomat API Key prüfen!');
} else if (error.status === 422) {
// Validierungsfehler
console.log('Fehler:', error.body.errors);
}
}
3. Idempotenz
// Externe Referenz nutzen um Duplikate zu vermeiden
{
"invoice": {
"client_id": "123",
"number": "SHOP-{{ $json.orderId }}", // Eindeutig
// ...
}
}
Kosten
| Komponente | Kosten |
|---|---|
| Billomat | Ab 6€/Monat |
| n8n Cloud | Ab 20€/Monat |
| Make.com | Ab 9€/Monat |
Fazit
Billomat-Automatisierung spart Zeit bei:
- Rechnungserstellung aus Shop-Systemen
- Automatischem Mahnwesen
- Zahlungsabgleich
- Reporting
Nächste Schritte
Wir unterstützen Sie bei der Billomat-Automatisierung – von der Einrichtung bis zum produktiven Einsatz.