Skip to main content
Pending validationOdoo 20.0Community and Enterprise

How to import the bank statement

What is it for?​

The bank statement is the list of what came into and went out of a bank account in a period. Importing it brings those movements into Odoo, one per line, so you can then reconcile them with the invoices, payments and journal entries they correspond to. Odoo reads the file, shows you the balances and movements and only creates anything after you confirm.

When to use it?​

  • Whenever you download the statement from the bank's website (for example, every week or at the end of the month).
  • Before reconciling: without the bank movements in Odoo, there is nothing to reconcile (How to reconcile bank movements).
  • It is not for cash movements (money): those are posted in the cash journal.

Where to find it?​

Accounting › Record › Import (in the Entries group) and, on the Import page, Import statement.

While there is no statement yet, Accounting › Reconcile › Bank statements also shows the Import a statement link. After the first statement, that list no longer has the button: use the path above.

Before you start​

  • Your profile is Accountant (or a treasury profile). With it you can do every step, up to the list of imported lines (tested with the Accountant profile).
  • The bank journal has the right bank account (IBAN): Odoo only imports the statement for that account. In the example, the Banco journal of Empresa Demonstração, Lda has the IBAN PT50 9999 0000 1234 5678 9012 2.
  • You have the statement file downloaded from the bank's website. Accepted formats: CAMT.053 (ISO 20022), MT940, Norma 43, CSV and Excel. The format is recognised automatically. For CSV and Excel, Odoo needs to know how your bank lays out the columns: see “The file is CSV or Excel” in Important notes.
  • The example is the statement extrato_banco_2026-10-29.xml (CAMT.053) of 29/10/2026, with one movement: IMPOSTO DO SELO S/ COMISSAO, -€0.50. It opens with the balance the previous statement closed with, €31,103.09.

How to use it​

  1. Open Accounting › Record › Import and click Import statement. Import bank statement opens.
  2. In Bank journal, choose the bank journal for the statement (in the example, Banco). The field starts empty: the options are the bank journals of the active company (in the demonstration, Banco and Recibos (RG)).
  3. In File, upload the bank's file. Leave Import template empty for CAMT.053, MT940 and Norma 43. Leave Skip rows with errors unticked: that way, a line with an error stops the import, instead of only part of the statement coming in.
  4. Click Review the file. Nothing is created yet. For a CAMT.053, CAMT.053 statement import opens with the File format, the Account in the file and, under BALANCES AND COUNTS, the Opening Balance, the Closing balance, the Entries in the file and the Lines to import. In the Inflows tab, one line per movement, with the Date, the Value date, the Amount (negative when money goes out) and the Description.
  5. Check the screen against the bank's paper or PDF statement: the account, the two balances and the number of movements. In the example: opening €31,103.09, closing €31,102.59 (31,103.09 − 0.50), 1 entry and 1 line to import.
  6. Click Import. In the Confirmation window (“Create the statement(s) and the lines shown in the preview?”), click Confirm.
  7. Imported lines opens, with the statement (in the example, BNK1 Extrato 2026-10-29, 1 record, -€0.50; for a statement imported today, the name has the date in the format 02/11/2026) and the Reconciliation state column. The lines are left to reconcile: go on to How to reconcile bank movements.

Expected result​

  • In Accounting › Reconcile › Bank statements the statement appears with the Date, the Journal, the Opening balance, the Closing balance, the Movements, the To reconcile count and the State To reconcile. In the demonstration example, the two October statements: BNK1 Extrato 2026-10-28 (€30,131.59 → €31,103.09, 3 movements: receipt from Construções Marão, €1,107.00; maintenance fee, -€12.50; transfer to Papelaria Central, -€123.00) and BNK1 Extrato 2026-10-29 (-€0.50).
  • Each imported movement immediately creates a journal entry in the bank journal, posted, between the bank account and a suspense account. In the example, BNK1/2026/00076: 120001 Conta Transitória D 0.50 / 121 Depósitos à ordem C 0.50. A receipt does the opposite (in BNK1/2026/00073, €1,107.00: 121 D / 120001 C). The suspense account only goes to zero when you reconcile the line; until then, the balance of 121 already matches the bank, but the expense or the customer has not been posted yet.
  • What is recorded: in Accounting › Reconcile › What is there to do with the banks?, Supporting lists › Import history, one line per file with the Date, the Bank journal, the Format, the File name, Imported by, the Rows read, Imported lines, Already imported (skipped) and Rejected lines, and the statement created.

Important notes​

  • Importing is not reconciling. After importing, the lines are left to reconcile and the expense, the customer or the supplier has not been touched yet. The bank balance in Odoo already matches the bank's.
  • The opening balance is checked. If the file's opening balance is not equal to the closing balance of the last statement in Odoo, the review warns that a statement may be missing in between. The warning does not block the import: check with the bank before confirming.
  • The same file does not come in twice. Odoo recognises a file or a statement already imported and skips it (see Common problems).
  • Locked periods. A movement dated in a locked period makes the whole file be refused: nothing is imported.
  • The file is CSV or Excel. Each bank lays out the columns differently. In Accounting › Reconcile › What is there to do with the banks?, Supporting lists › Statement import templates, create your bank's template with New, or click Load default templates. Then choose it in Import template in step 3. In the demonstration there are no templates (“No import templates yet”). Pending on-screen validation: importing a CSV with a template was not done in this article; the example is a CAMT.053.
  • What this list does not see. The statement only contains what the bank has already processed. A cheque issued and not yet cashed, or a scheduled transfer, does not appear until the bank processes it.

Common problems​

“The file contains no statement for the account of the journal Banco …”​

  • Symptom: after Review the file (or Preview): “The file contains no statement for the account of the journal Banco (PT50999900001234567890122). Accounts in the file: PT50000201231234567890154. Choose the journal of one of those accounts.”
  • Cause: the file is for another bank account, or you chose the wrong journal.
  • What to do: in Bank journal, choose the journal whose IBAN is the account in the file. If that account does not have a journal yet, ask whoever configures the accounts to create it with the IBAN.

“The file cannot be imported: the entry dated … is in a locked period”​

  • Symptom: “The file cannot be imported: the entry dated 15/12/2025 is in a locked period (Data de bloqueio geral (31/12/2025)). Nothing was imported; ask the Fiscal Manager to review the lock dates or remove the entry from the file.”
  • Cause: the statement has movements from a fiscal year or period already closed.
  • What to do: download from the bank a statement covering only the open period. Opening a closed period is a decision for the Fiscal officer and the certified accountant.

The file has already been imported​

  • Symptom: in the review, “This file was already imported into this journal on … by … : importing it again is refused unless you tick "Import anyway" and write the justification.” and “The statement … was already imported (…): it is skipped.”; Lines to import 0 and, on each entry, the Note “Statement already imported”.
  • Cause: this statement is already in Odoo (in the example, BNK1 Extrato 2026-10-28).
  • What to do: nothing; close the window. Do not tick Import anyway: it would duplicate the movements and the bank balance in Odoo would no longer match.

“Some required fields are empty”​

  • Cause: the Bank journal was left empty (it always starts empty).
  • What to do: choose the journal in step 2 and click Review the file again.
Versions: Odoo 20.0Community and Enterprisefiscaldoo 20.0 (master 436524736)ID DOC-0109
Was this page helpful?