Skip to main content

Data Import & Onboarding

If you are migrating from another system — or setting up a new tenant — the Data Import tool lets you bulk-load your master data and opening balances without entering records one by one.

Go to Settings → System → Data Import to access the tool.


How it works

Every entity follows the same three-step flow:

  1. Download the template — an Excel file with column headers, field notes in row 2, and sample rows
  2. Fill in your data — replace the sample rows with your real data; do not change the headers in row 1
  3. Upload and review — the system validates every row and shows a colour-coded result table before you apply

Only rows that pass validation are imported. Rows with errors or duplicates are skipped and shown with a specific error message — you can correct the file and re-upload.


What you can import

Master data

Import master data first — transactions reference these records.

EntityKey fieldsNotes
CustomersName, PhoneName must be unique
VendorsName, Type, PhoneType must be: Fuel · Maintenance · Border Agent · Spare Parts · Subcontractor · Other
DriversName, License Number, License Expiry, Phone, StatusLicense Expiry in YYYY-MM-DD; Status: Active · On Trip · On Leave · Suspended
FleetReg Number, Type, Make, ModelType: Truck · Trailer
RoutesName, Origin, Destination, Distance (km), Estimated DaysCheckpoints optional — semicolon-separated (e.g. Mikumi;Iringa;Mbeya)
Chart of AccountsAccount No, Name, Category, Type, Debit/CreditSupplements the Tanzania Standard CoA — existing accounts are never overwritten
ItemsCode, Name, Type, Unit, Selling Price, VAT AppliedType: Product · Service; VAT Applied: true · false

Transactions (migration)

Use these to carry over open records from your previous system.

EntityWhat it createsNotes
Customer InvoicesInvoiceData recordsCustomer Name must match an existing customer — import Customers first
Vendor InvoicesPurchaseInvoice recordsVendor Name must match an existing vendor — import Vendors first
Opening BalancesA single Draft journal entryAll rows become lines in one journal — review and post it in Accounting → Journal Entries

Validation rules

The system checks each row before applying:

CheckWhat fails
Required fieldsRow with an empty required column is rejected
Enum valuesValue not in the allowed list (e.g. wrong Status) is rejected
Numeric fieldsNon-numeric value where a number is expected
Date formatDate not in YYYY-MM-DD format
Boolean fieldsValue that is not true or false
Lookup fieldsCustomer Name / Vendor Name / Account No not found in existing records
DuplicatesRecord with the same key already in the system — skipped with a warning
Batch duplicatesTwo rows in the same file with the same key — the second one is an error

Opening balances

Opening balances represent your GL account balances at the point you switch to this system. They are imported differently from other entities:

  • Each row in the template becomes one journal line
  • All lines are combined into a single Draft journal entry named Opening Balances Import
  • The journal is created in Draft status — you can review it in Accounting → Journal Entries
  • Check that total Debits equal total Credits (the review screen shows both totals)
  • When satisfied, click Post to lock the opening balances into the General Ledger
Balance your opening journal

If your opening balances do not balance (total debits ≠ total credits), investigate before posting. Common causes: missing retained earnings account, transfers or owner equity not accounted for.


Follow this sequence to avoid lookup errors between entities:

1. Customers
2. Vendors
3. Drivers
4. Fleet
5. Routes
6. Chart of Accounts (or use Tanzania Standard CoA seed)
7. Items
8. Opening Balances → review draft journal → post
9. Customer Invoices (outstanding / pending invoices)
10. Vendor Invoices (unpaid vendor bills)

Customer invoices — migration notes

When migrating outstanding invoices:

  • Invoice No is optional — if blank, one is auto-generated (IMP-{timestamp}-{row})
  • Amount is the subtotal before VAT
  • VAT Rate (%) defaults to 18 if left blank; enter 0 for exempt or zero-rated services
  • Status: use Sent for unpaid invoices the customer is aware of; Draft for invoices not yet sent; Paid for historical invoices you want in the system for records
  • The import creates a single-line invoice — you can open any imported invoice and edit it for multiple lines

Vendor invoices — migration notes

  • Amount is the subtotal before VAT
  • VAT Applied: enter true if the vendor charged VAT; false otherwise
  • Status: Approved for bills you have already verified; Draft for unreviewed bills; Paid for settled bills
  • Approved bills are visible in AP Aging reports

Limits and exclusions

The import tool does not support:

  • Historical Jobs or Trips — operational history cannot be reconstructed from a spreadsheet
  • Payments linked to specific invoices — mark invoices as Paid in the invoice import instead
  • GL Entries directly — use the Opening Balances journal flow to set GL balances

There is no hard row limit per file, but very large files (10 000+ rows) may be slow to validate in the browser. For large datasets, split into batches of 2 000–3 000 rows per file.