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 Belegverarbeitung mit OCR und KI automatisieren. In diesem Guide zeigen wir die wichtigsten Automatisierungen mit Tools wie Make.com und n8n.

Bevor Sie weiterlesen
Lohnt sich Automation bei Ihnen überhaupt? Machen Sie die 5-Minuten-Analyse — Score, Reifegrad und eine ehrliche Einordnung, ob dieser Weg für Ihre Situation taugt. Kostenlos, Report per Mail.
5-Min-Analyse starten →

Warum Billomat automatisieren?

Typische manuelle Aufgaben:

AufgabeManueller AufwandAutomatisiert
Rechnung aus Bestellung erstellen10 Min/RechnungAutomatisch
Mahnungen versenden30 Min/WocheAutomatisch
Zahlungseingänge prüfen20 Min/TagEchtzeit
Kundendaten synchronisieren5 Min/KundeAutomatisch
Monatsabschluss vorbereiten2h/Monat1 Klick

Billomat API Grundlagen

API-Zugang einrichten

  • Billomat → Einstellungen → Schnittstellen
  • API aktivieren
  • API-Schlüssel generieren
  • Schlüssel sicher speichern
  • 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

    EndpunktFunktion
    /clientsKunden verwalten
    /invoicesRechnungen
    /offersAngebote
    /credit-notesGutschriften
    /recurringWiederkehrende Rechnungen
    /paymentsZahlungen
    /articlesArtikel/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..."
        }
      }
    }

    Selbst bauen oder bauen lassen?
    Wir implementieren diesen Workflow für Sie — fertig getestet in 1-4 Wochen. Festpreisangebot in 24h.
    Angebot anfragen →

    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 * 60 * 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"
    }

    Schulung oder Implementierung?
    Ob Sie es selbst lernen oder von uns umsetzen lassen wollen — wir bieten beides. Individuelle Workshops ab 2h oder fertige Lösungen.
    Optionen ansehen →

    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, nutzen Sie das HTTP-Modul (Details in unserem API-Integration Guide):

  • HTTP → Make a request
  • URL: Billomat API Endpoint
  • Headers: API Key
  • Body: JSON Payload
  • 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

    KomponenteKosten
    BillomatAb 6€/Monat
    n8n CloudAb 20€/Monat
    Make.comAb 9€/Monat

    Stand: August 2026. Anbieterpreise ändern sich — prüfen Sie die aktuellen Konditionen beim Anbieter.

    Weiterführende Artikel

    Fazit

    Billomat-Automatisierung spart Zeit bei:

    • Rechnungserstellung aus Shop-Systemen
    • Automatischem Mahnwesen
    • Zahlungsabgleich
    • Reporting

    Nächste Schritte

  • API-Schlüssel generieren
  • Ersten Workflow erstellen (z.B. Rechnungserstellung)
  • Mahnwesen automatisieren
  • Reporting einrichten
  • Sie möchten Ihre Billomat-Automatisierung professionell umsetzen lassen? Als spezialisierte Automatisierungsagentur unterstützen wir Sie bei der Einrichtung – von der API-Anbindung bis zum produktiven Einsatz. Jetzt Kontakt aufnehmen.