Move data from another POS

Move products, customers, suppliers, stock and transaction history from your old POS into one Bakasir outlet, check the result per outlet, then finalize or roll back.

The Migration Engine moves data from your old POS into Bakasir, with checks before and after. One migration fills one outlet. If you have two or more databases (for example one per store), run one migration for each outlet, and the same product is merged automatically.

Goal: the data of your old POS sits in the right Bakasir outlet and the numbers have been reconciled.

Nothing is written to your store until you hold the apply button. Before that you can review every problem and rehearse the import. After applying you can still roll everything back until you finalize.

Before you start

  • You are signed in to the Business Portal as the Owner. Other roles can only view the list of migrations, not start or change one.
  • You have exported the data from your old POS. Products are required. Customers, suppliers and stock are recommended. Bakasir recognizes exports from Moka, Qasir, Olsera, Majoo, Pawoon, Loyverse and others.
  • Accepted formats: .csv, .xlsx, .xls, .zip, .sql, .sqlite and .db. You can upload several files at once. Keep the original file names. One file can be up to 2 GB, and large files are sent in parts and can continue if your connection drops.
  • Decide the target outlet. If it does not exist yet, you can create it in the first step. A new outlet is billed like any other outlet. See Settings. The Demo outlet cannot receive a migration.
  • Recommended: run a backup first in Settings → Backup & Restore.

Step by step

Open the Migration Engine

Open Catalog → Import Products and click Move from another POS in the banner at the top of the page. The same button is also in Settings → Backup & Restore.

You should see the Migration Engine page with a note that nothing is written to the store until you press Apply, a Start a migration panel, and the list of earlier Migrations.

Choose the target outlet

This is a required first step. Under Target outlet, choose the outlet that receives this data, or choose Create a new outlet and enter a New outlet name. Click Start a new migration.

One migration fills one outlet. A second database for another outlet needs its own migration. The button only becomes active once an outlet is chosen or named.

Upload your files

In the Upload step, drop files on Drop files here or click Choose files. If you know your old POS, choose it under Previous POS. This is optional: Bakasir detects the source automatically, and choosing it helps when detection is unsure and shows how to export the right files.

Watch the state of each file (Uploading, Received, Read, Failed). Click Try again on a file that failed, then click Scan files.

Check the scan result

In the Scan step you see Detected POS (or Unknown POS, and you can still continue) and a Files found table with the contents and row count of each file. If you see Required files are missing or Recommended files are missing, click Add more files or Back to upload. When it looks right, click Continue to mapping.

Map columns and warehouses

In the Mapping step, check how each column of the old POS matches a Bakasir field. Green means a confident match, so review the yellow and red ones. For a file Bakasir does not recognize, choose its contents under This file contains, or choose Ignore this file. Click Save mapping to keep your choices.

The AI suggestions button asks an AI to suggest matches for columns Bakasir does not recognize. The AI only receives the column names, example values from those columns and the list of Bakasir fields (sent to OpenRouter), never the whole file. You must agree for each migration and can Withdraw consent at any time. It is only available when Bakasir has turned it on.

In the Outlets and values panel, every warehouse in the old data must be mapped to exactly one outlet. Nothing is matched by name, so choose each one yourself. A warehouse you have not chosen yet is marked Required: choose an outlet.

When everything is right, click Save and check data.

Review the problems

In the Problems step, Bakasir checks the data and groups what it found:

  • Blocking: must be fixed before applying.
  • Warning: imported, but please review.
  • Info: for your information.

Filter by severity and by type of problem, read the How to fix column, and click Download CSV to take the list into Excel. If something is blocking, click Back to mapping, fix it, and check again. When it is clean, click Continue to preview.

Rehearse the import and review the result per outlet

In the Preview step, click Rehearse the import. This is only a rehearsal and writes nothing to the store. You will see:

  • Migration mode: Merge with existing data (existing Bakasir data is kept, matching records are linked and new ones are added) or Replace all data. See Replace mode.
  • Result per outlet: what each outlet will receive, meaning sales revenue, purchase value and stock compared with the source, plus the reason for every row that is not imported. Each reason is marked Explained or Blocks apply. Apply stays blocked while a reason is marked as blocking.
  • Repeated codes and numbers in the file: product codes that appear more than once (usually a deleted product and its replacement) and documents that reuse a number.
  • Products with the same code but different names: see Same code, different name.
  • What will happen: a table of rows to Create, Link to existing, Skip and Reject for each kind of data, plus a Preview of the result.
  • This data will not be moved: the list of things that do not come along. Tick I understand this data will not be imported into Bakasir to continue.

If you change the mapping, click Rehearse again.

Apply

Still in the Preview step, hold the Hold to apply the migration button until it fills. The button is only active when nothing is blocking, your name choices are saved and you ticked the statement about data that does not come along.

Follow the progress in the Apply step. If the import stops halfway, hold the apply button again to continue.

Check the reconciliation, then finalize or roll back

In the Apply step, the Reconciliation report compares the numbers of your old POS with Bakasir. The status is Everything matches, Imported with differences to review or Some checks failed. The checks are made per outlet ("Checks for" the outlet name): document count, document value, document lines, stock and inventory value, outlet prices, and rows not imported with the reason. The Difference and Result (Match, Review, Failed) columns show what you need to look at.

Then choose in the Finalize or roll back panel:

  • Finalize if the numbers are right. Finalizing is permanent and cannot be rolled back. If some data did not come along, tick its statement first.
  • Roll back if something is wrong. Type the store name to confirm. Everything this migration added is removed, and the status becomes Rolled back.

Rules across outlets

  • The same product is merged. Products are matched by the exact same code (SKU or barcode), ignoring upper and lower case. The same code means one product, with stock counted per outlet. The product name comes from the migration that was imported first.
  • Outlet prices. When a price in the source differs from the general price, the difference is saved as an outlet price (the Result per outlet panel states how many). See Prices per outlet.
  • Shared data. Categories and brands are merged by name. Customers are matched by phone or email, and suppliers by code or name. Matching records are linked (the Link to existing column), not duplicated.
  • History. Sales with their payments, purchases and stock adjustments are moved when they are in your files.
  • Staff. Staff from the migration are pinned to the target outlet.

Document numbers start with the outlet code

The numbers of sales, purchases and stock adjustments from the old POS get the Store code of the target outlet and a hyphen in front. For example, number SL_1234 in an outlet with code TOKOB becomes TOKOB-SL_1234. The original number from the old POS is stored on the document as an external reference. The prefix stops two outlets that have the same receipt number from colliding, and the rule that numbers are unique per business does not change.

If a number is repeated inside one file, the second document gets the suffix ~2. If a number is already used by another document in Bakasir, the row is rejected with the reason Document number already used by another document.

Same code, different name

When a product already exists in Bakasir with the same code but a very different name, the Products with the same code but different names panel shows a table: Code, Existing name, Name in this file and Similarity. In the Name to keep column choose Keep the existing name, Use the name in this file or Write my own. Click Save name choices. Without a choice, the existing name stays.

Replace mode

Replace all data deletes all business data of the store (products, customers, suppliers, sales, purchases, expenses and staff) and refills it exactly from the migration file. Existing staff are deactivated. Before applying, Bakasir takes an automatic backup. The Owner account, settings, integrations and subscription stay, and the business and store names follow the file.

This migration cannot be undone with Roll back. To go back, restore the "pre-migration-replace" backup in Settings → Backup & Restore. Hold the Hold to replace the data button to apply it.

The mode is not available when another migration has already been applied in your business, or when other outlets already hold data. For a business with several outlets, use Merge with existing data.

Data that is not moved

When it exists in your source, the following is not moved and is listed before you apply: extra barcodes (Bakasir keeps one code per product), multiple units and unit conversions, modifiers and menu add-ons, recipes and ingredients, service charges, serial numbers, and other tables such as logs, translations and old app settings. Set up what you need after the migration, for example in Products.

How long files are kept

After a migration is Finalized or Rolled back, its uploaded files and working data are deleted automatically 7 days later. A migration that sits idle for 14 days in the Uploading, Ready to map, Checked, Rehearsed or Failed status is deleted entirely. The store data that was already imported is not deleted. Download the problem list (Download CSV) or note down the reconciliation report you need before the time runs out.

Common mistakes and how to fix them

Tips

  • Start with the outlet that has the most complete data. Its names are used for the same products in the next outlets.
  • Check the numbers before you finalize. Compare revenue, purchase value and inventory value in the reconciliation report with the reports of your old POS.
  • The same file twice is safe. Documents already imported into that outlet are skipped with the reason Already imported into this outlet.

Next steps

How is this guide?

Last updated on