Skip to Content

AI bookkeeping in practice: my company's books in Odoo

Statements, documents, reconciliation and closing handed to an AI agent, with written rules and a human who approves.
November 10, 2026 by
AI bookkeeping in practice: my company's books in Odoo

My accounting in Odoo, kept with an AI agent

Field: Accounting / Odoo ERP / AI agents

Period: September to November 2026

Client: Internal project — the books of my own company

Background

In August 2026, I left Odoo Enterprise online for Odoo Community, hosted on my own server. My Swiss company's accounting came along. It still had to be kept: importing statements from several banks and payment services, finding supplier invoices, reconciling every transaction, booking exchange differences and private contributions, then closing the period.

Many SME owners do this work in the evening, late, with the feeling of copying out what the bank already knows. I wanted to find out, on my own books, what AI bookkeeping can really automate, and what has to stay in human hands.

Problem

  • Mixed statements. One bank provides a standard CAMT.053 file, payment services have a connector, and another bank only issues PDF statements.
  • Scattered documents. Invoices arrive by email, sit in a shared folder, or have to be downloaded by hand from the supplier's customer portal.
  • Cases that need a rule. A purchase paid with my private card, a transfer between two company accounts, a foreign-currency payment debited at a different rate from the invoice.
  • A backlog. After the migration, the whole year was still to be reconciled.

Solution

I handed the work to an agent, Claude Code, which reads and writes in Odoo, but within a precise frame: I set the rules, it applies them, and nothing is written without a dry run and my approval.

1. Bring in the statements, inventing nothing

The CAMT.053 file goes through the import wizard of the OCA (Odoo Community Association) modules. Payment services are fetched automatically by their connectors. For the bank that only provides PDFs, I wrote a converter to one file per currency. It runs five checks: each balance follows from the previous one to the cent, the statement adds up, recomputed totals match the printed ones, no reference appears twice, every amount is in the right currency. If a single check fails, it writes nothing. Every line carries the bank's reference: re-importing a statement creates no duplicate.

2. Find the supporting documents

The agent goes through the folder of documents to process and the mailboxes, reads each PDF (amount, date, number, currency, and who the invoice is addressed to) and matches it to the corresponding statement line: same amount, within a day or two. What it cannot find, it does not guess: it gives me a precise list (date, amount, bank label) of the missing documents.

3. Write the rules once

The decisions are mine, and they are written down:

  • an invoice's accounting date is the actual payment date, not the end of the month that Odoo suggests by default;
  • exchange differences are booked as one global entry per period, not corrected line by line;
  • a purchase paid with my private money goes through a transit account, then becomes a contribution at month end;
  • bank fees and transfers between accounts each have their own account;
  • an expense without a document is only booked with my explicit approval, after a real search.

4. Reconcile through the standard path

Reconciliation uses the OCA module, through the same functions as the on-screen buttons. Odoo is not modified. Software subscriptions, telephony, bank fees, social charges: each invoice is created with its attachment, dated on payment, then matched with its statement line.

5. A plan, a dry run, a backup

The agent does not improvise its entries: it drafts a plan, a short file that says what to do (invoices, transfers, fees, contributions, exchange). The plan is first run dry: everything is computed, then rolled back. I review it. Only then is it run for real, after an automatic database backup. Running a plan again does not recreate an invoice already entered.

6. End-of-period checks

At the end, a routine checks what the dashboard must show clean: no open bank line, all statements valid, the internal transfer account and the private transit account at zero, and an up-to-date exchange rate. Odoo must no longer flag an "invalid statement" or an "irregular sequence".

7. Turn it into a reusable "skill"

All this know-how (rules, chart of accounts used, where to find each type of document, closing procedure and pitfalls met) is stored in a skill, a procedure sheet the agent loads as soon as I mention accounting. The following month, it does not start from scratch.

Results

  • The year 2026, from January to October, was entered and reconciled on 6 November 2026: every bank line of the period is reconciled.
  • Every invoice carries its attachment and its actual payment date.
  • Closing a month now follows a written procedure: import, find the documents, plan, dry run, execution, checks.
  • Every decision is traced in a tracking ticket, with what remains to be verified.

What I take away

  • AI excels at repetitive work. Reading PDFs, matching amounts and dates, finding an email, applying a rule a hundred times the same way: that is where it saves hours.
  • It does not decide. Which date to use, how to treat a purchase paid privately, whether to accept an expense without a document: these are business owner's choices. Responsibility for the accounts remains mine, and an accountant's review keeps its full place.
  • Safeguards matter more than the model. Checks that refuse to write, dry runs, backups, no entry without approval: that is what makes automation trustworthy.
  • The real pitfalls are elsewhere. After the migration, no exchange rate provider was configured: rates were frozen. A supplier sent a replacement invoice that looked like a duplicate. An invoice and the amount debited did not match. The agent flagged them; I made the call.
  • The method carries over to an SME: write your rules, standardise your statements, keep a human to approve, and build it into a procedure.

For your own processes, see the business applications I set up and the infrastructure that runs them. This project builds on claudeVPS, my server-side agent environment.

Is bookkeeping eating your evenings?

Odoo, bank statements, AI agents with safeguards: I look at how you work and propose what can be automated, and what should not be. Let's talk in a 20-minute call.

20-min discovery callContact me

Sources

Tags: lab, accounting, Odoo, AI, Claude Code, bank reconciliation, OCA, SME

TSFind — What a service directory taught me about APIs and data
External APIs, web services, a public database and selective filtering