Indonesia Bank Statement Import (BCA/Mandiri/BRI/BNI)
by Lema Core Technologies https://lemacore.com$ 19.81
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1194 |
| Technical Name |
lm_bank_statement_import_id |
| License | OPL-1 |
| Website | https://lemacore.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1194 |
| Technical Name |
lm_bank_statement_import_id |
| License | OPL-1 |
| Website | https://lemacore.com |
Lema Core Technologies
Indonesia Bank Statement Import — BCA / Mandiri / BRI / BNI
Import bank statements directly from the four major Indonesian banks into Odoo 18 bank journals. No enterprise modules required — works on Odoo 18 Community out of the box, with auto format detection and a rich preview before commit.
Odoo 18 OPL-1 Indonesian Localization
Lema Core Technologies is a provider of business software solutions specializing in custom Odoo development. We help businesses unlock the full potential of their Odoo instances through reliable, well-tested modules.
Demo Preview
See Indonesia Bank Statement Import in Action
Screenshots
Visual Walkthrough
Upload Bank File Auto-Detect Format
Three-step wizard: upload your CSV or Excel export, the parser detects the bank from header signatures, and you preview every transaction before commit.
Rich OWL Preview Filter, Sort, Inspect
Bootstrap-styled preview table with inflow / outflow colouring, instant search box, sortable columns, summary tiles for total inflow, total outflow, net change, and transaction count.
Bank Reconciliation Native Odoo Flow
After import, the standard Odoo bank reconciliation takes over. Each statement line matches existing invoices or payments; manual operations cover bank fees, interest, and tax.
Bank Journal Setup Import Format
An optional Indonesian Bank Format field pins the parser for journals that always receive a specific format.
Features
What You Get
Bank Parsers
BCA CSV Parser
Reads BCA mutasi CSV with DB / CR sign convention. Handles preamble lines (account number, period, holder name) automatically.
Mandiri CSV Parser
Reads Mandiri e-statement with Debit / Kredit columns. Supports Tanggal Valuta, Cabang, and standard MCM exports.
BRI CSV / XLSX Parser
Reads BRI mutasi in CSV or Excel. Handles Indonesian month abbreviations (Mei, Agt, Okt, Des). Requires openpyxl for XLSX.
BNI Dual Variant
BNI exports come in two shapes: Tipe / Nominal columns or Debit / Kredit columns. Both are supported transparently.
Auto Format Detection
Wizard scans the first 20 non-empty rows and matches each one against every parser. The first match wins; ambiguous BRI / BNI exports are disambiguated by signature columns.
Pure Python Parsers
Parser layer is decoupled from Odoo — unit-testable in plain Python. Reusable in CLI scripts or other tools.
Preview Experience
OWL Preview Widget
Native OWL 2 component with summary card, stat tiles, and a Bootstrap-styled transactions table — no jQuery, no carousel.
Filter & Sort
Search by description or reference; click any column header to sort. Filtered counts update in real time.
Inflow / Outflow Colour
Green for credits, red for debits. Net change summary highlights any imbalance before you commit.
Format Handling
Indonesian Number Format
Auto-detects 1.234.567,89 (Indonesian) and 1,234,567.89 (standard) decimal formats. Empty cells, dashes, and zero strings are normalised to zero.
Multiple Date Formats
DD/MM, DD/MM/YYYY, DD-MM-YYYY, DD-Mon-YYYY (including Indonesian month abbreviations) — each parser knows what its bank exports.
Source File Audit Trail
The original CSV / XLSX is attached to the created bank statement as an ir.attachment, so auditors can always trace a line back to its source.
System Architecture
From File to Bank Statement
Three-step pipeline keeps the source file, the parsed preview, and the final journal entry decoupled.
Technical Specifications
Built on Odoo 18 Standards
Dependencies
- account (core)
- openpyxl (Python, for BRI .xlsx only)
- No enterprise-only dependencies
Deployment
- Odoo Community & Enterprise
- Odoo.sh (PaaS)
- On-Premise multi-worker
Performance
- Single-pass CSV parsing
- Streaming Excel read (read-only mode)
- Batched bank statement line creation
Security
- Uses native Odoo journal access rights
- Source file kept as ir.attachment
- No external service calls
Version History
What's New
Frequently Asked Questions
Got Questions?
Which banks are supported?
How is this different from Odoo's built-in Import File button?
Does it work on Odoo Community?
What if my CSV starts with account holder name and period header?
Do I need openpyxl?
Is this available for Odoo Community and Enterprise?
Do purchases include future version upgrades?
Related Products
Indonesia Bank Statement Import v18.0.2.0.0 · OPL-1
License · © 2026 Lema Core Technologies
Indonesia Bank Statement Import (BCA / Mandiri / BRI / BNI)
Import bank statements directly from the four major Indonesian banks into Odoo 18 bank journals — no enterprise modules required.
Works on Odoo 18 Community and Enterprise. Hard dependency: account. Soft dependency: openpyxl (only for BRI .xlsx files).
What This Module Solves
Stock Odoo 18 Community has no account_bank_statement_import module (it is enterprise-only). Even on enterprise, Indonesian bank export formats (BCA mutasi CSV, Mandiri e-statement, BRI mutasi, BNI export) are not recognised. This module provides a standalone import wizard with parsers tuned for each bank.
Supported Banks
The presence of Tgl Valuta or Branch is what distinguishes BRI from the BNI Debit/Kredit variant — they share the same 5 base columns.
Number and Date Format Support
Both Indonesian (1.234.567,89) and standard (1,234,567.89) decimal formats are auto-detected. Date formats are handled per bank:
- BCA: DD/MM (year inferred) or DD/MM/YYYY
- Mandiri: DD-MM-YYYY or DD/MM/YYYY
- BRI: DD-Mon-YYYY including Indonesian month abbreviations (Mei, Agt, Okt, Des)
- BNI: DD/MM/YYYY
Installation
pip install openpyxl # required only for BRI .xlsx imports
odoo-bin -c odoo.conf -d <database> -i lm_bank_statement_import_id --stop-after-init
Or from the UI: Apps → search "Bank Statement Import" → Install.
Usage
The wizard has three steps: Upload → Preview → Confirm.
Entry point — from a Bank Journal (recommended):
- Open Accounting → Configuration → Journals and pick a bank journal.
- Optionally set the Indonesian Bank Format under the Journal Entries tab; default Auto-detect is usually correct.
- Click the Import ID Statement smart button at the top right.
Step 1 — Upload: drag-and-drop or browse for the .csv / .xlsx file. Click Parse File.
Step 2 — Preview: the wizard parses the file and shows the detected bank, account number, opening / closing balance, transaction count, and a sortable, filterable transaction table. Inflow rows are green, outflow rows are red. Use the search box to filter by description or reference.
Step 3 — Confirm: click Confirm Import. The wizard creates one account.bank.statement record with one line per transaction, attaches the original file for audit, and redirects to the new statement.
The normal Odoo bank reconciliation flow then takes over.
Demo Files
The module ships realistic sample CSVs at static/demo/ for every supported bank, so you can test the wizard without exporting from real internet banking. See the static/demo/README.md for instructions.
Common Issues
- "Unsupported file format. Could not detect bank from header." — open the CSV and verify the first non-empty row matches one of the signatures above. The wizard scans the first 20 rows, so preamble lines (account number, holder name) are tolerated automatically.
- BRI .xlsx fails with "openpyxl is required" — run pip install openpyxl and restart Odoo.
- All transactions imported with amount = 0 — check that the Debit / Kredit columns contain digits in your file.
License
OPL-1. Copyright Lema Core Technologies — https://lemacore.com
Changelog
- 2.0.0 — Chain balance_start of the new statement with the journal's last statement balance_end_real so Odoo's statement balance check stays consistent across imports. Adds a dashboard kanban quick-import button that shows on bank journals with a pinned bank format. Wizard's journal_id / bank_format fields become read-only when the wizard is opened from a journal context (only editable when launched from the menu).
- 1.0.0 — Initial release: BCA, Mandiri, BRI, BNI (two variants), OWL preview widget, Indonesian number/date format support.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module