Skip to content

BuchhaltungsButler adapter: real endpoints, required filters, verified live - #829

Merged
keysersoft merged 1 commit into
mainfrom
keysersoft/buchhaltungsbutler-fix
Oct 3, 2026
Merged

keysersoft merged 1 commit into
mainfrom
keysersoft/buchhaltungsbutler-fix

Conversation

@keysersoft

Copy link
Copy Markdown
Contributor

A paying Cloud customer reported HTTP 404 on every BuchhaltungsButler tool. The adapter (from #642) had never been run against the API.

Checked against the vendor's OpenAPI document (app.buchhaltungsbutler.de/docs/api/v1.de.json) and the customer's live tenant (read-only calls, with their permission):

Tool Before Now
list_customers /customers/get (does not exist, HTML 404) /settings/get/debtors
list_suppliers /suppliers/get (does not exist) /settings/get/creditors
list_receipts 400 without list_direction list_direction required (inbound/outbound) + payment status, counterparty, invoice number
list_postings 400 without dates date_from/date_to required + account, posting account, status, order
list_transactions ok + account, payer/payee
list_accounts ok no paging params (the endpoint takes none)
new list_posting_accounts, list_cost_locations

All 8 tools return success: true through the production RestEngine against the live tenant. JSON bodies are kept: the API accepts them, and form encoding sends numbers as strings, which /settings/get/postingaccounts rejects.

Instructions now explain the 401 (bad client id/secret) vs HTML 404 (unknown path) signals, the required filters, the rate limit, and that the Basic Auth fields hold the API client id and secret, not the BuchhaltungsButler login.

…d live

The adapter was written from memory and never run. Checked against the
vendor's OpenAPI document (app.buchhaltungsbutler.de/docs/api/v1.de.json)
and a live tenant:

- list_customers / list_suppliers called /customers/get and /suppliers/get,
  which do not exist (the web app answers with its HTML 404 page). They are
  debtors and creditors: /settings/get/debtors and /settings/get/creditors.
- list_receipts needs list_direction (inbound/outbound); without it the API
  answers 400 "invalid list_direction specified".
- list_postings needs date_from and date_to (400 otherwise).
- list_accounts takes no paging.
- New: list_posting_accounts (chart of accounts) and list_cost_locations.
- Filters the API offers (payment status, counterparty, accounts, order).
- Instructions: drop "unverified", explain the 401 vs HTML-404 signals, the
  required filters, the 100 requests/minute limit, and that the Basic Auth
  fields hold the API client id and secret, not the BuchhaltungsButler login.

The body stays JSON: the API accepts it, and form encoding turns numbers
into strings that /settings/get/postingaccounts refuses.
@keysersoft
keysersoft requested a review from D3nisty as a code owner October 3, 2026 07:35
@keysersoft
keysersoft merged commit 9d58587 into main Oct 3, 2026
14 checks passed
@keysersoft
keysersoft deleted the keysersoft/buchhaltungsbutler-fix branch October 3, 2026 07:39
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 3, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant