Journal Entries Import from Excel / CSV for Odoo 19 Community documentation
A guide to the import: the file, the options, the check, the entries, the undo and the limits.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: The month-end closing is in a spreadsheet: payroll, rent, depreciation, accruals, forty entries. Re-typing them is slow and one wrong digit unbalances a ledger. Journal Entries Import loads them in Odoo Community: it groups the rows into entries, checks each entry for balance (and every account, partner, date and period), and creates the good ones as drafts to review or posted, with a history and an undo.
Tip: An entry with a problem is left out as a whole, with the reason on every one of its rows.
What you get
| Feature | What it does |
|---|---|
| Excel and CSV | .xlsx, .xls and .csv; headers in English or Arabic, in any column order. |
| Entries from rows | Rows with the same Entry number make one entry (or the same date and reference if there is no Entry column). |
| Accounts and partners | Accounts by code or name, partners by name or reference (they can be created), analytic accounts by name. |
| Balance check | An entry that does not balance, has one row, mixes dates or journals, or falls in a locked period is flagged. |
| Draft or posted | Create the entries as drafts to review, or post them at once. |
| Dates | ISO dates, Excel dates, or day-first / month-first dates like 03/04/2026 (you choose). |
| History and undo | Every import is kept with its entries; undo deletes them (posted entries are reset to draft first). |
| Template | A ready-to-fill Excel template to download. |
| Arabic | Everything is translated and works right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Invoicing (account) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_journal_import.zip; unzip it to get the foldertaqnix_journal_import. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Journal Entries Import and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_journal_import --stop-after-init
Prepare the file
In plain words: A header row and one row per journal line. Four things are required: Date, Account, Debit and Credit.
| Column (any of these names) | Meaning |
|---|---|
| Date | The accounting date of the entry. All the rows of an entry must have the same date. |
| Entry, Number, Voucher | Groups the rows into entries. Without it, the date and the reference do. |
| Reference | The reference of the entry. If missing, the entry number is used. |
| Account, Account code | The account code or its name (required). |
| Partner | The partner name or reference. Optional. |
| Label, Description | The label of the line. |
| Debit, Credit | The amounts. A row has one or the other. |
| Analytic Account | An analytic account name, 100% on the line. Optional. |
| Journal | The journal code or name, for the entries that are not in the default journal. Optional. |
Tip: Click Download the template on a new import to get a file with the right headers and a balanced example.
Import
In plain words: Open Accounting → Accounting → Transactions → Import entries and click New. Choose the file, the journal and the options, then Check the file.
| Option | Meaning |
|---|---|
| Journal | Used for the entries that have no journal in the file. |
| Dates are day first | For 03/04/2026: ticked reads the 3rd of April, unticked reads March 4th. ISO dates are always clear. |
| Post the entries | Untick to create drafts, to review them first. |
| Create the missing partners | A partner that does not exist yet is created. |
| If an entry has an error | Import the valid entries and skip the others, or import nothing. |
Read the check
| Message | Meaning |
|---|---|
| The entry is out of balance by X | The debit and the credit of the entry differ. |
| An entry needs at least two rows | A single row cannot be an entry. |
| The rows of an entry must have the same date / journal | Rows with the same Entry number disagree. |
| The period is locked until X | The date falls before a lock date of the company. |
| No account / partner / journal matches | The value is not in Odoo: correct the file. |
| Another row of this entry has an error | The whole entry is skipped, so its other rows show it too. |
In plain words: Correct the file and click Check again as many times as you want: nothing is created until you click Import.
Create the entries
In plain words: Import creates one journal entry per valid entry of the file, linked to the import: open the Entries button, or look at the Imported by field on the entry itself.
Undo
In plain words: Undo the import deletes its entries: drafts are deleted, posted entries are first reset to draft. If a period is locked or an entry cannot be changed, nothing is deleted and the reason is shown.
Who can do what
| Who | Can |
|---|---|
| Accountants | Import, check, apply and undo. |
| Other users | No access. |
Arabic and right to left
Limits
| Limit | Detail |
|---|---|
| Company currency | The amounts are in the currency of the company. |
| Taxes | Entries are imported as they are, without tax lines or tax grids. |
| Opening balances by invoice | Reconcile the open items afterwards; the import creates plain journal entries. |
| One sheet, 10,000 rows | Only the first sheet is read, up to 10,000 rows per file. |
For developers
In plain words: Skip this chapter if you only use the module.
imp = env['taqnix.journal.import'].create({'file': base64.b64encode(csv_bytes), 'filename': 'closing.csv',
'journal_id': misc.id, 'post': False})
imp.action_check()
imp.action_import()
imp.move_ids
imp.action_undo()Troubleshooting
| Problem | What to do |
|---|---|
| The file needs a Date column | Add the four required headers: Date, Account, Debit, Credit. |
| The date is not valid | Use 2026-03-31 or an Excel date, or choose day first or month first. |
| The entry is out of balance | Add up the debit and the credit of the entry number. |
| The entries could not be removed | A period is locked: open it, or reverse the entries by hand. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_journal_import. Your imports and the entries they created are kept.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.