Bexio
Verbindet Uella direkt mit deinem Bexio-Account: Kontakte, Artikel, Verkauf, Einkauf, Buchhaltung, Stammdaten, Lager, Projekte und Zeiterfassung — per Sprachbefehl oder Prompt im Agent Loop.
Kategorie: Integrationen & Business | Quelldatei: bexioBlock.js (v4.0) | Auth: Ja (OAuth oder Personal Access Token) | 123 Operationen
Was kann dieser Block?
- Kontakte & Artikel: Vollständiges CRUD
- Verkauf: Offerten, Aufträge, Lieferscheine, Rechnungen inkl. Workflow, Konvertierungen, Mahnungen, Zahlungen
- Einkauf: Kreditoren, Spesen, Einkaufsbestellungen, ausgehende Zahlungen (Lesen + Schreiben)
- Buchhaltung: Buchungsjournal (
journal_list) - Stammdaten: Benutzer (
user_me), Kontaktgruppen, Aufgaben, Notizen - Lager: Bestände und Lagerorte
- Projekte: CRUD, archivieren, Meilensteine, Pakete
- Zeiterfassung: Zeiteinträge verwalten
Was brauche ich dafür?
Option A: OAuth (empfohlen für Teams)
- Der Uella-Admin richtet eine Bexio-App im Developer Portal ein.
- Redirect-URL (Produktion):
https://uella.ch/api/oauth/bexio/callback - In Uella: Tools & Apps → Bexio → Mit Bexio anmelden, oder Profil → API-Keys → Bexio → Verbinden
- Mit Bexio anmelden und Berechtigungen bestätigen
Option B: Personal Access Token (PAT)
- Melde dich bei https://office.bexio.com an
- Geh zu Einstellungen → Sicherheit → API-Token
- Klick auf Token erstellen und kopiere den Token
- Trage den Token im Agent Loop unter enabledTools → Bexio →
apiTokenein
Scopes je nach Bereich: kb_invoice_show, kb_order_show, kb_bill_show, accounting, project_show, task_show, note_show, stock_edit usw.
Typische Agent-Aufgaben
| Aufgabe | Operation | Parameter |
|---|---|---|
| Laufende Aufträge | order_search | optional status_id, postFilter |
| Bezahlte Kreditoren | bill_list | status: "PAID", Datumsfilter |
| Monatsumsatz | invoice_list | postFilter auf is_valid_from, Summe der total-Felder |
| Eigene User-ID | user_me | — (für Zeiterfassung) |
| Buchungsjournal | journal_list | from, to |
| Offerte → Auftrag | offer_to_order | id (Offerten-ID) |
| Position ändern | position_update | doc_type, doc_id, position_type, position_id, Felder |
| Position löschen | position_delete | doc_type, doc_id, position_type, position_id |
| Mahnung versenden | invoice_reminder_send | id (Rechnung), reminder_id |
Positions-CRUD (Offerte, Auftrag, Rechnung)
Einzelne Zeilen auf Verkaufsdokumenten gezielt lesen, hinzufügen, ändern oder löschen:
| Operation | Beschreibung |
|---|---|
position_list | Alle Positionen eines Typs auflisten |
position_get | Einzelne Position abrufen |
position_add | Neue Zeile hinzufügen |
position_update | Bestehende Zeile ändern |
position_delete | Zeile entfernen |
Pflichtparameter: doc_type (offer / order / invoice), doc_id, position_type
Positions-Typen: article (Artikel), custom (Freitext mit Preis), text, discount, subtotal, pagebreak, subposition
Beispiel: Artikelposition an Rechnung anhängen
{
"operation": "position_add",
"doc_type": "invoice",
"doc_id": 2001,
"position_type": "article",
"text": "Managed Backup",
"amount": 1,
"unit_price": 49.00,
"article_id": 789
}Beispiel: Menge auf Offerte ändern
{
"operation": "position_update",
"doc_type": "offer",
"doc_id": 42,
"position_type": "article",
"position_id": 3,
"amount": 5
}offer_add_position bleibt als Alias für position_add auf Offerten erhalten.
Operations-Übersicht (123)
Kontakte & Artikel (10)
contact_*, article_* — je search, get, create, update, delete
Offerten (17 + 5 Positionen)
offer_* inkl. offer_add_position (Alias)
Positions-CRUD (5) — für offer, order, invoice
position_list, position_get, position_add, position_update, position_delete
Aufträge (11)
order_search, order_get, order_create, order_update, order_delete, order_pdf, order_to_delivery, order_to_invoice, order_repetition_get, order_repetition_create, order_repetition_delete
Lieferscheine (3)
delivery_list, delivery_get, delivery_issue
Rechnungen (20)
invoice_list, invoice_get, invoice_create, invoice_update, invoice_delete, invoice_pdf, invoice_copy, invoice_issue, invoice_send, invoice_cancel, invoice_mark_as_sent, invoice_revert_issue, invoice_payment_list, invoice_payment_create, invoice_payment_delete, invoice_reminder_list, invoice_reminder_create, invoice_reminder_get, invoice_reminder_delete, invoice_reminder_send, invoice_reminder_pdf
Einkauf (18)
bill_list/get/create/update/delete, expense_list/get/create/update/delete, purchase_order_list/get/create/update/delete, outgoing_payment_list/get/create
Buchhaltung (1)
journal_list — Filter: from, to, account_uuid, limit, offset
Stammdaten (15)
user_me, user_list, contact_group_list, contact_group_search, task_list/search/get/create/update/delete, note_list/search/get/create/update/delete
Lager (4)
stock_list, stock_search, stock_place_list, stock_place_search
Projekte (11)
project_search, project_get, project_create, project_update, project_delete, project_archive, project_reactivate, project_milestone_list/create, project_package_list/create
Zeiterfassung (5)
timesheet_list, timesheet_get, timesheet_create, timesheet_update, timesheet_delete
Agent Loop
Der Block liefert ein eigenes Tool-Schema mit allen 123 Operationen. Für create/update-Operationen (bill, expense, purchase_order, …) den Request-Body über payload oder paramsJson übergeben.
Beispiel: Journal abfragen
{
"operation": "journal_list",
"from": "2026-06-01",
"to": "2026-06-30"
}Beispiel: Offerte in Auftrag umwandeln
{
"operation": "offer_to_order",
"id": 42
}Häufige Probleme
| Problem | Lösung |
|---|---|
| 403 bei Kreditoren | Purchase-Modul + Scope kb_bill_show |
| 403 bei Journal | Scope accounting |
| user_id für Zeiterfassung | Zuerst user_me aufrufen |
| Create schlägt fehl | Vollständigen Body als payload in paramsJson |
Links
- API-Doku: https://docs.bexio.com/
- Login: https://office.bexio.com