Core
CSV import
Bring your existing inventory in. Auto-mapping for English + Swahili headers, validation, dry-run preview.
Switching from another POS? You don't have to retype every product. Omnix's CSV import understands almost any header shape — English, Swahili, abbreviated, or your old system's quirks.
Get the template
Inventory → Import → Download Template. The CSV has these columns: - name, sku, barcode, unit, buying_price, selling_price, initial_stock, reorder_level, tax_rate
Required: name, buying_price, selling_price. Everything else is optional.
Auto-map
Drop your existing CSV in even if the headers don't match the template. Omnix auto-maps:
| You wrote | Maps to | |---|---| | name / product / item / Bidhaa / jina | name | | buy / cost / wholesale / Bei ya Kununua / gharama | buying_price | | sell / price / retail / Bei ya Kuuza / bei | selling_price | | qty / quantity / stock / Idadi / Akiba | initial_stock | | sku / code / Msimbo | sku | | ean / upc / barcode | barcode | | unit / uom / pack / Kipimo | unit | | tax / vat / Ushuru | tax_rate | | reorder / par / min_stock | reorder_level | | category / type / Aina | category | | notes / description / Maelezo | description |
Casing, whitespace, punctuation are normalised — Bei ya Kuuza!, bei_ya_kuuza, BEI YA KUUZA all map identically.
Dry-run preview
After upload, Omnix shows a row-by-row preview with errors highlighted (missing fields, invalid prices, duplicate SKUs). Nothing writes to the database until you click Import. You can fix the CSV and re-upload as many times as you need.
Errors you might hit
- Invalid buying_price: empty cell or non-numeric. Required.
- Missing required columns: name + buying + selling are mandatory; the rest are optional. The error message lists which canonical columns we couldn't find.
- Unrecognised columns: silently dropped with a warning toast. If you wanted us to import them, rename to a known synonym.
After import
Each imported product becomes a single row in the products table with:
- a new UUID
- buying_price + selling_price written to the default price list
- initial_stock written as one batch dated today
- tax_rate defaulting to 16% if not provided
You can immediately ring sales with the imported stock.
See also
- Receiving stock — for ongoing stock additions
- Inventory — managing what's already in
Something missing?
If a step is wrong or unclear, tell us — we update the docs when a real question comes in. Book a demo for a walkthrough, or email support@omnix.co.ke.
More in Core
Point of sale
The full checkout workflow — search, scan, holds, returns, split payments, M-Pesa, card, and the customer display.
Inventory & variants
Add products, manage variants (sizes and weights), bulk-import from CSV, run stock takes, and track batches and expiry.
Cloud backup & restore
Turn on encrypted offsite backups, schedule them, and restore your database on a new machine.
Receiving stock
Manual receive vs PO-receive vs reverse-GRN. How batches get created, when stock_qty updates, what each path means for your books.