language
theme
WhatsApp +7 701 960 13 11
//Migration · September 1, 2026 · 12 min read

Migrating a Customer Database from Excel to Bitrix24: A Guide for Kazakhstan

A step-by-step migration of a customer database from Excel to Bitrix24 for companies in Kazakhstan: preparing the file, BIN and TOO details in the requisites, duplicates, rollback — and what an import never carries over.

A customer database in Excel has one unpleasant property: it works exactly as long as only one person works with it. After that you get a file called “Database_current_v3_FINAL”, every salesperson keeps a private list on their phone, the same TOO (an LLP, the standard Kazakhstani limited-liability company) lives in three rows with three different phone numbers, and the “Customer” column mixes personal names, legal entity names and notes like “call after lunch”. The file has no revision history, no access permissions, no link between a company and its contact person and no reminders — which is exactly why people move off it. The decision is usually made not out of love for automation, but after the same customer gets called twice in one week by two different salespeople.

What follows is what a move to Bitrix24 looks like from the inside: what actually transfers and what stays in the old file forever; how to prepare the spreadsheet so the import doesn’t turn phone numbers into scientific notation and a twelve-digit BIN (the business identification number every Kazakhstani legal entity has) into an eleven-digit one; in what order to load companies, contacts and deals so that they end up linked to each other; and what to check after the upload. The main point up front: Bitrix24 has no built-in “undo import” button, so all of your insurance is put in place before you click the button, not after.

The short version, if you don’t have time for the whole thing. 1) Decide where the data goes: TOOs and IEs (individual entrepreneurs, Kazakhstan’s sole-proprietor form) into companies, private individuals into contacts — you never dump a working database in as leads. 2) Download the CSV template from your own portal, and turn on the requisites import option BEFORE you download it. 3) Clean the file up: phone numbers in a single +7 7XX format, BIN and IIN as text, exactly one header row, formulas pasted as values, UTF-8 encoding. 4) Run a pilot on the twenty hardest rows and open the records with your own eyes. 5) Add a batch-tag column and load in strict order: companies, then contacts, then deals. 6) Reconcile the number of records under the batch filter against the number of rows in the file, and check twenty records by hand.

What moves to Bitrix24 and what stays in Excel forever

  • Fields move. Company name, personal name, phone numbers, emails, city, segment, deal amount and stage, the assigned owner, custom fields — everything that physically sits in a cell.
  • Requisites move. BIN and IIN, bank details and addresses are loaded from the same file, but through a separate mechanism — with the requisites import option enabled and a set of service columns.
  • Communication history does not move. The import creates a record with fields, but it does not create a timeline: there will be no calls, emails, chats, comments or activities in it. The built-in export-import doesn’t carry history between two Bitrix24 portals either — for that, the Market has dedicated migration apps (the “Import, export” category), and some of them can move comments, mentions and activities. From Excel the history won’t arrive under any circumstances: it simply isn’t there.
  • Files and message threads do not move. Contracts in a folder on a drive and WhatsApp conversations stay where they are. At best, put a short text summary into a comment or a custom field called “History before the move”.
  • Dates do not arrive the way they look in the file. One case is documented officially: for deals, the closing date is replaced with the upload date, and the workaround from that same help article is to import the real date into a custom field and copy it into the system field with an automation rule. Don’t guess about the other dates: run a five-row pilot and see exactly what lands in the record. Only a REST import is guaranteed to preserve the original creation dates and authors.
Diagram of migrating a customer database from Excel to Bitrix24: file preparation, import, verification
The data path: source spreadsheet, cleanup and normalisation, CSV, field mapping, records in the CRM

Where to load the data: leads, contacts, companies or deals

The most expensive mistake is made before the file is even opened: most often the entire database is dumped in as leads, and the next morning the sales team gets thousands of unprocessed enquiries, a red counter and no way to work at all. If the difference between a lead, a contact and a deal still sounds abstract, look into the glossary, and build your pipeline and its stages before the import — how to set one up from scratch. A stage that doesn’t exist in the portal will not appear out of the file.

  • A lead is an unprocessed inbound enquiry, not an existing customer. You don’t load an entire database in as leads.
  • Companies — TOOs and IEs together with their requisites: BIN, address, bank details.
  • Contacts — private individuals and the contact people at companies. With retail customers from Kaspi, decide in advance whether you need them in the CRM at all: if the store is later connected to the portal through the Kaspi integration, orders will start arriving on their own, and that same retail base loaded from Excel will give you a second set of records.
  • Deals — only for real, live negotiations. A just-in-case deal for every customer turns the pipeline into a landfill, and from then on your conversion rate is calculated on garbage.

Four ways to migrate: CSV, a Market app, the REST API and 1C exchange

The built-in import covers most small and mid-sized business needs, and that’s where you should start. Market apps are worth a look when the move is a standard one — from a well-known CRM (there’s a separate walkthrough of migrating from amoCRM for that scenario) or from portal to portal. If what you have is XLSX, the rule of thumb is simple: the free “Import from Excel” app accepts XLS and XLSX without re-saving and can build a linked company, contact and deal out of a single row — something the built-in import fundamentally cannot do. In exchange, you hand a third-party app access to your entire database and accept its field-mapping logic, so the first run is done on a test batch of twenty rows, exactly as with CSV. REST is what you need when there is a lot of data, the relationships are complex, or it matters that real creation dates and authors are preserved: the import methods have createdTime and createdBy parameters, and they don’t trigger automation rules or business processes.

MethodWhen it fitsLimitation
Built-in CSV importA flat table: companies, contacts, requisites, simple deals. The portal administrator can do it in an eveningCSV only; the import is designed to create new items — you cannot mass-update existing records from a file, and the only record it can change is one the import recognises as a duplicate, and only in the way set in the duplicate control block; every record is dated the day of the upload, and there is no rollback button
A Market appA standard scenario: migration from a specific CRM or between two portals; XLS and XLSX without conversion; a linked company, contact and deal from a single rowSomeone else’s field-mapping logic, third-party access to your whole database, behaviour that has to be verified with a trial run
REST API (import methods)Large volumes, complex relationships, preserving real dates and authors (createdTime, createdBy), repeat runs in which the script itself decides what to create and what to updateYou need a developer and a key with broad permissions; the import methods only create items, updating is a separate method, otherwise a repeat run breeds duplicates; the batch import accepts up to 20 items per request and requires them in ascending order of creation date; a bug in the script propagates across the whole database instantly
1C exchangeThe database actually lives in 1C, and the Excel file is just an export of itThis is no longer an import but a project of its own: in Kazakhstani configurations the mapping almost always needs custom work
Ways to move a customer database from Excel to Bitrix24, and the limitations of each
Comparison table of migration methods: CSV import, a Market app, the REST API and 1C exchange
The more complex the data and the more important it is to preserve dates and relationships, the further you move from plain CSV

How the built-in CSV import works

The button lives in the section settings. For contacts that’s CRM, Clients, Contacts, the gear icon, “Import from CSV with custom settings”. For companies the item is called “Import company” (in some portal versions, “Import companies”), for deals it’s “Import deals”, and leads work the same way; check the exact wording in the gear menu of your own portal, because it has changed from version to version. Invoices, quotes and smart processes can only be imported in “List” view mode — in Kanban there is simply no import item. If you can’t see the item, there are two possible reasons. The first is permissions: importing can be done by an administrator or by an employee whose CRM access role has been granted the import permission. The second is your plan: the CRM permission role model itself isn’t available on every plan, the basic manager role has neither import, nor export, nor delete, and export — a handy way to grab a sample file — isn’t available everywhere either. Before you go hunting for a bug, check the description of your plan.

On the import page you first set the file parameters: “Data file encoding” (auto-detect by default; if the preview shows garbled characters, set UTF-8 or Windows-1251), “Column separator” (comma, semicolon or colon — the character has to match what is actually in the file) and the “Use the first row of the file for field names” checkbox. Then the mapping step opens: CRM record fields on the left, file columns on the right. Auto-mapping works by matching names; anything unmapped is fixed by hand. The practical conclusion: don’t invent your own column structure — download the import template straight from your own portal’s page, because it will contain the exact field names of your record, including the custom fields you have already created. The second way to get a reference file is to create one record by hand, fill in every field you need, and export the section to CSV.

The built-in CRM import accepts CSV only: XLSX cannot be uploaded directly, even though the Bitrix24 export can produce both CSV and Excel. Turn on the requisites import option BEFORE you download the template, otherwise it simply won’t contain the columns for BIN and addresses. Official help articles: importing CRM items without requisites, importing contacts and companies with requisites and importing linked companies, contacts and deals. For Kazakhstani portals the help is the same: helpdesk.bitrix24.kz redirects to it.

Preparing the file: where Excel quietly corrupts your data

Almost all of the pain of a real migration is in preparing the file, not in the import itself. And it isn’t Bitrix24 that corrupts the data — it’s Excel, silently, at the moment you save. Work on a copy: don’t touch the “as received” sheet at all, keep a sheet with service columns next to it, and a separate “for import” sheet — only the columns you need, values only, exactly one header row.

  • Encoding and separator. The ordinary “CSV (comma delimited)” option in a Russian locale writes the file in Windows-1251 with semicolons inside it, and Cyrillic turns into garbage if a different encoding is selected in the wizard. There are three fixes: pick the right encoding at the import step; save from Excel itself as “CSV UTF-8 (comma delimited)” — a separate entry in the format list since Excel 2016; or re-save the file as UTF-8 in Notepad++ or VS Code (an export from Google Sheets works too). Open the finished CSV in a text editor and look at what the separator actually is — it takes ten seconds.
  • Phone numbers. A leading plus in a cell is read by Excel as a formula and swallowed, a long number turns into 7.70113E+10, and the leading zero of a landline number gets cut off. Convert the phone column to text format BEFORE pasting the data and normalise it with a formula, not by eye. Anything that doesn’t parse automatically goes into a “check this” column rather than being guessed at.
  • BIN, IIN and other identifiers. Text format only. The first two digits of a BIN are the year the legal entity was registered; for an IIN (the individual identification number of a private person) they are the person’s year of birth, so everyone registered or born in 2000–2009 has an identifier starting with a zero (for those born from 2010 onwards the first digit is a one). Excel strips that zero irreversibly, and a twelve-digit BIN becomes an eleven-digit one. The integrity check is simple — string length: a BIN and an IIN are exactly twelve characters.
  • Amounts and currency. Excel thousands separators (1 250 000, including the non-breaking space) go into the CSV as they are and break the amount field — leave a clean number. Put the currency in a separate column: on Kazakhstani portals the portal currency has to be KZT, otherwise deals will quietly arrive in the default currency and your revenue report will be wrong.
  • Dates. What ends up in the CSV is what you see on screen, so a short format leaves with a two-digit year, and a “date” typed with an extra space turns out to be text. Normalise the column with a separate formula and paste it as values.
  • Table geometry. Merged cells keep the value only in the first row of the block, hidden and filtered rows still end up in the CSV, and only the active sheet is saved into the CSV. Add to that multi-level headers, “Total” rows and subheading separators — the importer expects one header row and uniform data after it.
  • Invisible junk. Non-breaking spaces from copy-paste are not removed by TRIM, and they are the single most common reason an obvious duplicate can’t be found. Line breaks inside a cell (Alt+Enter) are a separate CSV killer: one record easily turns into several broken rows. They usually hide in the “Address” and “Comment” columns.
  • Formulas and errors. Before the export, copy all the content and paste it as values, otherwise “#N/A” and “#VALUE!” will land in your records instead of data, and the file will still depend on workbooks you no longer have.
  • Duplicates inside the file itself. You have to look for them not by company name but by normalised keys: digits of the phone number only, email in lower case, BIN as text, name stripped of the legal form and the quotation marks. The order of reliability is phone, email, BIN, and only as a last resort the name. The master record in a group should not be the first row you come across but the fullest and most recent one, and everything unique from the rest is collected into a comment. And don’t delete duplicates from the source file — flag them: six months from now someone will definitely ask where those records went.

Kazakhstan specifics: BIN, TOO and IE, +7 7XX phone numbers, Kazakh names

Phone numbers in a Kazakhstani database almost always exist in five or six spellings at once: 8 701, +7 701, 87172, 7 (727), a number with an extension and a number with “accounting” typed next to it. Exactly how Bitrix24 compares such numbers when it searches for duplicates isn’t described in the documentation: the portal normalises some formats itself and others not, and the result depends on the portal’s country and on how the number was written. You can’t rely on it — bring numbers to a single +7 7XX XXX XX XX format while you are still in Excel. It also determines whether your telephony or WhatsApp will attach an incoming call to the right record.

  • Legal entity names. TOO “Romashka”, Romashka TOO, too romashka and a version without quotation marks turn up in the same column all the time, and sometimes a Latin letter is sitting inside a word, visually indistinguishable from its Cyrillic twin. Bring them to one form: legal form first, one type of quotation mark, no Latin characters.
  • Personal names. A single cell can hold a job title, initials and two people at once. Kazakh names are spelled sometimes as Мұхтар and sometimes as Мухтар, and Nurlan Serikuly is a given name plus a patronymic, not a surname.
  • The safety column. Parse such rows with a formula, but keep a “name exactly as it was in the file” column and load it into a comment — it is your only protection against a bad parse.

BIN and IIN in Bitrix24 don’t live in a basic company field but in the requisites — and that is fundamental: without requisites a record is useless for an invoice or a contract. The requisites template for Kazakhstan is chosen in the record itself, in the “Requisites” field, and the list of available templates is configured under CRM, More, Settings, CRM settings, Requisite templates. In the file, requisites have their own service columns holding the IDs of the requisite, the template and the country, and the address has to be split into separate columns: street, office, city, region, postal code. Don’t copy specific ID values out of someone else’s article — create one company with Kazakhstani requisites by hand, export the section to CSV and see which numbers you have. Check separately which set of fields your portal uses to search for duplicates: the basic set is name, phone and email, but in some versions and templates the search can also cover requisite fields. If requisite fields aren’t on the list, you will have to catch duplicate legal entities by BIN yourself — by exporting the section and reconciling it in a spreadsheet. And if customers are created in 1C and invoiced there as well, a one-off import treats the symptom: the two databases will diverge within a month, and the right route is 1C exchange, loading from Excel only the part that isn’t in 1C.

Relationships during import are created by text matching of the name, not by ID. Astana Service TOO, TOO Astana Service and the version with quotation marks are three different companies as far as Bitrix24 is concerned. That is why you have to load in strict order: companies first, then contacts with a company-name column, then deals with company and contact columns. A reliable trick: once the companies are loaded, export their list from the CRM and pull the names into the contacts file with a formula instead of hoping they match.

A twenty-row pilot and a batch tag

The first run is done on twenty rows, and you should pick the hardest ones: a company with two phone numbers, a name in Kazakh spelling, a BIN with a leading zero, a long name in quotation marks, an IE instead of a TOO, a number with an extension, a comment with a line break inside it. Then you open the records and check every field with your own eyes. If even one entry lands wrong, a proportional share of the whole database will land wrong. Before the live upload, add a batch tag to the file — fill in one value for the entire batch in the source field or a service field, something along the lines of “import of such-and-such date”: that is your only way to later find everything this run loaded with a single filter. Cut large files into chunks of one to two thousand rows, each with its own tag; check the current import limits in the Bitrix24 help at bitrix24.kz, and in practice a fat file has a habit of falling over — and hunting for the error in a five-hundred-row chunk is noticeably more pleasant than in a file of several thousand.

The import has no rollback button — no upload log, no batch ID. You will have to delete by filter manually, and the key rule here is: never delete using an imprecise filter or a mask, because a filter like that will happily return your entire database instead of the batch. Always reconcile the number of records found against the number of rows in the file. And before the live upload, switch off automation rules and triggers on the target stages: the built-in CSV import does fire them — unlike a REST import — and emails and SMS blasted out to the whole database at once can’t be taken back.

Duplicates and acceptance: what to check after the upload

The import itself has a duplicate control block: allow, replace, merge, skip. For a first upload into a clean portal you normally set “skip” and then work through the list of skipped rows; for follow-up uploads, “merge”: it fills in empty fields only and doesn’t touch what your salespeople have already entered. “Replace” is never clicked blind.

After the import, turn on permanent duplicate control in the section settings and go through the merge list by hand. Automatic merging only fires when absolutely all fields of the records and the assigned owner match, and on a live database that condition is almost never met. Merging can be done by an administrator or by an employee with edit and delete permissions. Secondary records are deleted during the merge and go to the CRM recycle bin, but you can’t treat that as an undo button: items are kept there for a limited time, restoration isn’t available on every plan, and a regular employee only sees in the recycle bin what they deleted themselves. And the most important part — restoring a record from the recycle bin does not undo the merge itself: whatever has already been copied into the master record stays there. So questionable pairs are dealt with by hand, not on the principle of “merge it, we can always restore it”.

  • Arithmetic. Rows in the file minus the header minus the empty ones equals the number of records under the batch filter. Count companies, contacts and deals separately. A discrepancy is almost never accidental: it is either duplicate filtering or validation errors.
  • Twenty random records by hand. The phone number is clickable and in +7 7XX format; the email is in the email field, not in a comment; the BIN is in the requisites, not in the name; the deal amount is a number and in tenge, not in the default currency; the owner is a real salesperson, not the administrator; the company is linked to the contact, and the deal has a client filled in.
  • Dropdown fields. A common silent error: a list field arrives empty because the text of the option was passed instead of the option itself. Check at least one such field on each entity.
  • Assigned owners. Employees are added to the portal BEFORE the import, and the file keeps one single spelling of each name. If the whole database lands on whoever ran the import, visibility permissions, per-salesperson reports and call routing all stop working. It is easier to load everything onto one person and then redistribute with a bulk edit than to fix it a month later.
  • Segments and tags. City, customer type (TOO, IE, private individual), industry, status — active, dormant, do not call — and source. This has to be marked up as a column in the file: nobody is going to do it by hand across the whole database afterwards.
  • Permissions and personal data. Right after the move, close off the export and import permissions in the CRM roles, otherwise the very first salesperson who quits will walk off with the database using that same button, and set “own records only” visibility for rank-and-file staff. While you’re at it, decide on what legal basis you store the personal data of private individuals: by migrating the database you become a personal data operator under Kazakhstani law.
  • The source file. A copy with the date in its name goes into the archive, read-only and with restricted access, and from that moment on edits are made in the CRM, not in the spreadsheet. That is your migration backup.

Life after the import: the date Excel gets switched off

The import ends not when the data has been uploaded, but when the old file has stopped existing as a working tool. That is a management decision with a date on it: a day is set, edit rights on the shared file are revoked, the rule “no record in the CRM means no deal” is announced, and the manager stops accepting reports in any form other than reports from the system. A parallel database survives exactly as long as at least one report is accepted in Excel. In parallel, connect your communication channels so the new history starts accumulating inside the records: WhatsApp through Wazzup is the fastest way to show salespeople why they should open the CRM at all. If it turns out the database has moved but the process was never described, start with choosing and configuring a CRM around your actual needs. After that comes the part that costs more than any import — getting the team used to working in the CRM.

Will the history of messages, calls and old deals be transferred?
No. Only what physically sits in the Excel file moves across: fields, amounts, dates. There are no call recordings or message threads in a spreadsheet, and an import does not create a timeline. What you can do: move a short history across as text in a comment using a dedicated column, and connect your communication channels so that new history accumulates inside the CRM records from now on.
Can I import an XLSX file into Bitrix24 without saving it as CSV?
The built-in CRM import accepts CSV only. XLS and XLSX are loaded through the “Import from Excel” app from the Market, which can also create a linked company, contact and deal from a single row. The price is third-party access to your entire database and that app’s field-mapping logic, so run it on a test batch of twenty rows first.
How long does it take to migrate a database of several thousand customers?
Uploading the file itself takes minutes. Preparation takes anywhere from a few hours to a few days, and it depends not on the number of rows but on the degree of mess: how many columns have to be split, how many spellings of the same TOO have to be reconciled, how many phone numbers have to be normalised. Promises like “a thousand contacts in ten minutes” break on the very first real database.
How do I undo an import in Bitrix24 if the wrong thing got loaded?
There is no built-in rollback button, so you will have to delete by filter manually. That is why all of the insurance is put in place in advance: a batch tag in the file, a twenty-row pilot and a saved copy of the original Excel file. Delete strictly by the tag and always reconcile the number of records found against the number of rows in the file — deleting by an imprecise filter easily catches the entire database.
How do I load the BIN and requisites of Kazakhstani TOOs?
The requisites template for Kazakhstan is chosen in the record itself, in the “Requisites” field, and the list of templates is configured in the CRM settings. Then turn on the requisites import option BEFORE you download the file template and fill in the service columns for the requisite, the template and the country; the address is split into separate columns at this point. Look up the ID values with a test export from your own portal. For a small database you can load names and BINs and fill in the rest with a Market app that looks up company details by BIN: according to the help documentation, the built-in lookup for Kazakhstan is temporarily unavailable.
If your file is a mess of TOOs, IEs and private individuals and the phone numbers are written five different ways, it is easier to show us the database before the import than to untangle the consequences afterwards. In half an hour of review we will go through the structure of the file, tell you what will move across as it is, what will fall apart on the way and what is more honest to leave in the archive, and give you realistic timelines. A turnkey migration means data normalisation, a pilot batch, a live upload in batches, acceptance against a checklist and segment markup; the file review is free, and you can decide about the implementation afterwards: book a free audit or message us on WhatsApp at +7 701 960 13 11.
Next step
Bitrix24 implementationFree auditPricing and timeline
//ready to start

Ready for hands-on implementation?

A free 30-minute audit — we will show how to apply this article in your business.

Call UsSee pricing