Moving to Finocket from Zoho, Odoo, Vyapar, myBillBook, Busy, Marg, Swipe, QuickBooks or a spreadsheet starts in Settings → Import & migrate. Each source has a card: how to export from it, which records come across in this version, what is coming next, and what is deliberately left behind. Tally has its own guided import. See Move your Tally books across. This page covers the mechanics every source shares; your source's own export menu path, spelled out step by step, is on its own page. Start at Pick where your books live today.

Setting up with Mysty? It offers this for you
If you set Finocket up by talking to Mysty rather than filling in the form, the conversation ends by offering the import. The systems it lists are the ones your line of business actually keeps its books in, with a line under each saying why: a distributor is pointed at Marg and Busy, a jeweller at a purity-and-weight stock register, a chemist at a batch-wise stock report. Tapping one opens that source's import with the source and the first kind of record your trade needs already chosen, so you land on the file picker rather than on a blank form.
It is an offer, never an action. Nothing is read, uploaded or written until you pick a file yourself and approve what it found on the dry run, exactly as on every other route into this screen. "Not now" moves the setup on, and Settings → Import & migrate is still there whenever you come back to it.
If Finocket cannot work out what line of business you are in (you have not said yet, or your browser is not letting the setup remember what you picked), it says so and offers the sources most businesses start from. That is deliberately a different sentence from "there is no list for your trade", because the two mean different things and only one of them is something we actually know.
What comes across today
Parties (customers and suppliers, with GSTIN, PAN and state), items (with HSN, unit, rate and opening stock), your chart of accounts (groups and ledgers), ledger opening balances, and from a spreadsheet-shaped export your invoices with their lines, supplier bills, payments and journal vouchers (a Day Book or manual-journal export, one row per ledger line). What a source cannot bring yet, its card says, rather than implying it works.
Your team can come across too. Pick "Team" as what the file holds and a sheet of names, emails and roles invites each one for real, right then. An address that matches somebody already on your team updates their role instead of duplicating an invite; a seat your plan does not have room for is flagged on the dry run, never silently skipped or invited past your limit.
If your books track batches or godowns, per-batch stock openings and adjustments come across as stock movements. Bring your items across first, since a movement needs to find the item it belongs to. A fixed-asset register comes across with its cost, depreciation method and rate. A customer or supplier balance still owed on your cut-over day comes across as a party opening balance, landing as an open invoice or bill so it ages and sends reminders exactly like one you raised yourself.
The five screens
Pick. Say what the file holds (parties, items, chart of accounts, groups, contacts, deals, your team, stock movements, fixed assets, party opening balances, invoices, bills, payments or journals) and choose the file. A party can also come in as a lead, with neither a customer nor a supplier role until you convert it, and a deal's stage is matched against your own pipeline's stages by name, and a stage name that does not match is flagged rather than silently landing on your first stage. CSV, XLSX and XLS all work, and so does a Tally-format XML (Tally's own All Masters export, or the Export to Tally that Vyapar, myBillBook and Book Keeper write): its masters are read directly and you go straight to the dry run. A Tally Day Book export (Display More Reports → Day Book → Export → XML) brings the vouchers from your cut-over on (sales, purchases, receipts, payments and journals) and lists, by reason, the ones it does not: cancelled, optional, dated before the cut-over, or in a foreign currency. Coming from Zoho? Drop the whole backup zip that Zoho's own Data Backup page downloads: every file in it we recognise (contacts, vendors, items, the chart of accounts, invoices with their items, bills, payments, journals) is read, and the rest is listed by name. Coming from Odoo? Drop the zip that Manage Databases → Backup downloads: contacts, the chart of accounts, items, sales invoices and purchase bills are read straight off the database backup, no per-module export needed (payments and journal entries still come across as a CSV export, for now). The file is read on your device; nothing is uploaded at this point. A title block above the header is skipped automatically.
Map. Columns are matched to fields by their headers; anything unmatched gets a drop-down. Required fields are marked, and you cannot continue until each has a column. The mapping is remembered for files with the same columns, including your confirmed date format and debit/credit sign convention, so the next file with the same columns is read the same way without asking again. A column with nowhere standard to go can be matched to one of your own custom fields, or you can create a new one right there. Its type is guessed from the column's own values but always shown for you to confirm before it is saved. A date or money column sometimes cannot say which convention it uses from its own values alone. A date such as 03-04-2026 could be the third of April or the fourth of March, and a plain negative amount could mean either a real negative or a credit. When that happens a small picker appears under that one column asking you to say which; a column that already reads clearly shows no picker at all.

Dry run. Every record gets a verdict (create, update, already here, or blocked), and every issue is grouped by what is wrong: a missing group, an invalid GSTIN, a duplicated SKU, openings that do not balance. Blocked rows can be downloaded with the line number and the problem. Nothing has been written.
Matching a customer you already have. A party is matched on its GSTIN first, then on the PAN inside that GSTIN, so one business registered in two states stays one record. Failing both, the name is compared: written in Hindi, Tamil, Telugu or Kannada it is read rather than skipped, and the wrappers people vary are ignored, so “M/s Sharma & Co”, “Sharma and Company” and “SHARMA AND CO” are one customer. A title is not a wrapper: “Dr Reddy” and “Reddy” stay two customers and the close one is put to you as a question. A name that looks like a customer you already have, even spelled differently, waits in the review list with a note saying how close it is, such as “May be the same party as one you already have (89% alike)”. Nothing is ticked for you and nothing is linked or added until you decide, and two firms that share only a common surname are left as two.
Import. Pressing Import is recorded as your decision. Records land in small batches, each checked against what is already in your books, so a retry never doubles a record. If you close the page, the rest finishes in the background. The screen checks on its own and updates the moment it is done, and you get a notification either way. A batch that stops on a data problem can be retried right there without starting the import over; it picks up from where it stopped rather than reapplying what already landed.
Reconcile. Your old books' figures beside Finocket's: opening debits equal opening credits, trial-balance totals when your export carried them, and whether every party, item and ledger found a place to land. A line without a source figure is marked not checked, never passed. If anything was blocked or flagged, a link opens that run's own review queue: every affected record, why, and a place to skip it or accept it as it landed. Nothing there is edited on your behalf; a value that needs correcting is fixed in the source file and brought across in a new import.
What if I drop the wrong kind of Tally file?
A raw Tally company-data folder, meaning the files Tally itself keeps on disk (named things like Company_Migrated.900 or TACCESS.TSF), is recognised for what it is whether you drop the folder itself or a zip of it. It is never shown as a generic error. It is Tally's own internal database, not an export, so Finocket cannot read it directly; you get a plain sentence saying so, and two real next steps: export XML from Tally instead (see Move your Tally books across), or pair this TallyPrime machine once and read the company directly, from Tally → Connect.
Bringing the same file twice
A record that already came across from the same source is skipped, not created again. A file that was already imported is refused with the earlier import named, so an export cannot land twice by accident.
Undoing an import
Every import in the history has Undo this import while it stands. It removes what the import created (documents first, then parties, items and ledgers) and keeps, with the reason, anything your business has since built on: a customer who has a new invoice, a ledger with later postings, a record dated inside a locked period. The result says how many came out and how many stayed. An import can be undone once.
The Imports inbox: everything you have brought in, in one place
Imports, in the Platform & integrations section of the menu, lists every file you bring in there, and your bank statements, as one job each (what came in, what is still waiting on your decision, and what has already landed), with status chips and counts you can filter by type, status, source name or date. A job that needs you shows up first. Opening one takes you to its own timeline: who approved what, and Undo while it still stands.
Every file you bring in this way lands in this one list: a file you drop on this screen, pages you photograph with Photograph pages (see Photograph pages into an import), and a file you share to Finocket from another app (see Share a file straight into Finocket). Whichever way it came in, each import has the same page: its analysis, a Review tab where you fix a row where you found it, and the totals check with your old system's figure beside the one this import would produce, all before anything is applied.
Dropping files straight onto the Imports screen
At the top of Imports is a box you can drag files onto. Drag several at once, or a whole folder, or tap Choose files and pick them from your phone. PDFs, photos, CSV and Excel sheets, XML and ZIP archives are all accepted, up to 200 MB each.
Each file gets its own line with its own progress. One file failing does not stop the others: if a name cannot be used, a file is empty, too large or of a kind we cannot read, it says so on its own line and the rest keep going. If the connection drops partway through, that file offers Try this file again and picks up from where it stopped rather than starting the whole file over.
If your browser cannot open a folder you dropped, you are told that. It is not the same as the folder being empty, and choosing the files instead always works.
When a file finishes uploading it is added to the list below as its own import, ready to review. Files you drop together are kept together, but each one is a separate import that you approve or leave on its own. Dropping a file you already brought in shows you the earlier copy rather than making a second one.
If a file uploads but cannot be added to your list, its line says so and offers Add it to my imports again. That sends nothing a second time: the file is already safe with us, and only the step that adds it to your list is repeated.

After a file is stored, it is read for you
Finocket then reads the file on its own: as soon as you open the import, or within a few minutes if you do not. Until then the import says it is being read. Today it reads spreadsheets (CSV or Excel) of your customers, suppliers, items, ledgers and similar records. Each row becomes a line to review: ticked as ready when nothing looks wrong, blocked when it has a problem you must fix, and set aside as a duplicate when your books already have it. A customer or supplier whose name is close to one you already have is flagged rather than added twice, and is never ticked for you.
A file it cannot read on its own (a PDF, a photo, a ZIP, or a spreadsheet of invoices) is not shown as an empty review. The import says in plain words why it could not be read, and you can reject it and drop a spreadsheet instead. If reading fails for a reason that may pass, it tries again a few times before it gives up and says so. Nothing is written to your books while a file is being read.
Approve, then apply: the step that writes to your books
Approving rows is a decision and writes nothing. Once you have approved the rows you want, the import page offers Apply to my books. It asks you to confirm, then writes only the rows you approved, in the order your books need them (a customer before an invoice raised on them). Rows you did not approve stay exactly where they are. It is never pressed for you: no timer, AI assistant or integration can apply an import.
Every row then says what happened to it. A row your books accepted shows where it landed. A row your books refused (a closed period, a missing account, a value that does not fit) goes back to the Review tab with the reason in plain words, so you can fix it and approve it again. A row that is already in your books from an earlier import is not written twice; it is marked as a duplicate and points at the record that is there.
A large import may not finish in one press. The page then says part of it is in your books, and pressing Apply to my books again carries on from where it stopped rather than starting over. Owners can apply, and so can any teammate whose role lets them change your books: an Assistant, or an Admin, who counts as an Assistant here. A teammate who can only look (a Member or an Accountant) sees the button refused and nothing changes, unless you have given them Edit access to Core money basics on the Team screen. The same setting can take that away from an Assistant.
Two kinds of row are never applied, and each goes back to the Review tab with a note saying why. Team members are not added by Apply, because adding one gives a person access and sends a real invitation: add your team from the Team screen. A payment you made to a supplier that settles bills is not applied either; record it on the payment screen so the bill is settled once.
Opening one import: what happened to every row
Tap any job in that list and it opens on its own page, with four tabs: Overview, Analysis, Review and Certificate. The Overview starts with four counts (received, approved, imported and reconciled), which are cumulative, so undoing an import does not rewrite what it once brought in. Below them is who approved what, then the story of the import in order: when it arrived, when it was read, when it was ready for you, when it was approved, and when it landed. Then every row, with what became of it in plain words: created a new record, updated one you already had, linked to an existing one, skipped as a duplicate, or could not be written and why.
A row that failed when it was being written says so. It is not the same as a row still waiting on your decision, and the page never shows one as the other.
Two things you can do from here. Undo takes the import back out: every row it wrote is removed wherever nothing else in your books refers to it, and any row that is already in use is kept and named, so you are never guessing what survived. Delete the source file removes the original upload from storage, while everything already imported stays in your books. It is the same deletion the retention window would do later, done now. Both ask you to confirm first.

Reviewing the rows, and approving the rest in one go
The Review tab on the same page is where a big import becomes a small job. A file of twenty thousand rows is almost never twenty thousand decisions: most rows are clean, unambiguous and already ticked for you, and a few dozen are the ones that actually need your eyes. The filters are there to separate the two. Filter by record type, status, how sure we are, date, amount, who the party is, or by the exact problem a row has. Two buttons do the common case for you: Needs a person narrows to the rows that are blocked or were not confident enough to tick, and Ready to approveshows the one-tap set.
Tick rows individually, tick the whole page at once, or, once a filter reaches past the page you are looking at, choose every row that matches it. That last one always tells you the number first: approve all 19,960 rows that match, in words, before you press anything. If that number moves while you are deciding, the approval is refused and nothing is written; you are told the new number instead. A row that is blocked by a problem is never approved, however you selected it, and the count of the ones skipped is reported rather than hidden.
A ticked box is a suggestion, never a decision. Nothing in this screen is approved until you press the button and confirm it. And approving is not the same as importing: approved rows are rows you have agreed to, and writing them into your books is a separate step, so an approval you change your mind about has not cost you anything yet.

Fixing a row without exporting again
Some rows come across with a problem: a GSTIN typed wrong years ago, a missing date, a customer the file never named. Until now that meant going back to your old system, correcting it there, exporting again and importing again, all for one character. Every row that has a problem now carries a Fix button. Press it, change what is wrong, and save.
The row is then re-checked against exactly the same rules that checked it when the file arrived: the same validation, the same matching against the customers, items and ledgers you already have. Nothing about the fix path is more forgiving than the import was, so a row cannot slip in through the correction that would have been stopped at the front door. If the problem is gone, the row stops being blocked and can be approved with the rest. If a problem is left, you are told which one, on the field it belongs to.
Your file is never rewritten. The values as they were read stay exactly as they were read, and your correction is kept beside them, so you can always see what the source said and what you changed it to. Clearing a box is a correction too: emptying a wrong GSTIN leaves a party matched by name, which is often what you wanted.
You can also point a row at a record you already have. On a customer or supplier row that means "this is the same business as this one in my books", so it is updated instead of duplicated. On an invoice, a bill, a payment or an opening balance it means "this belongs to this customer", which resolves a row that was blocked because the party was never in the file. Some kinds of row are corrected elsewhere and say so: a bank line is fixed on the reconcile screen, and a scanned document on its own review page.
Two things the screen will refuse, and will tell you why rather than failing quietly. A row that has already been imported cannot be edited here, because changing it would rewrite something that already happened. And once the original upload has passed its retention window the values as read are deleted, so there is nothing left to correct against; the screen says so instead of showing you an empty form.
Comparing a likely duplicate side by side
On a customer or supplier row that looks like one you already have, a Compare button sits beside Fix. It opens the row next to the existing record, field by field (name, GSTIN, PAN, email, phone, address, city, postal code, and whether it is a customer or a supplier), with anything the two disagree on marked so you see it first. There are two answers. Keep existing links the row to the record you already have, so nothing new is created for it. Take incoming adds it as its own record instead, left unlinked to the one you compared it against. You can change your mind afterwards: reopen the row and Compare again.
A row Compare cannot help with says why instead of showing an empty comparison: no likely duplicate on record, the record it was matched to has since been deleted, or the match could not be read just now. Only a customer or supplier row offers this. An invoice, bill or payment row is fixed the way the section above describes, without a comparison.
The analysis: reading the file before you import any of it
Every import now has an Analysis tab. It is a report and nothing more: nothing on it is ever written to your books, and nothing will be until you approve it.
It fills in when you open it. For an import that has a stored spreadsheet or CSV of parties, items, ledgers, contacts or the like, and is waiting for your review, opening the tab reads the file and your existing records and shows the report. It is read once and kept; nothing is re-read each time you look, and nothing is written to your books. The column matching used for the report is automatic and is not a decision. You still confirm everything at review.
Some imports will not have one. A file that holds invoices, a sheet we could not tell apart, a zip, a Tally XML, a file that never fully arrived or one that is too large is not analysed in part, because a report over half a file would show counts that look complete and are not. The tab says the analysis could not be produced and why, and offers Try again. That is different from “still reading”, and your import can still go to review either way.
What the file holds, counted per kind (so many parties, so many items, so many invoices), with what would happen to each group: new records, updates to rows you already have, rows with nothing to do, and rows that are blocked. Beside it sits the number of rows actually staged for review, and if the two disagree the page says so rather than quietly showing you the smaller one.
What is already in your books. Every row this file would land on top of something you already have is counted and listed, with the detail it matched on (a GSTIN, a name, a stock code), so you can see why. This is the number that stops a second copy of your whole customer list going in.
Missing masters: rows that point at a party, item or ledger the file never defines. The dates the file covers, earliest to latest. Anything we flagged, grouped by what it is and how many rows have it, worst first. And the totals check: where your old system gave us its own totals, we compare them against what this import would produce.
One rule runs through the whole tab: “None found” and “we could not check” are never written the same way. If your existing parties and items could not be read, the duplicate check does not say zero. It says it could not compare, and why. A total your old system never gave us is shown as unchecked, not as passed. If an analysis was saved but cannot be read back, the tab says exactly that instead of showing you an empty report. A figure on this page is either measured or it is plainly marked as missing, so a quiet blank can never read as an all-clear.
The totals check: proving your books came across whole
Counting rows tells you nothing came across empty. It does not tell you the money adds up. For that we need the other side: what your old system says your books total. Finocket now reads that figure and shows it, with where it came from.
From your own file first. If the sheet you are importing is a report your old system printed (a trial balance, a party-wise outstanding statement, a sales register), its closing Total row is read and used. A group subtotal in the middle is never mistaken for the report’s own total.
Or type six numbers. If your old system exported no such report, read them off its screen on the dry-run step: total debit and total credit from your trial balance, sales for the period, the GST you charged on it, what your customers owe you, and what you owe your suppliers. Press Check my import against these and the totals check runs against them straight away.
Leave anything you do not know empty. That line then says it could not be checked. It is never treated as zero, because “my sales were nothing” and “I do not know my sales” are different sentences and only one of them is a figure. If you type something we cannot read as an amount, the box tells you so rather than pretending you left it blank.
If two answers disagree, we use neither. When the figure in your file and the figure you typed do not match, both are shown side by side and that line stays unchecked until you say which is right. Picking one for you would make the tick beside your totals mean something you never agreed to.
Every figure on the panel carries where it came from. A figure nobody gave us is shown as not given, in its own words, not as a zero and not left off the page where its absence would read as agreement.
The migration certificate: one page your accountant can read
Open an import and choose Certificate. It is a single page that says what moved, what agrees with your old system, what was not brought across and why, and the GST checks where there is data for them. It reports what was stored when the import was checked; it does not work anything out again.

The verdict comes first. Beside the import’s name and type you see one of: your books tie out, your books differ from the old system, not compared, nothing has landed yet, not checked yet, or the check could not be read. A sentence underneath says what that means. “Not compared” and “not checked yet” are not “matches”, and the page says so.
What moved shows rows received, imported and reconciled, and how many were created, updated, linked to something you already had, matched or posted to the ledger. Rows imported is cumulative, so an undo does not rewrite what the import once brought in.
What ties out lists each figure that was compared, such as the trial balance totals, sales, open receivables per customer and stock per item. Every line reads Matches, Differs or Not checked (in words as well as an icon), with the old system’s figure beside yours. A line that differs says whether your books are short or hold more, and by exactly how much. A line that was not checked says why: your books were not read back after the import, they could not be read back, Finocket has no reader for that figure yet, or your old system gave no figure to compare with.
GST checks shows output GST and input GST on eligible bills in the same way. If GST was not checked, or there is no readable comparison at all, the section says that in a sentence instead of staying blank.
What was not brought across counts the rows that failed when written, were rejected, ignored, held, duplicates, undone or are still waiting for a decision, with the reason and a few examples for each. One row can appear under more than one heading, so the numbers are not added together. If the reasons could only be read for some of the rows, the page tells you how many.
Press Print or save as PDF to use your browser’s own print dialog; the app’s menus and buttons are left off the page. If a line differs, open the Review tab or ask for help below. The certificate never hides a difference to look cleaner.
Issue a certificate: freeze it so it never changes
Issue certificate appears once the import has a real result to freeze, not while it is still “not checked yet” or nothing has landed. Issuing stores exactly what the certificate shows at that moment (every line, every count, the standing itself), along with a verifiable fingerprint and the date. If this import is checked again later, that later check never changes what an already-issued certificate reports. It is the one page you can hand to an accountant and know it still says today what it said when you handed it over.
An issued certificate still shows who issued it and when, and it can be voided if it turns out to be wrong, with a reason, which is required. A voided certificate stays on the page and stays readable, marked void, rather than disappearing or quietly looking current again. Once voided, the import needs a fresh certificate rather than reviving the old one.
A certificate that disagrees with the old system, or that compared nothing at all, can still be issued. Issuing freezes a record of what was found, not a claim that everything matched. Your accountant and a CA you have invited both see whether a client is certified in their own screens, and that only turns on once a certificate from a clean tie-out is issued and not voided.
Stuck? Get help with this import
On that same page is a Get help button. Tap it, say what went wrong if you want to, and Finocket raises a support request that already knows which import you mean: what kind it is, which source it came from, where it got to, and how many rows were received, approved, imported or blocked. You do not have to describe any of that, and you do not have to find a reference number.
Nothing from inside your file is attached. No party names, no narrations, no amounts, no rows. Only the shape of the import travels with the request.
The request goes to the person who looks after new-customer imports, and you can follow it under Help and support, where replies appear on the same thread. Tapping Get help again on the same import does not raise a second request. It shows you the one you are already waiting on, and you can add to that thread instead. Once a request is resolved or closed, asking again starts a fresh one.
You need the same permission you would need to act on the import itself, because the request goes out under your business's name. A read-only teammate or an invited accountant is told so rather than being left with a button that quietly does nothing.
Would you rather we did it for you?
Bringing your books across yourself is free. Beside Get help on the same page is Request expert help, which asks a migration specialist to do the work instead. Tell us how soon you need it, add anything unusual about the data, and send.
Asking costs nothing and commits you to nothing. Unless a price is showing in the offer itself, we will quote you before any work starts, and nothing is charged until you have agreed to it. The offer shows you exactly one of three things (a price, that we will quote you, or that we could not check just now), and it never guesses.
Once you have asked, the same button shows you where your request has got to: waiting, being done, done, or not being taken on. The specialist who has it is named there, and the whole thread lives under Help and support with everything else. Asking a second time on the same import shows you the request you are already waiting on rather than starting another.
As with Get help, nothing from inside your file travels with the request, only what the import is, where it came from and where it got to. And you need the same permission you would need to act on the import itself, because the request goes out under your business's name.
Where an import shows up
An import you run through the five screens above, or through the Tally wizard, is listed under Previous imports on Settings → Import & migrate, with how many records were applied and how many failed. Its Open link lands on that import's review queue directly, the same place a blocked-row warning already sends you. Imports run this way do not appear in the Imports list today; that list holds the files you drop, photograph or share, and bank statements.
What is deliberately not copied
Filed GST returns, IRNs and e-way bills belong to the portal that issued them. Bank-statement matches, attached files and each product's own print layouts are not copied either. The card for each source lists what it leaves behind.