Jahresabschluss.io
DESign inRegister →

ChatGPT + OAuth

ChatGPT connector for bookkeeping in Germany: your ledger as a custom MCP server

A ChatGPT connector for bookkeeping in Germany is a custom MCP server that you add in ChatGPT on the web: the address is https://jahresabschluss.io/mcp, the sign-in is OAuth, and on the jahresabschluss.io consent page you choose one company and whether ChatGPT may only read or also post. ChatGPT then answers from your real German ledger and stops for your confirmation before write actions. Which ChatGPT plans allow custom MCP servers — and whether they allow write tools — is up to OpenAI, so check that first.

Last reviewed: 2026-10-30

The simplest way: Claude in four steps

No technical knowledge needed — the technical options follow below.

  • 1. Install Claude: Download the Claude app for Mac or Windows from claude.ai/download, install it and sign in.
  • 2. Create a key: In your bookkeeping at jahresabschluss.io: “AI agent & API” → “New key”. If Claude should post entries, tick “Post”. Create and copy — the key works like a password for Claude and only for your company.
  • 3. Connect your books: Download “Buchhaltung für Claude” and double-click the file in your “Downloads” folder. Claude asks for the key: paste it and click “Install”. Nothing else to install.
  • 4. Get started: Ask Claude: “Book the new receipts in the inbox.” Claude asks for permission and then posts to your journal.

Claude asks for permission before it uses your bookkeeping, and asks again before invoices, cancellations or locking a period. Every entry lands in the real journal — with the same checks as in the app. Claude Code and Codex work too, for technical users.

Download “Buchhaltung für Claude”: https://jahresabschluss.io/downloads/buchhaltung-fuer-claude.mcpb

Check your ChatGPT plan first

OpenAI has renamed and regrouped this feature several times — developer mode, connectors, apps, and in its current developer documentation plugins — and the plan rules moved with it. The authoritative source for your plan is OpenAI's help article “Connecting custom MCP servers in ChatGPT”. In Business, Enterprise and Edu workspaces an admin may have to allow custom MCP servers before members can add one; OpenAI's documentation notes that workspace permissions and security settings apply.

If your plan lets ChatGPT use read tools only, the connection still answers questions, builds reports and checks figures — ChatGPT simply cannot post. For posting from an OpenAI account in a terminal or editor, Codex is the route described further down.

Add the server in ChatGPT

OpenAI's developer documentation (checked 30 October 2026) describes the route in ChatGPT on the web like this:

ChatGPT (web) › Plugins › +  › Add custom MCP server
Name:            Buchhaltung
Server URL:      https://jahresabschluss.io/mcp
Authentication:  OAuth
Then:            confirm the risk notice, create it as a
                 plugin and install it before the first chat

For custom MCP servers OpenAI lists OAuth and no authentication as the sign-in options, which is why our address signs you in instead of asking for a key. When ChatGPT connects, it opens jahresabschluss.io, you sign in, and the consent page appears. Older guides show a path through the settings and a developer-mode switch; if your screen still looks like that, the address and the OAuth choice are the same.

Approve the connection at jahresabschluss.io

  • Returning to: chatgpt.com, marked as a known destination when ChatGPT uses its usual return address. Any other destination is shown with a warning.
  • Company: exactly one per connection, chosen from the companies that use the bookkeeping, the EÜR or the tax module.
  • What may the program do?: Read is always included. “Post” and “Send invoices by e-mail” stay unticked until you tick them, even if ChatGPT requests every right.
  • Validity: 30 days, 90 days or 1 year. Afterwards you connect again; nothing renews by itself.
  • Allow: confirmed with your second factor, because the approval creates a key for the company.

For a company that uses only the tax module, the second box reads “Check and prepare taxes”, and the connection reaches the tax tools and the company's master data — not the bookkeeping.

How ChatGPT confirms write actions

OpenAI's documentation states that write actions require confirmation by default and that tools without a read-only marking count as write actions. You can let ChatGPT remember an approval within one conversation; a new conversation asks again. Our catalog marks every lookup as read-only, so get_saldenliste or list_open_items count as reading, while confirm_receipt, book_bank_transaction or create_outgoing_invoice are write actions that wait for you. check_tax_filing sends nothing to the tax office, but it is not marked read-only either, so ChatGPT asks before that check as well.

OpenAI itself recommends remembering an approval only for an application you trust to keep writing without asking. In bookkeeping, confirming each posting is the calmer habit. Our server adds its own rule on top: before issuing or emailing an invoice, reversing one, deleting a receipt or any other irreversible step, ChatGPT is instructed to show you exactly what will happen and wait for an explicit yes.

Example: tidy up October's bank lines

A conversation with the Post right; all figures are an example:

You:      Which October bank lines are still unbooked? Suggest
          accounts, but don't book anything yet.

ChatGPT → list_bank_transactions   2026-10-01 to 2026-10-31, unbooked
        → list_open_items          to spot payments of open invoices

ChatGPT:  Six lines are open. Four are customer payments matching
          open invoices, one is a bank fee, one is a card payment
          to a hotel with no receipt yet.

You:      Match the four payments. Leave the hotel line open.

ChatGPT → match_bank_transaction   per payment — write action,
                                   you confirm each one

Why does the hotel line stay open? For a company that draws up a balance sheet, such as a GmbH or UG, our server books a bank line to income or expense only with its receipt — or through a bank rule you approved in the app, for example for bank fees. ChatGPT cannot work around that; it can only remind you that the receipt is missing.

Custom GPTs end on 11 December 2026

If you reached your books through a custom GPT with Actions, plan the switch now: OpenAI's migration FAQ names 11 December 2026 as the date on which custom GPTs stop running (it notes that dates may still change) and says custom actions do not transfer and have to be rebuilt with a supported connector or a custom MCP server. For jahresabschluss.io that rebuild is the connector on this page — no schema to paste, no key stored inside a GPT, and the same ledger checks as every other way in.

The key you once created for the Action does not end with the GPT: it stays valid until it expires or you revoke it. Revoke it under “AI agent & API” as soon as the connector runs.

Codex: the route for technical users

Codex reads the key from an environment variable. Its per-server approval setting default_tools_approval_mode is set here to “writes”, which according to the Codex documentation asks before every tool that is not marked read-only — with our catalog, lookups run and every posting waits for you:

# terminal:  export JAB_API_KEY="jab_live_…"
# ~/.codex/config.toml
[mcp_servers.buchhaltung]
url = 'https://api.jahresabschluss.io/functions/v1/bookkeeping-mcp'
bearer_token_env_var = "JAB_API_KEY"
default_tools_approval_mode = "writes"

You create that key yourself in the app under Bookkeeping › Settings › “AI agent & API” › “New key”, with an expiry date at most 366 days ahead. Unlike a consent-page connection, such a key can also carry the rights to lock periods or to manage webhooks.

Limits that hold in ChatGPT as well

  • ChatGPT never transmits to ELSTER. It can check and prepare; you file in the app with your PIN through the approval link.
  • One company per connection. The company comes from the key, never from what ChatGPT writes.
  • Bank connection, company settings and partners' IBAN/BIC stay in the app.
  • What ChatGPT reads is processed by OpenAI under your ChatGPT account's terms.
  • Prices for the bookkeeping and for filings are on the prices page; ChatGPT itself runs on your own OpenAI plan.

Frequently asked questions

Do I need a plugin from OpenAI's directory to connect German bookkeeping?

No. You add https://jahresabschluss.io/mcp yourself as a custom MCP server with OAuth; ChatGPT keeps it as your own plugin, and no directory listing is involved.

Why does ChatGPT not ask for an API key?

ChatGPT signs in to custom MCP servers with OAuth or without authentication. Our address uses OAuth: you sign in at jahresabschluss.io and the key is created for you in the background.

Does ChatGPT book without asking me?

Not by default. OpenAI states that write actions need confirmation, and our server instructs ChatGPT to get your explicit yes before irreversible steps such as issuing an invoice.

ChatGPT only shows reading tools. Why?

Either “Post” was not ticked on the consent page, or your ChatGPT plan allows read tools only. Connect again with Post, or check OpenAI's help for your plan.

What happens to my custom GPT for bookkeeping after 11 December 2026?

According to OpenAI's migration FAQ, custom GPTs stop running on 11 December 2026 and their Actions are not migrated. Replace it with this connector, or with Codex if you work in a terminal.

Can ChatGPT submit my VAT return to the tax office?

No. ChatGPT can run the official check and prepare the return; you submit it in the app with your ELSTER PIN through the approval link.