LedgerLou Docs is optimized for desktop.

Please open this page on a device with a wider screen.

LedgerLou Migration

Guided switch

Migrating to LedgerLou

We recommend running the migration agent-guided via Claude, ChatGPT, or any other MCP-capable agent. Start with a clear migration cutover date: from that day onward, LedgerLou is the operative general ledger; everything before is closed in the old system and carried over through the opening balances.

Hilf mir bei der Migration zu LedgerLou.

Bitte starte den LedgerLou MCP-Wizard mit migration(action="start") und begleite mich Schritt für Schritt.
Frage zuerst nach Quellsystem, Migrationsstichtag, Bankkonten, Eröffnungsbilanzwerten und offenen Posten.
Prüfe danach mit migration(action="analyze"), was im Tenant noch fehlt, und schlage mir die nächsten sicheren Tool-Schritte vor.

Wichtig: Bankkonten müssen vor dem Bankimport angelegt werden. Bankumsätze vor dem Migrationsstichtag sollen normalerweise nicht importiert werden, weil sie bereits im EB-Wert des Bankkontos enthalten sind. Falls sie doch im Export enthalten sind, markiere sie als pre_migration statt sie abzustimmen.

With this prompt an MCP agent can launch the wizard via migration(action="start"), inspect the tenant, and propose the next safe tool steps. If your agent isn’t connected yet, start with the MCP setup.

Production flow

  1. Set the cutover date — typically the first day of a month or fiscal year, e.g. 2026-01-01.
  2. Close the old system — settle all bank movements, open items, and closing entries in the previous system through the day before the cutover.
  3. Create bank accounts — create each real bank account with create_bank_account and map it to an SKR04 asset account, e.g. 1800, or a separate bank account per IBAN.
  4. Post opening balances — carry the trial balance as of the cutover date using post_opening_balances. The opening balance of the bank is the starting balance in LedgerLou.
  5. Carry over open items — additionally carry open receivables and payables individually as open items if later payments need to be matched.
  6. Import bank transactions from the cutover date — import bank transactions preferably only starting from the migration date and reconcile them normally afterwards.

Opening balances

Opening balances transfer the closing balance sheet of the old system as the starting balance sheet in LedgerLou. Each balance carry-forward is posted against account 9000 (balance carry-forwards for general accounts). Account 9000 must net to zero in total.

Only balance sheet accounts are carried over:

  • Assets, e.g. bank, cash, receivables, fixed assets
  • Liabilities, e.g. payables, loans, provisions
  • Equity, e.g. subscribed capital, retained earnings

P&L accounts start at zero in the new fiscal year. The prior-year result is represented via retained earnings in the opening balance sheet.

{
  "booking_date": "2026-01-01",
  "balances": [
    { "account_number": "1200", "account_name": "Forderungen aus LuL", "debit": 10000, "credit": 0 },
    { "account_number": "1800", "account_name": "Bank", "debit": 25000, "credit": 0 },
    { "account_number": "2000", "account_name": "Gezeichnetes Kapital", "debit": 0, "credit": 25000 },
    { "account_number": "3300", "account_name": "Verbindlichkeiten aus LuL", "debit": 0, "credit": 10000 }
  ]
}

Open items

An aggregated opening balance on 1200 or 3300 is enough for the balance sheet, but not always for later bank reconciliation. When an old invoice is paid after the cutover date, LedgerLou needs a single open item with an intent_id.

Recommended practice:

  • carry open vendor invoices individually as payable postings and link them with create_invoice
  • carry open customer receivables individually as receivable postings
  • only leave fully historical details — no longer relevant for payment matching — in the aggregate opening balance

This lets get_reconciliation_suggestions propose later payments against open_receivable or open_liability.

MCP sequence

{ "action": "start", "migration_date": "2026-01-01", "source_system": "DATEV" }

After that, the agent typically runs these tools:

  1. migration(action="analyze") — check what’s missing
  2. create_bank_account — create bank accounts
  3. search_accounts / list_accounts — validate accounts
  4. post_opening_balances — post opening balances
  5. post_booking and create_invoice — carry over open items
  6. import_bank_transactions — import bank transactions from the cutover date
  7. migration(action="flag_pre_migration_bank_transactions") — only if historical bank transactions were accidentally imported
  8. get_reconciliation_suggestions and reconcile_bank_transaction — operative bank reconciliation
  9. migration(action="complete") — finalize migration status

Verification

After the migration, these checks should be green:

  • get_bilanz as of the cutover date matches the closing balance sheet of the old system
  • get_susa shows the expected opening balances
  • every real bank account exists in list_bank_accounts
  • there are no open bank transactions before the migration cutover date, unless they are flagged as pre_migration
  • bank transactions from the migration cutover date onward are imported and reconcilable
  • open receivables and payables that are paid after the cutover date are individually matchable

Corrections

Incorrect opening balances are not edited but reversed via reverse_booking and re-posted afterwards. If a bank opening balance does not match the closing balance of the old system, the old closing or the opening balance must be corrected; historical bank transactions are not retroactively treated as an operative LedgerLou reconciliation.