
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
- Set the cutover date — typically the first day of a month or fiscal year, e.g.
2026-01-01. - Close the old system — settle all bank movements, open items, and closing entries in the previous system through the day before the cutover.
- Create bank accounts — create each real bank account with
create_bank_accountand map it to an SKR04 asset account, e.g.1800, or a separate bank account per IBAN. - 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. - Carry over open items — additionally carry open receivables and payables individually as open items if later payments need to be matched.
- 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:
migration(action="analyze")— check what’s missingcreate_bank_account— create bank accountssearch_accounts/list_accounts— validate accountspost_opening_balances— post opening balancespost_bookingandcreate_invoice— carry over open itemsimport_bank_transactions— import bank transactions from the cutover datemigration(action="flag_pre_migration_bank_transactions")— only if historical bank transactions were accidentally importedget_reconciliation_suggestionsandreconcile_bank_transaction— operative bank reconciliationmigration(action="complete")— finalize migration status
Verification
After the migration, these checks should be green:
get_bilanzas of the cutover date matches the closing balance sheet of the old systemget_susashows 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.