Skip to main content

Import / Export (desktop packages)

Some control rooms run a desktop accounting package with no cloud API to sync against. For them, CleverOps offers a file-based hand-off under Billing → Config → Import / Export: pick your package, then work with its CSV files. For an automatic two-way link instead, use the accounting sync connectors.

You need the Manage billing permission to use this tab.

Pick your package​

The tab branches by package — choose the one you use, and the export (and, in future, import) tools switch to that package's file format:

Export (available now)​

For the selected package you can export customers, stock / equipment items and invoices as import-ready CSV files, and bring them into the package by hand. Each package page covers its file formats and the settings (tax types, ledger account) you must match to your company. Export is one-way — it does not read anything back.

Import​

When a control room first moves onto CleverOps from a desktop package, the useful thing to bring across is master data — the accounts and items you would otherwise re-type — not the ledger. CleverOps is not the book of record, so historical invoices, payments, journals and the chart of accounts stay in the desktop package.

Customers (available)​

Import your existing customers from the package's customer export, or any CSV:

  1. Under a package, open Import customers and choose your CSV file.
  2. CleverOps maps the columns from the header names — check the mapping and adjust any column by hand. For a headerless export, untick First row is a header row and map by column position.
  3. Preview tags every row New, Existing, Duplicate or Invalid. Existing customers are matched on name, email, VAT number or account code and are skipped — so re-running an import is safe.
  4. Confirm to create the new rows only. Nothing is written until you confirm, and a failed row never stops the rest.

You need the Manage customers permission to import.

How the email column is read​

Desktop packages are not strict about their email field, so CleverOps checks it rather than copying it. The preview shows what it will do to each row before you import:

  • A value that is not an address — a surname, a note, anything without an @ — is not imported. The customer is still created, with no billing email, and the preview says so: "DU PREEZ" is not an email address — importing with no email. This is deliberate: a customer showing no email is honest about needing one, whereas a customer showing DU PREEZ looks contactable and then fails every time you try to email them.
  • Several addresses in one field (accounts@acme.co.za; carol@acme.co.za) are split. The first becomes the customer's billing email; the rest are saved as contacts on that customer, tagged for invoices, quotes, statements and jobs so they are automatically CC'd on everything the combined field was aimed at. The preview says 3 addresses in one field — extra ones become contacts.

Duplicate matching uses the address CleverOps would actually store, so a row with a@acme.co.za; b@acme.co.za and a later row with plain a@acme.co.za are recognised as the same customer.

After a large import, sort the customer list by email to see who arrived without one — those accounts need an address collected before they can be invoiced by email.

Stock / equipment items (available)​

Import your stock master into the service equipment catalog the same way: choose the package's inventory export, map the columns (item name, stock code, description, selling and cost prices), preview and confirm. Prices arrive in rands and are stored as cents; if only an exclusive or inclusive price is given, the other is worked out at 15% VAT. Items are matched on stock code (SKU) and skipped if they already exist — items without a code always import. You need the Manage service permission.

Opening balances (available)​

When you move onto CleverOps mid-life, seed each customer's outstanding balance so their statement is right from day one. Under Import opening balances (shown only to holders of the Credit notes, voids & adjustments capability — the Credits and voids role, owners and admins), upload a CSV with each customer's account code (or name) and their balance, pick the cut-over date, and preview — rows are matched to customers that already exist, and a customer who already has an opening balance is skipped. Confirm to post one opening-balance line per customer (a positive amount means they owe you, a negative amount means they are in credit), dated at the cut-over.

This is the pragmatic migration shape — a single carry-forward figure per customer, not each historical invoice, so the whole balance ages from the cut-over date rather than per original invoice. It never counts as new revenue and is excluded from any cloud accounting sync (the balance already exists in the other ledger), so it can't double-count. You need the Manage billing permission.

Not imported​

Suppliers (CleverOps keeps no supplier master) and the full ledger / transaction history — individual historical invoices, payments, journals and the chart of accounts — stay in the desktop package, which remains your book of record. Only the outstanding balance carries across, via the opening-balance import above.