Abrevia betreibt einen lokalen Express-Server direkt auf dem Rechner des Nutzers. Externe Programme, Scripts oder Webhooks können damit sicher lokal interagieren — Kunden anlegen, Rechnungen importieren, Statistiken abfragen und WHMCS synchronisieren. Über den integrierten MCP-Server lässt sich Abrevia zudem direkt mit KI-Clients wie Claude steuern (siehe unten).
127.0.0.1 erreichbar und nur aktiv, solange Abrevia läuft. Kein Port wird nach außen geöffnet.http://127.0.0.1:37402Port konfigurierbar unter Einstellungen → API
Authorization: Bearer <API_KEY>API-Key in Abrevia → Einstellungen → API
Jedes Unternehmen erhält einen eigenen API-Key — Multi-Unternehmen werden vollständig getrennt verwaltet.
60 Anfragen / MinutePro IP-Adresse, Antwort 429 bei Überschreitung
# API-Status prüfen
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/status
# Alle Kunden abrufen
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/kunden
# Jahresstatistik 2026
curl -H "Authorization: Bearer <API_KEY>" http://127.0.0.1:37402/api/statistiken/summary?year=2026200Erfolg400Ungültige Anfrage — Pflichtfelder fehlen401Kein Authorization-Header vorhanden403Ungültiger API-Key404Ressource nicht gefunden429Rate Limit überschritten (60 req/min)500Interner ServerfehlerSobald Abrevia läuft, startet neben der REST-API automatisch ein MCP-Server (Model Context Protocol) auf 127.0.0.1:37403/mcp. KI-Clients wie Claude bzw. Claude Code erhalten damit vollen Lese- und Schreibzugriff auf alle Funktionen — Kunden, Rechnungen, Ausgaben, Fahrtkosten & Fahrtenbuch, Produkte, Statistiken und WHMCS — direkt per natürlicher Sprache.
# einfach (aktive Firma)
claude mcp add --transport http abrevia http://127.0.0.1:37403/mcp
# mit API-Key (als Passwort / Bearer)
claude mcp add --transport http abrevia http://127.0.0.1:37403/mcp \
--header "Authorization: Bearer <API_KEY>"Oder per .mcp.json (mit Key):
{
"mcpServers": {
"abrevia": {
"type": "http",
"url": "http://127.0.0.1:37403/mcp",
"headers": { "Authorization": "Bearer <API_KEY>" }
}
}
}127.0.0.1 erreichbar — kein Port wird nach außen geöffnet.Bearer-Token, als Basic-Auth-Passwort oder als X-API-Key-Header.abrevia_statusStatus der Instanzlist_kunden · get_kundeKunden lesencreate_kunde · delete_kundeKunden schreibenlist_rechnungen · get_rechnungRechnungen lesencreate_rechnungRechnung anlegenlist_ausgaben · get_ausgabeAusgaben lesencreate_ausgabe · delete_ausgabeAusgaben schreibenausgabe_from_xml · from_pdfE-Rechnung importierenausgabe_add_attachmentBeleg anhängenlist_fahrten · get_fahrtFahrtenbuch lesencreate_fahrt · delete_fahrtFahrten schreibenfahrtkosten_berechnenDE/AT-konform berechnenfahrtkosten_saetzeAktuelle Sätzelist_produkteProduktkatalogstatistik_summaryJahresauswertungwhmcs_sync_client · sync_invoiceWHMCS-Syncwhmcs_testWHMCS-VerbindungBeispiel-Prompt in Claude
„Erfasse eine Fahrt von Wien zum Kunden Muster GmbH, 84 km mit dem PKW am 2. Mai — und buche sie als Betriebsausgabe."
Claude ruft create_fahrt auf, Abrevia berechnet 42,00 € (AT-Kilometergeld), legt die Fahrt im Fahrtenbuch an und bucht sie via create_ausgabe auf SKR-Konto 4660.
Einrichtung
WHMCS → Setup → API CredentialsPOST http://127.0.0.1:37402/api/whmcs/webhook konfigurierenAuthorization: Bearer <API_KEY>Kunden-ID Schema
WHMCS-Kunden erhalten in Abrevia automatisch die ID whmcs_<whmcsId>. Rechnungen aus WHMCS erhalten die ID WHMCS-<invoiceId>. So lassen sich Datensätze kollisionsfrei von nativen Abrevia-Datensätzen unterscheiden.
WHMCSAPI JavaScript-Klasse
Kann direkt im Renderer oder in eigenen Node-Scripts genutzt werden.
Initialisierung
import { WHMCSAPI } from './WHMCSAPI';
const whmcs = new WHMCSAPI(
'https://billing.example.com',
'YOUR_API_IDENTIFIER',
'YOUR_API_SECRET'
);Verbindung testen
testConnection()→ boolean — Gibt true zurück wenn WHMCS erreichbar und Credentials gültig sind.Kunden
getClients({ limitstart, limitnum, search })Alle Kunden abrufen. Optionale Volltextsuche und Pagination.getClient(clientId)Einzelnen Kunden inkl. Kontostand und Status.addClient({ firstname, lastname, email, ... })Neuen Kunden in WHMCS anlegen. Gibt whmcsId zurück.updateClient(clientId, fields)Beliebige Felder eines Kunden aktualisieren.deleteClient(clientId)Kunden dauerhaft löschen.Rechnungen
getInvoices({ status, limitstart, limitnum })Rechnungen filtern nach Status: Unpaid, Paid, Cancelled, Refunded, Collections, Draft.getInvoice(invoiceId)Einzelne Rechnung mit allen Positionen, Steuerinfo und Zahlungsstatus.createInvoice({ clientid, date, duedate, items })Neue Rechnung in WHMCS erstellen. Gibt whmcsId und Abrevia-id zurück.updateInvoiceStatus(invoiceId, status)Status einer Rechnung ändern (z.B. auf Paid setzen).Bestellungen
getOrders({ status, limitstart, limitnum })Bestellungen nach Status abrufen: Pending, Active, Fraud, Cancelled.acceptOrder(orderId)Bestellung annehmen und aktivieren.cancelOrder(orderId)Bestellung stornieren.Produkte & Services
getProducts({ pid, gid })Alle Produktgruppen und Tarife aus WHMCS abrufen.getClientServices({ clientid })Alle gebuchten Dienste eines Kunden inkl. nächstem Abrechnungsdatum.Zahlungen & Transaktionen
getTransactions({ clientid, invoiceid })Transaktionsverlauf für einen Kunden oder eine Rechnung.addTransaction({ clientid, invoiceid, amountin, gateway, ... })Manuelle Zahlung buchen. Gibt transactionId zurück.Support & Domains
getTickets({ clientid, status })Support-Tickets abrufen. Enthält Betreff, Priorität, letzten Reply.getDomains({ clientid })Alle Domains eines Kunden mit Ablaufdatum und Auto-Renew-Status.Beispiel: Monatliche Einnahmen aus WHMCS importieren
const invoices = await whmcs.getInvoices({ status: 'Paid' });
for (const inv of invoices) {
await fetch('http://127.0.0.1:37402/api/whmcs/sync-invoice', {
method: 'POST',
headers: {
'Authorization': 'Bearer <API_KEY>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
whmcsInvoiceId: inv.whmcsId,
clientid: inv.kundeId.replace('whmcs_', ''),
date: inv.datum,
total: inv.gesamtbetrag,
status: 'Paid'
})
});
}Abrevia API • Nur lokal verfügbar • Kein Cloud-Zugriff