Skip to content
Docs
BlogZur App

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

  1. Der Uella-Admin richtet eine Bexio-App im Developer Portal ein.
  2. Redirect-URL (Produktion): https://uella.ch/api/oauth/bexio/callback
  3. In Uella: Tools & Apps → Bexio → Mit Bexio anmelden, oder Profil → API-Keys → Bexio → Verbinden
  4. Mit Bexio anmelden und Berechtigungen bestätigen

Option B: Personal Access Token (PAT) ​

  1. Melde dich bei https://office.bexio.com an
  2. Geh zu Einstellungen → Sicherheit → API-Token
  3. Klick auf Token erstellen und kopiere den Token
  4. Trage den Token im Agent Loop unter enabledTools → Bexio → apiToken ein

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 ​

AufgabeOperationParameter
Laufende Aufträgeorder_searchoptional status_id, postFilter
Bezahlte Kreditorenbill_liststatus: "PAID", Datumsfilter
Monatsumsatzinvoice_listpostFilter auf is_valid_from, Summe der total-Felder
Eigene User-IDuser_me— (für Zeiterfassung)
Buchungsjournaljournal_listfrom, to
Offerte → Auftragoffer_to_orderid (Offerten-ID)
Position ändernposition_updatedoc_type, doc_id, position_type, position_id, Felder
Position löschenposition_deletedoc_type, doc_id, position_type, position_id
Mahnung versendeninvoice_reminder_sendid (Rechnung), reminder_id

Positions-CRUD (Offerte, Auftrag, Rechnung) ​

Einzelne Zeilen auf Verkaufsdokumenten gezielt lesen, hinzufügen, ändern oder löschen:

OperationBeschreibung
position_listAlle Positionen eines Typs auflisten
position_getEinzelne Position abrufen
position_addNeue Zeile hinzufügen
position_updateBestehende Zeile ändern
position_deleteZeile 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 ​

json
{
  "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 ​

json
{
  "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 ​

json
{
  "operation": "journal_list",
  "from": "2026-06-01",
  "to": "2026-06-30"
}

Beispiel: Offerte in Auftrag umwandeln ​

json
{
  "operation": "offer_to_order",
  "id": 42
}

Häufige Probleme ​

ProblemLösung
403 bei KreditorenPurchase-Modul + Scope kb_bill_show
403 bei JournalScope accounting
user_id für ZeiterfassungZuerst user_me aufrufen
Create schlägt fehlVollständigen Body als payload in paramsJson