ChatGPT + custom GPT

Connect ChatGPT or a custom GPT to accounting

There is no ChatGPT plugin for your bookkeeping — and you do not need one. A custom GPT reaches your German ledger through GPT Actions calling the open REST API directly. You paste the base URL, set Bearer authentication with your jab_live_ key, and the model can read the ledger or, with a write key, post entries. Same key, same scopes, same GoBD guarantees.

How the connection actually works

Be clear-eyed: this is the REST API behind a custom GPT, not a marketplace plugin.

A custom GPT can call external HTTP endpoints through Actions. You point an Action at the bookkeeping REST API, describe the endpoints, and set the authentication to an API key sent as a Bearer token. From then on, when you ask the GPT a bookkeeping question, it invokes the matching endpoint and answers from your real data.

Nothing here is a special integration. It is the same open REST API any developer uses, driven by the GPT instead of a script. That honesty is the point: no plugin, no hidden connector, just a documented endpoint allowlist and your key.

Set up the Action

Base URL, Bearer auth, and the endpoints you want to expose.

# ChatGPT → custom GPT → Configure → Actions
# Authentication: API Key  →  Auth Type: Bearer
# API key value: jab_live_…
# Server / base URL: $BASIS_URL
#
# Example request the Action performs under the hood
# (list open payables so the GPT can propose postings):
curl "$BASIS_URL/open-items?type=AP" \
  -H "Authorization: Bearer jab_live_…"

What a custom GPT can do

The same read and write surface as any other client.

  • Read the trial balance, journal entries, accounts, open items, invoices and bank lines for the one company its key belongs to.
  • Summarise, group and explain the numbers in plain language for a founder or a finance team.
  • With a write key, post a manual entry, issue or book an invoice, or reverse a booking via Storno.
  • Prepare and tidy figures that later flow into your annual accounts inside the app.

Keep the write scope deliberate

A custom GPT is shareable, so treat the key with care.

If you share a custom GPT, remember the key behind its Action is what grants access. Start with a read-scope key so the GPT can analyse but not change anything. Only issue a read-plus-write key when a trusted person drives the posting flow, and prefer a time-limited key you can revoke the moment you are done.

The company is derived from the key, so a GPT can never reach another company's books by changing a parameter. And because every write runs through the GoBD booking core, even a write-enabled GPT cannot delete history or unbalance an entry.

What it will not do

Honest limits keep expectations right.

  • The API never files an annual report, submits an E-Bilanz or completes a tax return.
  • No SQL and no free-form query — only the fixed endpoint allowlist.
  • No cross-company access — one key, one company, always.
  • No way to switch off GoBD; the booking core is the same one the UI uses.

Frequently asked questions

Is there an official ChatGPT plugin?

No. A custom GPT connects through GPT Actions calling the open REST API directly. There is no plugin or marketplace connector — just the documented endpoints and your Bearer key.

How does ChatGPT authenticate?

Set the Action's authentication to an API key used as a Bearer token, with your jab_live_ key as the value and the API base URL as the server. No separate apikey header is needed.

Can a shared custom GPT leak my books?

Access is exactly the key behind the Action. Use a read-only, time-limited key for anything shared, and revoke it when done. The company is derived from the key, so no other company's data is reachable.

Can ChatGPT post entries?

Yes, if the Action uses a read-plus-write key. Posts run through the GoBD booking core, so reversals are Storno operations and Soll must equal Haben — the same rules as the manual UI.

Can ChatGPT file my annual accounts?

No. The API is bookkeeping data and postings only. ChatGPT can prepare the figures, but the annual accounts are compiled and filed inside the app, not via the API.