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.

Evidence boundary: the actual bulk import was not executed in this evidence run. These checks prove the seven template files are structurally aligned and usable as examples; they do not prove every shop dataset will import cleanly.

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.

Templates and fields shipped with Posnic v1.3.0
TemplateFieldsImportant preparation check
items.csvName, 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.csvName, fixed discount, percentage discount and description.Create categories before items and avoid near-duplicates such as "Soft Drink" and "Soft Drinks".
customerCategory.csvName and description.Use categories that support a real pricing, credit or reporting workflow.
customers.csvName, phone, email and address.Normalize phone numbers and decide which field is the duplicate-matching key.
suppliers.csvName, phone, email, address, country, state and city.Use supplier names that exactly match the values referenced from item rows.
employees.csvID, name, phone, email, address, country, state and city.Use stable employee IDs; assign permissions separately after import.
expenses.csvAmount, 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

  1. Freeze the source. Record the extraction time and stop parallel edits while the final file is prepared.
  2. Keep the original. Store an untouched export from the old system plus a human-readable report of item, customer and supplier totals.
  3. Back up Posnic. Create a recovery point before importing or changing an existing shop. See the backup and restore checklist.
  4. Import dependencies first. Load categories and suppliers before items when item rows refer to their names.
  5. Use a representative trial. Include taxed and untaxed items, discounts, long names, non-ASCII text, leading-zero barcodes, zero stock and decimal prices.
  6. Read every result. Save import warnings and rejected-row details. Correct the source file rather than patching many records manually.
  7. Reconcile the trial. Compare source and Posnic counts, open individual records and run a sale, return and stock adjustment.
  8. Load the approved full file. Repeat the same reconciliation and record who approved the cutover.

Reconciliation that catches quiet errors

Minimum checks before the imported shop goes live
CheckCompareFailure to investigate
Record countsSource rows, accepted rows, rejected rows and records visible in Posnic.The numbers do not reconcile exactly.
IdentifiersUnique item IDs, barcode count and leading-zero examples.Duplicates, scientific notation or shortened digits.
Commercial valuesCost, 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 stockTotal quantity and a sample of zero, negative, fractional and high-quantity items.Pack quantities imported as individual units or unexpected rounding.
RelationshipsItem category and supplier assignments.Unassigned records caused by spelling or whitespace differences.
Till workflowSearch, 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.