Bank-Odoo Sync Bridge

Automated Indonesian Bank Statement Integration

-
Companies
-
Active Bank Accounts
-
Syncs (7 days)
-
Transactions (7 days)

Sync History Timeline

Project Overview

This application bridges Indonesian bank statements (starting with Mandiri) to Odoo accounting instances. Banks send daily Excel statements via email, which are parsed and pushed to the corresponding Odoo bank journal.

Architecture: Hybrid approach using n8n for email automation + Flask for management UI
Flow:
┌──────────────┐
│ Mandiri Bank │ (Sends daily email with Excel attachment)
└──────┬───────┘
       │
       ↓
┌──────────────┐
│     n8n      │ (Email trigger → Parse Excel → Transform)
└──────┬───────┘
       │
       ↓
┌──────────────┐
│ Odoo API     │ (Push bank statement lines)
└──────┬───────┘
       │
       ↓
┌──────────────┐
│  Database    │ (Log sync results)
└──────┬───────┘
       │
       ↓
┌──────────────┐
│  Flask UI    │ (Display dashboard, manage accounts)
└──────────────┘
                

Database Schema

Three main tables: companies, bank_accounts, and sync_logs. See schema.sql for complete structure with sample data.

Excel Format (Mandiri): DATE, LABEL, AMOUNT

Developer Tasks

Next Steps:

  • Email Service: Choose and configure email receiving method (IMAP, Mailgun, SendGrid, etc.)
  • n8n Workflow: Build the email → parse → Odoo workflow in n8n
  • Odoo API Integration: Implement bank statement creation via Odoo XML-RPC or JSON-RPC
  • Excel Parser: Handle Indonesian date formats (DD/MM/YYYY) and currency (IDR)
  • Management UI: Add CRUD pages for companies and bank accounts
  • Authentication: Implement simple password protection
  • Error Handling: Add email notifications for failed syncs
  • Duplicate Detection: Prevent re-syncing same transactions

Tech Stack

Flask 3.0.3
Web Framework
SQLite
Database
n8n
Automation
Pandas
Excel Parsing
Chart.js
Visualization
Odoo API
Integration