Docs
/
EN DE

Importing Your Data

Nobody wants to re-type five years of history. The Import menu takes what you already have in a spreadsheet — customers, vendors, invoices, opening balances — and loads it in bulk. It’s the first thing you do at go-live, and it stays useful afterwards for the occasional batch.

Every import screen is a grid. You fill it either by pasting a block straight out of Excel, Numbers or Google Sheets, or by uploading a CSV or XLSX file. Either way the rows land in the grid first, where you can fix a value and check everything before anything is written.

Take it slowly the first time. An import is not undoable, and the order you do things in matters more than anything else on this page.

Do these first, in this order

Import validates every value against data that already exists. Load things in the wrong order and every row fails on a reference that isn’t there yet.

  1. Chart of Accounts, Taxes and Currencies — every account number and currency code is checked against these. Nothing else can be imported until they’re right.
  2. Customers and Vendors — invoices reference them by number.
  3. Services — invoice lines reference them by item number, and there is no bulk import for the catalogue. If you’re going to import invoices, the services on them have to be created first, by hand.
  4. Opening balances as a General Ledger import.
  5. Invoices and transactions last.

Departments and projects have to exist too, if you reference them — an unknown department or project is reported as an error.

The screens

Everything lives under Import, and each entry is the same grid with different columns:

Menu entry Loads One row is…
General Ledger Journal entries, including opening balances one line; rows sharing a Reference become one entry
Customers / Vendors Customer and vendor records one record
Sales Invoice / Vendor Invoice Invoices with line items one line; rows sharing an Invoice Number become one invoice
Customer Transactions / Vendor Transactions Invoices posted straight to accounts, no catalogue items one line; grouped by Invoice Number

Bank statements and card statements are also in this menu but work completely differently — see CAMT Import and Card Statements.

Permissions. Each screen needs its own permission (import.customer and so on). Committing also needs the permission to create that record type the normal way — Add Customer / Add Vendor, Sales Invoice / Vendor Invoice, Customer Transaction / Vendor Transaction. Only the General Ledger import stands on its import permission alone. If a colleague can open a screen but every row fails when importing, this is why.

How the grid works

Fill the grid, validate, import.

Upload file reads a CSV or XLSX file. The first row must hold the column headers — the column names as the grid shows them (in your interface language) or their technical names such as customernumber. Matching columns are switched on automatically; columns the grid doesn’t know are listed and ignored. Download template gives you an XLSX file with exactly the headers of the columns currently shown — the easiest way to get the headers right. (If the grid already holds rows, they’re in the download too.)

Pasting works like any spreadsheet: click the first cell and paste. The grid grows as needed; Add rows adds more by hand, Clear empties it.

Columns decides what the grid shows. Required columns — marked with * — are always on. Default Columns gives you the usual set, Required Only strips it to the minimum, Select All shows everything available. Switching columns on or off keeps what you’ve already entered.

Validate checks everything without sending anything. Bad cells are outlined in red (hover one to see why), and the problems are listed above the grid — click an entry to jump to its cell. Fixing a cell removes it from the list. Validation checks more than single cells: every row of one document must agree on the header (same customer, date, currency and account), a General Ledger entry must balance and have at least two lines, each GL line needs a debit or a credit, a payment needs its date, amount and account together, and a foreign currency needs an exchange rate.

Import validates again, asks for confirmation, and only sends when everything is clean. The button shows how many documents it will post.

A row of lookup lists sits above the grid — accounts, tax accounts, customers, vendors, services, departments, projects, whichever fit the screen. Select a cell, pick a value from a list, and it’s written into that cell. Right-click a cell for Insert today’s date or Insert next number (GL, invoice or customer/vendor number).

On a keyboard, Shortcuts lists the key combinations. They all use Ctrl + Shift and act on the selected cell:

Keys Gives you
N the next number (GL, invoice, or customer/vendor number)
T today’s date
A / K / L / M an account — general, tax, line, or payment
C / V a customer / a vendor
I a service from your catalogue
D / P a department / a project

Some browsers reserve a few of these for themselves (Chrome on Windows keeps Ctrl + Shift + N and T). The right-click menu and the lookup lists do the same job everywhere.

What goes in the columns

General Ledger — required: Reference, Trans Date, Currency, Account No, Debit, Credit. Commonly used: Department, Description, Source, Memo. Also available: Notes, Exchange Rate, Project Number, Tax Account, Tax Amount.

Every line sharing a Reference becomes one journal entry, and each group must balance — debits equal credits. This is how you load opening balances: one reference, one line per account.

Customers / Vendors — required: Customer Number (or Vendor Number), Name, Currency. Leave the number empty and the next free number is assigned. Then the ordinary record fields: Contact, Street Name, Street Number, City, Zipcode, Country, Phone, Email, Terms, Discount, Credit Limit, Tax Number and more under Select All, including start date, bank details and a second address line.

Street Name and Street Number are deliberately separate. Swiss payment standards need a structured address — the house number in its own field — for QR-bills and payment files. If your spreadsheet has “Bahnhofstrasse 12” in one column, split it before you import, or every payment file you generate for that vendor will be missing its house number.

Sales Invoice / Vendor Invoice — required: Customer Number (or Vendor Number), Invoice Number, Invoice Date, Due Date, Currency, Account, Item Number, Item Description, Quantity, Price. Optional: Description, Tax Included, Discount, Unit, and under Select All things like Exchange Rate, Order Number and Department. Account is the receivables (or payables) account.

Customer / Vendor Transactions — required: Customer Number (or Vendor Number), Invoice Number, Invoice Date, Due Date, Currency, Account, Line Description, Line Amount, Line Account. Use this when the document posts straight to accounts and there’s no catalogue item involved. With a Line Tax Account and no Line Tax Amount, the tax is calculated from the rate; fill in the amount to book exactly that.

A payment can be imported alongside a transaction with Payment Date, Payment Amount and Payment Account (plus optional source, memo and exchange rate). A row may carry only a payment — that’s how a second payment on the same invoice is added.

Formats that trip people up

  • Numbers. Swiss formatting works: 1'250.00 reads as 1250. But 1.250 meaning one thousand two hundred and fifty reads as 1.25 — the last separator is treated as the decimal point. Text that isn’t a number is reported as an error. Export your spreadsheet with plain numbers.
  • Dates. dd.mm.yyyy is the safe choice; yyyy-mm-dd works too. Dates are read day-first, so 03/04/2026 is 3 April; month-first is only used when day-first isn’t a real date (12/31/2026). Dates in a closed period are rejected.
  • Currency must be a currency set up in the dataset. Any currency other than your base currency needs an Exchange Rate — if the column is hidden, validation asks you to show it.
  • Tax Included accepts 1/0, yes/no, true/false (and ja/nein, oui/non).
  • CSV files may be saved as UTF-8 or in Excel’s Windows format — umlauts and accents come through either way. Commas and semicolons both work as separators.

Re-importing, and what can’t be undone

Customers and vendors are matched on their number. A number that already exists updates that record; a new number (or an empty one) creates a new record. The line above the grid tells you how many rows will update existing records. That makes a corrected file safe to re-import.

Invoices, transactions and GL entries are never booked twice. An invoice or transaction whose number already exists for the same customer or vendor is refused, and so is a GL entry whose reference already exists on the same date. Re-importing a file after a partial failure therefore only books what’s missing.

Imported documents are booked immediately — just like posting them by hand — and appear in every report straight away.

There is no undo. No rollback, no “reverse this import”. Correcting a bad import means deleting the records one by one — which the period lock and your deletion settings may not even allow. See Closing the Books.

So: import a handful of rows first. Look at what they produced — open one customer, look at one invoice in the GL Journal. Then import the rest.

When something fails

If every document succeeds, the grid clears and you’re told how many were imported.

If some fail, the ones that succeeded are removed from the grid and only the failed rows stay, each with the reason in the list above the grid. Fix them and press Import again — nothing already booked is sent twice.

Documents are processed one at a time rather than all-or-nothing, so a partial import is a normal outcome, not a broken state. Very large histories are best imported a few thousand rows at a time.