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.

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

  1. Billomat → Einstellungen → Schnittstellen
  2. API aktivieren
  3. API-Schlüssel generieren
  4. 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..."
    }
  }
}

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

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):

  1. HTTP → Make a request
  2. URL: Billomat API Endpoint
  3. Headers: API Key
  4. 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

  1. API-Schlüssel generieren
  2. Ersten Workflow erstellen (z.B. Rechnungserstellung)
  3. Mahnwesen automatisieren
  4. 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.