| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1924 |
| Technical Name |
collection_reconciliation_report |
| License | OPL-1 |
| Website | https://github.com/haythamafify |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1924 |
| Technical Name |
collection_reconciliation_report |
| License | OPL-1 |
| Website | https://github.com/haythamafify |
Collection Reconciliation ReportKnow exactly which payment settled which invoice - with KPI dashboard, aging analysis, customer scoring, PDF statements, and XLSX export. Built on pure SQL for fast, reliable reporting.
Odoo 18 Ready
Community & Enterprise
OPL-1 License
|
The Problem Odoo Doesn't SolveOdoo's native accounting shows you an invoice balance. It does not show which payment settled which portion of which invoice - especially with partial payments or one payment covering multiple invoices. This creates blind spots: no allocation drill-down, no payment delay visibility, no collection scoring. |
What You Get
|
Screenshots Showcase
KPI Dashboard
Total collected, collection efficiency %, recovery ratio, overdue exposure, average payment delay, top 3 collectors - SQL-calculated per company and currency.
Reconciliation Lines - Aging View
Every payment-invoice allocation grouped by aging bucket (Current / 1-30 / 31-60 / 61-90 / 90+ days) with color-coded badges and subtotals.
Customer Collection Score
0-100 score on the partner form, color-coded green/yellow/red/gray. Recomputed daily by cron or on-demand by the manager.
Collection Reminder Email
One-click wizard generates a ready-to-send email with overdue total, oldest invoice date, and invoice count - logged in the chatter automatically.
PDF Customer Statement
Professional per-customer statement with invoice table, aging summary by bucket, and total outstanding - ready to send to clients.
Search Panel & Filters
Filter by Company, Journal, or Customer from the sidebar. Group by Salesperson, Month, Aging Bucket. Export to XLSX in one click.
Smart Button Integration
One-click navigation from invoice -> Collection Analytics, and from payment -> Payment Allocations. Full drill-down context preserved.
Refresh Audit Trail
Every materialized-view refresh logged with timestamp, duration, mode, and status. No silent failures.
KPI Metrics & Comparison
| SQL Calculated Metric | What It Tells You |
|---|---|
| Collection Efficiency | % of invoice amount actually collected. >80% is healthy. |
| Recovery Ratio | Collected / (collected + residual) - how much of total debt recovered. |
| Monthly Growth | Month-over-month change in collections. Negative = alert. |
| Overdue Exposure | Total residual on past-due invoices in company currency. |
| Avg Payment Delay | Days between due date and payment. Drives cash flow forecasting. |
| Unpaid Invoice Ratio | % of invoices with residual > 0. |
| Top Collectors | Ranked salespeople by collected amount with totals shown. |
| Feature | Odoo Native | This Module |
|---|---|---|
| Per-allocation breakdown | ||
| Payment delay days | ||
| KPI dashboard | ||
| Customer collection score | ||
| PDF customer statement | ||
| Collection reminder wizard | ||
| XLSX export with subtotals | ||
| Materialized view mode | ||
| Refresh audit trail |
Deep Dive Features
Reconciliation LinesEvery |
Collection Score (0-100)Formula: |
PDF StatementsPer-customer: invoice date, number, due date, amount, collected, residual, aging bucket. Aging summary table at bottom. |
Collection ReminderManager-only wizard. Auto-fills customer and template. Email includes overdue total, oldest invoice date, invoice count. Logged in chatter. |
Materialized ViewToggle in Settings. Concurrent refresh with |
Role-Based AccessUser: view lines + score. |
Supported Scenarios
• Paid On TimeInvoice paid before due date. Delay = 0, payment_state = paid. |
• Paid LatePayment after due date. Delay days > 0 - visible in report and KPI average. |
• Partially PaidCustomer pays less than total. Residual > 0, payment_state = partial. |
• Multi-PaymentOne invoice settled by two payments. Both allocations shown. |
• Credit Note Offsetout_refund reconciled against invoice. Normalized with correct polarity. |
• Multi-CurrencyCollected amount uses invoice currency when available, falls back to company amount. |
Technical Highlights
Architecture
|
account_partial_reconcile
|
v
reconcile_base CTE
(JOIN account_move_line x 2
JOIN account_move x 2
LEFT JOIN account_payment x 2)
|
v
normalized CTE
(invoice payment detection)
|
v
final_allocations CTE
(+ allocation_count window fn)
|
v
collection_reconciliation_report
(VIEW or MATERIALIZED VIEW)
|
Scope - Please Read Before Buying
This module reports on payment-to-invoice allocations. An invoice with zero payments ever applied will not appear in Reconciliation Lines or Collection Score, even if overdue. For fully-unpaid invoices, pair this with Odoo's native Customer Aging Report. This module's strength is allocation-level analytics that native Odoo doesn't provide.
Dependencies & Compatibility
Required: account (Odoo Invoicing / Accounting)
XLSX Export: Built-in via xlsxwriter - bundled with Odoo. No additional install required.
Compatibility: Odoo Community & Enterprise v18.0 - PostgreSQL 12+
Professional Support & Services
For bugs, feature requests, custom Odoo development, or integrations:
Licensed under OPL-1 - commercial use permitted for the purchasing organization.
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