POS data migration guide
Import products from Excel or CSV into a POS
Move clean data, not old mistakes. This guide covers file structure, field checks, a controlled trial import and the reconciliation needed before a shop changes systems.
What Posnic actually tested
For the published v1.3.0 source, seven shipped CSV templates passed 6/6 tests under the application's CSV row parser.
Structure
Each nonblank row had the same number of fields as its header, including quoted values containing commas.
Usable examples
Every template contained a worked row and no entirely blank record that could become an empty import.
Safe sample data
Example email addresses used reserved example domains and known leftover test strings were absent.
Pinned source: b531ef4 · Read the six template tests
The seven supplied CSV templates
Start with the file downloaded from the same Posnic release you will use. Keep its header spelling and column order unchanged.
| Template | Fields | Important preparation check |
|---|---|---|
items.csv | Name, item ID, barcode, category, supplier, discounts, HSN, tax, MRP, cost, selling price, quantity, unit and sort order. | Make item IDs and barcodes unique; decide whether tax is inclusive or exclusive; confirm cost and selling-price units. |
categories.csv | Name, fixed discount, percentage discount and description. | Create categories before items and avoid near-duplicates such as "Soft Drink" and "Soft Drinks". |
customerCategory.csv | Name and description. | Use categories that support a real pricing, credit or reporting workflow. |
customers.csv | Name, phone, email and address. | Normalize phone numbers and decide which field is the duplicate-matching key. |
suppliers.csv | Name, phone, email, address, country, state and city. | Use supplier names that exactly match the values referenced from item rows. |
employees.csv | ID, name, phone, email, address, country, state and city. | Use stable employee IDs; assign permissions separately after import. |
expenses.csv | Amount, type, category, recipient, approver and description. | Confirm the opening date range and debit/credit convention before including historical records. |
Prepare the spreadsheet before export
One row per sellable unit
Represent each size, colour or pack with its own item ID when it has a separate barcode, price or stock quantity.
Use plain values
Replace formulas with their calculated values. Remove merged cells, subtotals, comments, hidden headings and decorative blank rows.
Protect identifiers
Format barcodes, item IDs and phone numbers as text before CSV export so leading zeroes and long digits are preserved.
Standardise names
Choose one spelling for every category, supplier, unit and tax name. A trailing space can create a separate value.
Resolve duplicates
Check duplicate barcodes and item IDs, then decide which row is authoritative instead of importing both.
Choose an encoding
Export UTF-8 CSV and reopen the saved file to verify accented or non-Latin names before importing.
Controlled import workflow
- Freeze the source. Record the extraction time and stop parallel edits while the final file is prepared.
- Keep the original. Store an untouched export from the old system plus a human-readable report of item, customer and supplier totals.
- Back up Posnic. Create a recovery point before importing or changing an existing shop. See the backup and restore checklist.
- Import dependencies first. Load categories and suppliers before items when item rows refer to their names.
- Use a representative trial. Include taxed and untaxed items, discounts, long names, non-ASCII text, leading-zero barcodes, zero stock and decimal prices.
- Read every result. Save import warnings and rejected-row details. Correct the source file rather than patching many records manually.
- Reconcile the trial. Compare source and Posnic counts, open individual records and run a sale, return and stock adjustment.
- Load the approved full file. Repeat the same reconciliation and record who approved the cutover.
Reconciliation that catches quiet errors
| Check | Compare | Failure to investigate |
|---|---|---|
| Record counts | Source rows, accepted rows, rejected rows and records visible in Posnic. | The numbers do not reconcile exactly. |
| Identifiers | Unique item IDs, barcode count and leading-zero examples. | Duplicates, scientific notation or shortened digits. |
| Commercial values | Cost, MRP, selling price, discount and tax mode for a sample from every category. | Decimal shifts, tax applied twice or inclusive tax treated as exclusive. |
| Opening stock | Total quantity and a sample of zero, negative, fractional and high-quantity items. | Pack quantities imported as individual units or unexpected rounding. |
| Relationships | Item category and supplier assignments. | Unassigned records caused by spelling or whitespace differences. |
| Till workflow | Search, scan, receipt total, payment, return and resulting stock movement. | An item exists but cannot be sold or changes stock incorrectly. |
Common questions
Can Excel data be imported into Posnic?
Prepare the worksheet as CSV using Posnic's supplied header names and order. Back up first, import a small representative batch and reconcile it before loading the full dataset.
Should old transaction history be imported?
Only when the supported importer and a business requirement justify it. Many migrations preserve the old system or export as a read-only archive, then bring clean master data and verified opening balances into the new POS.
What should happen after import?
Verify counts and samples, complete a test sale and return, check tax and stock movement, print or preview a receipt, close the test shift and retain the reconciliation record.