Importing Journals
Bulk-load journal entries from a spreadsheet — the seven columns, how lines are grouped into journals, and what the import refuses.
Journal import loads many entries at once — a year of adjustments migrated from another system, a month of payroll postings from a bureau, a batch of accruals prepared in a spreadsheet. Each row is one journal line; rows are grouped into journals by their reference.
Navigate to: Finance → Journals → Import
Accepted Formats
.csv, .xlsx and .xls. The modal offers a template — journal_import_template.csv — already carrying the seven columns in the right order.
The Seven Columns
| # | Column | Required | Notes |
|---|---|---|---|
| 1 | Date | Yes | The accounting date. An unreadable date fails the import |
| 2 | Reference | Yes, in practice | The grouping key — every row sharing a reference becomes ONE journal |
| 3 | Account Code | Yes | Must match an existing account code exactly |
| 4 | Account Name | No | Read for your eyes only — the posting uses the code |
| 5 | Description | No | The line description |
| 6 | Debit | One of the two | Leave blank on a credit line |
| 7 | Credit | One of the two | Leave blank on a debit line |
The columns are read by position, not by heading. The file must carry them in exactly the order above. Renaming a heading changes nothing; moving a column silently posts the wrong values — a description into an amount, or a credit as a debit. Start from the template rather than reshaping an export.
Dates
YYYY-MM-DD is read exactly as written and is the safe choice. Excel date cells are read as dates. A slash-separated date is read month first — 03/05/2026 becomes 3 May, not 5 March — and there is no setting to change that, so convert slash dates to YYYY-MM-DD before importing.
Amounts
Thousands separators are stripped, so 5,000 and 5000 both work. A blank debit or credit is treated as zero.
How Rows Become Journals
| Date | Reference | Account Code | Account Name | Description | Debit | Credit |
|---|---|---|---|---|---|---|
| 2026-02-01 | ACR-001 | 6310 | Utilities | Accrued utilities — January | 680.00 | |
| 2026-02-01 | ACR-001 | 2130 | Accrued Liabilities | Accrued utilities — January | 680.00 | |
| 2026-02-01 | ACR-002 | 6120 | Rent Expense | Accrued rent — January | 6,500.00 | |
| 2026-02-01 | ACR-002 | 2130 | Accrued Liabilities | Accrued rent — January | 6,500.00 |
Every group must balance on its own. A journal is posted per reference, each with its own number.
The Import
Then fill it, or rearrange your export to match the column order exactly.
Drop it on the Import modal.
Any invalid account code is named — for example "Invalid account code 9999" — and the import does not proceed.
Every group posts as its own journal. They appear on the Manual tab immediately.
What the Import Refuses
| Problem | What happens | Fix |
|---|---|---|
| An account code that does not exist | The whole import is refused, with each bad code named | Create the accounts first, or correct the codes. See Importing accounts |
| A reference group that does not balance | Refused — debits and credits must agree within a group | Check that every reference has both sides |
| A date that cannot be read | Refused | Convert the column to YYYY-MM-DD |
| A date inside a closed period | Refused | Reopen the period, or move the entries to an open one |
Imported journals post directly — there is no draft step and no preview of the resulting entries. On a large or unfamiliar file, import a handful of references first, check them on the Manual tab, then import the rest.
Related
- Journal Entries — where Import lives
- Manual journals — the form, and Batch Entry for a handful of entries
- Importing accounts — load the chart first so every code resolves
- Reversing a journal — undoing an import that went in wrong
- Opening balances — the migration this is often part of