# Importing books from another accounting system (migration)

> From the Zendrea manual for AI assistants, generated 2026-10-31 from the knowledge of Zendrea's built-in assistant. All topics: https://www.zendrea.ch/llms.txt; all of them in one file: https://www.zendrea.ch/llms-full.txt. Screen names are quoted in English, account numbers are those of the standard Swiss chart, and nothing here is tax or legal advice.

Settings → **Import Data** loads bookkeeping from another system into the **active** company. Only the company **owner** may import a journal (members see a notice instead). The user exports the right file from the old system, picks it there and presses Import.

**The four formats** (radio buttons in the panel):
- **bexio journal** — a journal / account-statement export from bexio, **Excel or CSV**. The richest path: it maps bexio's accounts and VAT codes onto this chart. Parsing is structural (column positions, account numbers, bexio's internal code enums), so an export in ANY bexio interface language works.
- **DATEV CSV** — the exchange format of German-speaking accountants and Swiss fiduciaries; ask the previous bookkeeper for a DATEV booking-batch (Buchungsstapel) export.
- **SAF-T** — the OECD audit file **as this app exports it** (the ZIP, or the XML inside it). No other Swiss program exports SAF-T, so a SAF-T file from another program is **refused**; between two companies of this app the whole-company archive is the fuller path. A SAF-T import brings the bookings with their VAT codes, creates the missing customers, suppliers and accounts (the preview lists them), and sets the opening balances. SAF-T has no balances per currency: a foreign-currency account's opening arrives in the base currency, and the preview names the accounts to check under Opening Balances.
- **This app's own JSON archive** — a whole-company file produced by Settings → Export Data in another installation of this app. It always creates a **NEW company** (the name is auto-suffixed on collision) and overwrites nothing, so any user may run it; email passwords are stripped from the archive and must be re-entered afterwards.

**Which fiscal period the entries land in.** A bexio export carries the whole history in one file, so **no period is picked**: entries are filed by their **date**, and missing calendar years are **created automatically** — the preview lists every target year with its entry count and marks the ones that will be created. DATEV and SAF-T go into the **one selected fiscal period**, and entries dated outside it are refused.

**Importing REPLACES, it does not merge.** Every existing entry in each target fiscal period is deleted and replaced by the file's — the preview shows the counts and a confirmation dialog names them before anything happens. What hangs on those entries goes with them: their receipts, asset records, and dividend resolutions (with the shareholders' allocations and statements) whose appropriation, payout or withholding-tax payment sits in a replaced year; the file brings those bookings back as plain entries, and the dividend tile no longer lists the resolution. So the ideal target is a fresh, empty company (a just-signed-up user's seeded company is exactly that), and re-running an import is a replace, never a top-up.

**What comes across:** entries with their lines, accounts and VAT; opening entries (bexio's class-9 Eröffnungsbuchung) absorbed into that period's **opening balances**, with carry-forward into later years rebuilt; accounts missing from the chart **created** (the preview lists them before the user commits); accounts that exist but were hidden **activated**, because the file posts to them; and the reporting currency switched to the file's if it differs. **What does not:** receipts and attachments, contacts (except through the bexio open-positions files below), and payroll — salary postings arrive as ordinary journal lines, not as salary records, so the Salaries and AHV reports stay empty for imported years even though the books are complete.

**bexio's three optional companion files.** Choosing the bexio format opens a small modal staging four pickers; only the journal is required.
- **Chart of accounts** — with it, accounts match by **role** (the creditor / debtor / VAT control accounts survive renumbering) and missing accounts are created faithfully with their real name and grouping instead of an estimated one.
- **Open payables** and **Open receivables** — bexio's "open positions" exports (its *credits* list = **suppliers**, its *debits* list = **customers**; the naming is a trap). They create the supplier and customer records with their own K-/D- sub-accounts, attach due dates and counterparties, and set each document's open amount, so the Open Items report is correct from day one.
- **Export the open-positions lists AS OF THE CUT-OVER DATE (today), never as of an old year end.** A per-31.12. export lists only what was open on that date: everything settled since contributes nothing, and everything opened since is missing.

Without the open-positions files the journal alone still links a bill to the payment that settles it **in full**; a bill that was only **partly** paid stays in Open Items at its full amount, because the journal cannot say how much is left.

**After every import, verify BOTH statements** against the old system for the same year — the **Balance Sheet** and the **Income Statement**. (A real migration once reconciled perfectly on the balance sheet while the income statement was wrong; checking only one proves nothing.) Then compare the **Open Items** report against the old system's open lists.

**If an import went structurally wrong, import into a FRESH company** rather than over the same one: accounts that already exist are matched by number and keep their existing attributes, so a wrongly created account is not repaired by re-importing. Create a new company from the header's company selector, then import there.

**No journal export available?** A company whose prior books were kept by a fiduciary usually migrates on **balances only**: create the first fiscal period, then enter the closing position at the cut-over date under Settings → Opening Balances (see the opening-balances topic). Only bookings from the cut-over date onward are then captured in this app.
