Bringing data in from a spreadsheet, and reconciling with the bank
Free to import movements · documents, entities, reconciliation and export are Premium
A bank export, an accountant's schedule, the book kept elsewhere until now: movements, invoices and payments can enter from a spreadsheet. The one rule worth reading twice — the import creates nothing — is what keeps the book clean.
Start from the template
Settings › the Export Data section › Import Data › Download template. (While the book has no movements at all, the Transactions screen offers an Import Data button too.) Two files come out, named in the app's language: the template to fill in and import, and your lists — every account, category, subcategory, entity and project the app already knows, with the exact spelling, whether it is professional, and the currency of each account.
From version 1.7.4 a template filled in any of the app's languages is recognised as the app's own file — one downloaded in English imports with the app in Portuguese, for instance. It is read in the language of its column titles, and categories and accounts are found by their names in that language or in the app's; the messages stay in the app's language.
From version 1.7.8 the language of the app's own files — the template and the CSV of Export Data — only serves to find their columns by their titles. Every name in them is looked for in all of the app's languages: the accounts, the wallet included under its name in any of them while it keeps that name; the categories the app comes with, and the subcategories under them; the type of each line; the document types; and Yes or No in columns such as Professional. A file exported with the app in Portuguese imports with the app in English, for instance. Before, a name was looked for only in the app's language and in the one the file seemed to be in, and a Portuguese file, whose first column titles are the same as an Italian one's, could be read as Italian.
From version 1.7.6 the app's own files follow Settings › Formats. The template, the import of a filled-in template and the CSV of Export Data write and read dates in the Date Format set there — dd/mm/yyyy or mm/dd/yyyy — and amounts in the Number Format — 1.234,56, 1,234.56, 1234,56 or 1234.56; the examples in the template come already written that way. The reading is strict. A date is the day, the month and the year in that order, separated by «/», with a four-digit year and a day that exists: 31/02 or a month 13 are refused. A date written yyyy-mm-dd (2026-01-15) is accepted whatever the format, because it cannot be read as another day. An amount takes the decimal mark of the format, with one or two decimals, and the other mark only as the thousands separator; spaces and currency symbols are ignored. A date or an amount that does not fit refuses its line, and the result names the line and the format expected — Row 7: date "09/15/2026" is not in the format dd/mm/yyyy; nothing is guessed. In an Excel file, a cell that holds a real date is read as that date, whatever the format.
When the dates of a file are in the other order — some that only the other order can read, and others that the two orders read as different days — the whole file is refused and nothing is written: Nothing was imported. Some dates are not in the format dd/mm/yyyy, so others could be read with the day and the month swapped. Correct the dates in the file, or change the date format in Settings. That is what an export made before version 1.7.6, always written day/month/year, meets on a phone set to mm/dd/yyyy. From version 1.7.6 the errors of an import are listed in the order of the file's lines.
The import creates nothing
Accounts, categories, subcategories, entities and projects must exist in the app before the file names them. If the file names a category, subcategory, entity or project that does not exist, nothing is imported — not the good lines either — and the app shows everything that is missing in one go. Look at the list, create in the app what is missing, or adjust the file to the names that exist. Each account name in the file is matched to one of your accounts in Verify Accounts; names that are the same as an account's, capitals and accents aside, come already chosen. From version 1.7.8 the wallet comes already chosen too when the file names it in any of the app's languages.
In the Personal only and Business only modes, everything enters on the side in use, whatever the Professional column says, and a category that exists only on the hidden side counts as missing.
From version 1.7.6 Verify Accounts also lists the names in the To Account column — the account a transfer goes to — to be matched in the same way, and a name in either column that the app does not have is listed among the missing: nothing is imported. The import never creates an account. A movement or payment line with no account, no date or no amount is refused with its number — Row 6: no account. A movement or a payment needs one. — and an invoice is never marked paid by a payment line that moved no money.
From version 1.7.6 the Professional column does not decide a transfer: a transfer is on the side of the account the money leaves, as in the form (see logging income, expenses and transfers).
A file from another app
A CSV or Excel (XLSX) file this app did not write takes a different path, because its columns are not ours; from an Excel file, only the first sheet is read. In Define columns, each column gets its meaning — date, type, amount with its sign or income and expense apart, category, subcategory, account, note, professional, entity, or Ignore. From version 1.7.4 the meanings come already chosen from the column titles, in the app's language, in English or in Portuguese; a title the app does not know stays on Ignore, and any choice can be changed. The date format, the decimal separator and whether the first row is a header are set there too. Then which of your accounts each account name in the file is. It invents no accounts: a name with no match stops the import there and says so. Here too, from version 1.7.8, the wallet is recognised by its name in any of the app's languages, and in a Professional column the word for Yes in any of them counts as yes.
Then the review, day by day, before anything is written. The category in the file is found by the name the app shows, in any of its languages. A line whose category the app does not have waits in Skipped, where the card asks for one and will not save without it — the import plants no categories of its own. The Professional switch follows the account when the file does not say. A line that repeats something already in the book is shown beside it and called a possible duplicate, never dropped quietly: Not this one makes it a new movement, Confirm leaves it out. And the lines the file had that could not be read at all — an unreadable date, an empty amount — are listed at the end instead of vanishing.
Import all saves the remaining lines that are ready; possible duplicates are skipped, and the lines still without a category or a destination account wait in Skipped for a choice. If it went in wrong, Undo this import takes back every row it added.
The date format and the decimal separator of Define columns belong to the file, not to Settings › Formats. From version 1.7.6 the file is read strictly within them: the day must exist, a time after the date is ignored, and an amount whose separators do not fit the decimal mark picked, or an income or expense cell that cannot be read, is listed among the lines that could not be read instead of entering as another number or as zero. A cell that holds a real Excel date is read as that date, whatever date format is picked.
The currency is not written
A movement's currency is the currency of the account it enters; choosing the account is choosing the currency. A transfer between two currencies needs both Amount and Amount received; without the second the line is refused rather than a rate invented.
The CSV of Export Data carries that column from version 1.7.6: Amount Received, the last one, filled in on a transfer between accounts in different currencies, so that such a transfer comes back when the file is imported; the columns before it stay where they were. Exported and imported on the same phone, the file comes back as it was. When everything in it is already in the book, the import ends with Nothing new imported: the lines are counted as duplicates, and that is not a failure.
Invoices and their payments (Premium)
A line with a Document type (invoice, credit note, debit note, receipt) is the document — no account, no money moves on that line; the entity is required, and the currency is the entity's. A line with only the document number is a movement that pays it, from the account named. Order does not matter. An invoice without payment lines enters as unpaid and becomes paid when its payments are imported, in that file or a later one; a payment line for a document already in the app pays it, as a payment made by hand would. An empty due date means due on the document's date. Documents are Premium: without it, each document line and each line paying one is refused with invoices and other documents are part of Premium, and the plain movements of the file go in.
From version 1.7.6 the Type of a document line must be Expense or Income. Any other word — Transfer included — refuses the line, naming the words accepted, and its payment lines are refused with it; before, such a document became an expense.
What is refused, and why
- A name the app does not have — nothing imported, the missing names listed.
- A payment with a number that does not exist; a word that is not a document type; a zero or negative amount; a transfer to the same account; a cross-currency transfer without the received amount.
- A category on a transfer — the line is refused: transfers do not take a category.
- The same number twice — one invoice kept, with a warning. Payments above the invoice — a warning; the invoice goes in.
- From version 1.7.6: a date or an amount not in the formats of Settings › Formats; a movement or payment line with no account, no date or no amount; a document line whose Type is not Expense or Income.
Each refusal and each warning says which line. A line identical to a movement already in the book — same account, type, amount and day — is skipped and counted in Skipped (duplicates); refusals are counted apart, with the errors.
Customers and suppliers from a file (Premium)
Menu › Current accounts › Entities › the import icon at the top › Import Entities › Import CSV. It reads CSV, TSV and TXT, Excel (the first sheet) and JSON. The columns are found by their titles — the entity's own field names in any of the app's languages (Name, Tax ID, Entity type, Payment term, Currency, as the screen lists them), or the usual English and Portuguese words. The list shows each record with its type, tax ID, payment term and currency; a Duplicate has the tax ID of an entity already in the book, a Similar to has the same name without the company suffix, and both come unticked. Import Selected adds the ticked ones. There is no undo here: an entity is removed like any other.
Reconciling with the bank (Premium)
Reconciling checks an account against the bank's statement, line by line, and marks each movement that the bank confirms. There is no period to close: what is reconciled is each movement.
- Menu › Accounts › Reconciliation, at the top right › Import Bank Statement. Choose the account and the file — OFX, QFX, CSV (also TSV and TXT) or Excel (.xlsx); an old .xls must be saved as .xlsx or CSV first. The statement is read on the phone; nothing leaves it.
- For a CSV or Excel file, Define columns: Date, Amount (with sign) or Debit and Credit, Description, Memo and Balance, with the date format and the decimal separator. The app guesses them from the titles; Date, an amount and Description are required. From version 1.7.6 a cell that holds a real Excel date is read as that date, whatever date format is picked.
- Before touching the book, the app checks the statement itself: with a Balance column, each balance must be the one before plus the line. A statement that does not add up is refused. The first reconciliation of an account looks for where the statement meets the opening balance; the next ones compare the balance before the first line with the balance already reconciled (Balance verification). From version 1.7.6 an opening balance with no date counts, for this, from the day the account was created, or from its first movement if that is earlier.
- Proceed to Reconciliation, then one bank line at a time. Match found shows the bank line beside the movement of the app with the same amount and direction and a close date: Confirm, or None of these. With several candidates the app side becomes a wheel — possible matches — choose — with the closest date first.
- A line with no match becomes a New transaction: an expense or an income with its category, or a Transfer to another account. The movement created is already reconciled, and the category chosen is suggested the next time the same description appears.
- From version 1.7.4, Skip this line, under each card, leaves a line unreconciled with nothing recorded; it comes back in the next import.
- At the end, Finish › Reconciliation Summary: the statement balance against the reconciled balance, the account balance against the reconciled one, and Pending in app (not in statement). From version 1.7.4 a movement whose bank line was skipped is not counted there, nor shown in the box that follows: it is listed apart — it is at the bank but not reconciled yet; it pairs again in the next import. After Confirm, the movements of the app within the statement's dates that the bank did not show come together in one box — No automatic match found; tapping one opens it to be corrected, and back from the form the box returns with those still missing. Skip leaves them all as they are.
A reconciled movement shows a green tick in the lists and is locked: the form opens with a banner — Reconciled with the bank statement: only attachments can be changed — and it cannot be deleted while it stays reconciled. From version 1.7.4 its reconciliation is undone from the movement itself: Undo Reconciliation, on the banner or in the box that refuses the deletion. Only that movement changes, nothing is deleted, and the next statement pairs it again. The green tick leaves the list at once, and the form unlocks even if the deletion is then cancelled. This is free, also without Premium.
To undo several at once (Premium): import a statement of the account, then Undo Reconciliation on the screen that checks it, and choose the day. From version 1.7.4 the statement's own lines decide by the bank's date of each line — whatever the date recorded on the movement — and movements reconciled by other statements from that day on are undone too. Records are not deleted.
A reconciled movement stays reconciled on every synced device. The categorisation rules learned stay on the phone that learned them.
Questions
- Why was nothing imported when one line was wrong?
- That is the template. Filling the app’s own template, if the file names a category, subcategory, entity or project that does not exist, nothing is imported — not even the good lines — and the app lists everything missing at once. A typo in a spreadsheet is the same error repeated on every line it was copied to. A file from another app takes the other path below, and holds back only the lines it cannot place.
- Can I import invoices and their payments?
- Yes, on Premium. A line with a Document type is the document; a line with only the document number is a payment of it. Order does not matter, and a document only becomes paid through a real payment line. Without Premium those lines are refused one by one, and the plain movements of the same file go in.
- Is import free?
- Import Data is free for movements — the template, the app’s own files and a CSV or Excel file from another app. Documents in the template, the import of entities, bank reconciliation and the Excel/CSV/OFX export are Premium.
- Can I undo an import?
- Yes, for either kind of file: the summary at the end offers “Undo this import”. It removes the movements that import added and, from version 1.7.4, the documents it created; a document that was already in the app and was paid by the import goes back to what it owed before. Only the last import can be undone.
Related guides
Checked against ZeniCash 1.5.0 on 2026-09-10. Where a feature is Premium, it says so.