API Integrations-Anleitung

bexio API: Der komplette 2026 Guide für Schweizer Freelancer

Verbinden Sie die beliebteste Schweizer Business-Software mit praktisch jedem Tool. OAuth 2.0 Setup, Code-Beispiele und eine einfachere Rechnungs-API-Alternative im Vergleich.

API Integration Illustration

Schluss mit manueller Dateneingabe.
Automatisieren Sie alles.

Sie verbringen Stunden mit manueller Dateneingabe zwischen Ihren Tools. Ihre Rechnungssoftware kommuniziert nicht mit Ihrem CRM. Ihr Online-Shop erfordert das Kopieren von Bestellungen in die Buchhaltung. Die bexio API löst das — sie verbindet 40'000+ Schweizer Unternehmen mit praktisch jedem anderen Tool.

5+ Stunden wöchentlich

Verloren durch manuelle Dateneingabe
🔗

Isolierte Tools

Apps, die nicht miteinander kommunizieren
📋

Copy-Paste-Chaos

Bestellungen manuell in die Buchhaltung übertragen

Was ist die bexio API?

Eine API (Application Programming Interface) ermöglicht verschiedenen Softwaresystemen den automatischen Datenaustausch. Die bexio API ist eine RESTful-Schnittstelle, die bexios Kernfunktionen — Kontakte, Rechnungen, Buchhaltung, Inventar — für externe Anwendungen zugänglich macht.

In der Praxis: Statt nach Projektabschluss manuell eine Rechnung in bexio zu erstellen, kann Ihr Projektmanagement-Tool die Rechnungserstellung automatisch auslösen. Statt Kundendaten aus Ihrem Webshop zu kopieren, fliessen Bestellungen direkt in bexio.

Die API verwendet HTTPS und JSON-Format und ist damit mit jeder Programmiersprache kompatibel. bexio bietet aktuell die API-Version 3.0.0 an.

Was Sie automatisieren können

FunktionAPI-Möglichkeiten
KontakteKunden und Lieferanten erstellen, aktualisieren, auflisten
RechnungenGenerieren, versenden, Zahlungsstatus verfolgen
BestellungenAus externen Systemen erstellen, Status aktualisieren
ProdukteInventar synchronisieren, Lagerbestände aktualisieren
BuchhaltungKonten abrufen, Buchungen erfassen
ProjekteErstellen, zuweisen, Zeit erfassen

2025 Authentifizierungs-Migration

Wenn Sie bestehende bexio API-Integrationen haben, lesen Sie dies zuerst.

bexio hat idp.bexio.com am 31. März 2025 abgeschaltet. Alle Anwendungen müssen den neuen Identity Provider verwenden:

Alt: https://idp.bexio.com
Neu: https://auth.bexio.com/realms/bexio

Für die meisten Anwendungen erforderte die Migration nur das Aktualisieren der Authorization- und Token-Endpoint-URLs. Falls Sie noch nicht migriert haben, funktioniert Ihre Integration nicht mehr.

Migrations-Checkliste:

  1. Authorization-URL in Ihrer App-Konfiguration aktualisieren
  2. Token-Endpoint-URL aktualisieren
  3. Den kompletten OAuth-Flow testen
  4. bexios Statusseite unter bexio-status.com auf Ankündigungen überwachen

Beliebte Zapier-Automatisierungen für Freelancer

  1. Shopify → bexio: Neue Bestellung erstellt automatisch Rechnung
  2. Toggl → bexio: Erfasste Zeiteinträge mit Projekt synchronisieren
  3. HubSpot → bexio: Neuer CRM-Kontakt erstellt bexio-Kontakt
  4. Gmail → bexio: E-Mail-Anhang erstellt Spesenbeleg
Entwickler-Setup

Erste Schritte mit der bexio API

Alles, was Sie für Ihre erste Integration wissen müssen

Voraussetzungen

  1. bexio-Konto: Jeder kostenpflichtige Plan (Starter CHF 45/Monat, Pro CHF 75/Monat, Pro+ CHF 125/Monat). API-Zugang ist inklusive.
  2. Developer Portal Zugang: Besuchen Sie das bexio Developer Portal und melden Sie sich mit Ihren bexio-Zugangsdaten an.

API-Zugangsdaten erstellen

  1. Navigieren Sie zu "My Apps" im Developer Portal
  2. Klicken Sie auf "Create New App"
  3. Legen Sie eine Redirect URL fest (erforderlich für OAuth-Flow)
  4. Speichern Sie Client ID und Client Secret sofort — das Secret wird nicht erneut angezeigt

Authentifizierung im Detail

bexio verwendet OAuth 2.0, den Industriestandard für API-Autorisierung. Das Verständnis des dualen Autorisierungssystems ist entscheidend.

Zwei Ebenen der Autorisierung

Ebene 1: Anwendungs-Scopes Wenn Benutzer Ihre App verbinden, gewähren sie bestimmte Berechtigungen (Scopes). Fordern Sie nur an, was Sie benötigen — Benutzer sehen diese Berechtigungen im Zustimmungsbildschirm.

Verfügbare Scope-Kategorien:

  • contact_show, contact_edit — Kontaktverwaltung
  • kb_invoice_show, kb_invoice_edit — Rechnungszugriff
  • accounting_show — Buchhaltungsdaten lesen
  • article_show, article_edit — Produktverwaltung

Ebene 2: Benutzerrechte API-Anfragen werden mit den Berechtigungen des Benutzers ausgeführt, der die Verbindung autorisiert hat. Wenn dieser Benutzer in bexio keine Berechtigung zum Löschen von Rechnungen hat, kann Ihre API auch keine Rechnungen löschen.

OAuth 2.0 Flow

1. Ihre App leitet den Benutzer weiter zu:
   https://auth.bexio.com/realms/bexio/protocol/openid-connect/auth
   ?client_id=YOUR_CLIENT_ID
   &redirect_uri=YOUR_REDIRECT_URL
   &response_type=code
   &scope=contact_show kb_invoice_edit

2. Benutzer meldet sich an und genehmigt Berechtigungen

3. bexio leitet zu Ihrer URL mit Autorisierungscode weiter

4. Code gegen Tokens tauschen bei:
   https://auth.bexio.com/realms/bexio/protocol/openid-connect/token

5. Access Token für API-Anfragen verwenden

Token-Management:

  • Access Tokens sind kurzlebig (typischerweise 1 Stunde)
  • Refresh Tokens holen neue Access Tokens ohne Benutzerinteraktion
  • Speichern Sie Refresh Tokens sicher und implementieren Sie automatische Token-Erneuerung
Code-Beispiele

bexio API in Python & JavaScript

Sofort einsetzbare Code-Snippets für die häufigsten Anwendungsfälle

Python

import requests

BASE_URL = "https://api.bexio.com/2.0"
ACCESS_TOKEN = "your_access_token"

headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Accept": "application/json"
}

# Fetch all contacts
response = requests.get(f"{BASE_URL}/contact", headers=headers)
contacts = response.json()

for contact in contacts:
    print(f"{contact['id']}: {contact['name_1']}")

# Create new invoice
invoice_data = {
    "contact_id": 1,
    "title": "Project Work - January 2026",
    "positions": [
        {
            "type": "KbPositionCustom",
            "text": "Consulting Services",
            "unit_price": "150.00",
            "amount": "10"
        }
    ]
}

response = requests.post(
    f"{BASE_URL}/kb_invoice",
    headers=headers,
    json=invoice_data
)
print(response.json())

JavaScript (Node.js)

const axios = require('axios');

const BASE_URL = 'https://api.bexio.com/2.0';
const ACCESS_TOKEN = process.env.BEXIO_TOKEN;

const api = axios.create({
  baseURL: BASE_URL,
  headers: {
    'Authorization': `Bearer ${ACCESS_TOKEN}`,
    'Accept': 'application/json'
  }
});

// Fetch contacts
async function getContacts() {
  const response = await api.get('/contact');
  return response.data;
}

// Create contact
async function createContact(contactData) {
  const response = await api.post('/contact', {
    contact_type_id: 1, // 1 = Company, 2 = Person
    name_1: contactData.company,
    name_2: contactData.name,
    mail: contactData.email,
    country_id: 1 // Switzerland
  });
  return response.data;
}

getContacts().then(contacts => console.log(contacts));

Hinweis: Community-Bibliotheken existieren für PHP und Python, decken aber nur einen Teil der API-Methoden ab. Für vollständige Funktionalität sind möglicherweise direkte HTTP-Aufrufe erforderlich.

bexio API Einschränkungen
& Workarounds

Transparenz über die Grenzen der API spart Ihnen Stunden an Frustration. Die bexio API hat Einschränkungen — aber wenn Sie diese im Voraus kennen, können Sie besser planen.

🔔

Keine nativen Webhooks

Polling oder Zapier als Workaround nutzen
🚦

Undokumentierte Rate Limits

Backoff und Caching implementieren
🧪

Keine Sandbox-Umgebung

Mit echten Daten vorsichtig testen

Workarounds für fehlende Webhooks

  • Polling: Regelmässig auf Änderungen prüfen (alle 5-15 Minuten)
  • Zapier: Nutzt Polling, übernimmt aber die Infrastruktur
  • Drittanbieter-Webhook-Dienste: Einige Integrationsplattformen bieten Pseudo-Webhook-Funktionalität

Umgang mit Rate Limits

Basierend auf Community-Erfahrungen:

  • Exponentielles Backoff bei 429-Fehlern implementieren
  • Antworten wo möglich cachen
  • Anfragen bündeln, wenn die API dies unterstützt
  • Unnötig häufiges Polling vermeiden

Begrenzte Client-Bibliotheken

Offizielle SDKs existieren nicht. Community-Bibliotheken sind unvollständig. Für Produktionsanwendungen müssen Sie mit eigenem Code rechnen.

Einfachere Alternative

Sie brauchen nur Schweizer Rechnungen per API?

Die bexio API ist leistungsstark, aber komplex — OAuth 2.0, Scopes, Token-Management, keine Sandbox. Wenn Sie lediglich Schweizer QR-Rechnungen programmatisch erstellen möchten, ist die Magic Heidi Invoice API eine deutlich einfachere Option. Ein POST-Request. Ein API-Key. Eine PDF-Rechnung mit Schweizer QR-Code zurück.

Magic Heidi Rechnungsliste

Magic Heidi Invoice API

Die Magic Heidi Swiss Invoice QR Code API ist eine offene Single-Endpoint-API zur Erstellung professioneller Schweizer Rechnungen mit QR-Einzahlungsscheinen. Kein OAuth, kein Token-Refresh, keine Scopes — nur ein API-Key und ein POST-Request.

So funktioniert es

  1. Senden Sie einen POST-Request mit Ihren Rechnungsdaten (Absender, Kunde, Positionen)
  2. Erhalten Sie eine PDF-Download-URL, die 24 Stunden gültig ist
  3. Das war's — kein OAuth-Flow, keine Developer-Portal-Registrierung

Python-Beispiel

import requests

response = requests.post(
    "https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d",
    headers={"key": "your_api_key"},
    json={
        "user_details": {
            "name": "Muster GmbH",
            "address": "Bahnhofstrasse 1",
            "zip": "8001",
            "city": "Zurich",
            "iban": "CH93 0076 2011 6238 5295 7"
        },
        "customer_details": {
            "name": "Acme AG",
            "address": "Bundesplatz 3",
            "zip": "3011",
            "city": "Bern"
        },
        "invoice_items": [
            {
                "description": "Web Development",
                "quantity": 10,
                "unit_price": 150
            },
            {
                "description": "Design Review",
                "quantity": 3,
                "unit_price": 120
            }
        ],
        "language": "en",
        "currency": "CHF",
        "vat_enabled": true,
        "vat_percentage": 8.1,
        "vat_number": "CHE-123.456.789 MWST"
    }
)

data = response.json()
print(f"Download your invoice: {data['url']}")

JavaScript (Node.js) Beispiel

const axios = require('axios');

const response = await axios.post(
  'https://europe-west6-magic-heidi.cloudfunctions.net/create_invoice_abstract_v1d',
  {
    user_details: {
      name: 'Muster GmbH',
      address: 'Bahnhofstrasse 1',
      zip: '8001',
      city: 'Zurich',
      iban: 'CH93 0076 2011 6238 5295 7'
    },
    customer_details: {
      name: 'Acme AG',
      address: 'Bundesplatz 3',
      zip: '3011',
      city: 'Bern'
    },
    invoice_items: [
      { description: 'Web Development', quantity: 10, unit_price: 150 },
      { description: 'Design Review', quantity: 3, unit_price: 120 }
    ],
    language: 'en',
    currency: 'CHF'
  },
  { headers: { key: 'your_api_key' } }
);

console.log(`Download your invoice: ${response.data.url}`);

Hauptfunktionen

  • Schweizer QR-Rechnungen konform mit Schweizer Zahlungsstandards
  • Mehrsprachig: Englisch, Deutsch, Französisch, Italienisch
  • CHF und EUR Währungsunterstützung
  • MWST-Handling mit konfigurierbaren Sätzen und MWST-Nummer
  • Eigenes Logo per URL
  • Nur-QR-Modus zur Erstellung des reinen Einzahlungsscheins
  • Kostenloses Testen ohne API-Key
  • Offene Dokumentation auf GitHub
Vergleich

bexio API vs. Magic Heidi Invoice API

Wählen Sie das richtige Tool für Ihren Anwendungsfall

FunktionMagic Heidi APIbexio API
AnwendungsfallRechnungserstellungKomplette Business-Suite
Authentifizierung Einfacher API-KeyOAuth 2.0 Flow
EinrichtungNur API-KeyDeveloper Portal + OAuth-App
Schweizer QR-Rechnungen Integriert Manuelles Setup
Sandbox / Kostenloses Testen Ja Nein
Kontakte & CRM Nein Ja
Buchhaltung Nein Ja
Minimale KostenKostenlos testbarCHF 45/Monat
FAQ

Häufig gestellte Fragen

Ist die bexio API kostenlos?

Ja, API-Zugang ist bei allen kostenpflichtigen bexio-Plänen inklusive (ab CHF 45/Monat).

Welche Programmiersprachen funktionieren mit diesen APIs?

Jede Sprache, die HTTP-Anfragen machen kann — Python, JavaScript, PHP, C#, Ruby, Go, etc. Sowohl die bexio API als auch die Magic Heidi API verwenden Standard-REST/JSON.

Kann ich die bexio API ohne Programmieren nutzen?

Ja. Zapier und Make.com bieten No-Code-Automatisierung mit bexio.

Unterstützt bexio Webhooks?

Nicht nativ. Nutzen Sie Polling oder Zapier als Workarounds.

Was ist der Unterschied zwischen bexio API und Magic Heidi API?

Die bexio API bietet Zugang zu einer kompletten Business-Suite (Kontakte, Buchhaltung, Rechnungen, Inventar). Die Magic Heidi API konzentriert sich auf eine Sache: Schweizer QR-Rechnungen mit einem einzigen API-Aufruf erstellen. Wenn Sie nur programmatische Rechnungserstellung benötigen, ist Magic Heidi deutlich einfacher.

Kann ich die Magic Heidi API kostenlos testen?

Ja. Sie können Anfragen ohne API-Key zum Testen senden. Für den Produktionseinsatz ist ein API-Key erforderlich — kontaktieren Sie hello@magicheidi.ch.

Gibt es eine bexio Test-/Sandbox-Umgebung?

Nein. Testen Sie vorsichtig mit echten Daten.

Einfachere Schweizer Rechnungsstellung gesucht?

Magic Heidi erledigt QR-Rechnungen, Spesen und MWST — auf jeder Plattform verfügbar. Nutzen Sie die App oder erstellen Sie Rechnungen per API.