A build-to-order Odoo module that manages internal payment transfers between cash and bank journals as a single, auditable operation with clean two-sided reconciliation. Requested by quotation, then built, installed, and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
Manifiesto de la app
Diseñado en torno a tu flujo de trabajo
A build-to-order Odoo module that manages internal payment transfers between cash and bank journals as a single, auditable operation with clean two-sided reconciliation. Requested by quotation, then built, installed, and supported by ECOSIRE.
Sin configuración por tu cuenta: una app funcional creada, instalada y con soporte de ECOSIRE.
Empieza con un precio único de desarrollo. Definimos el alcance contigo en el arranque.
ECOSIRE la crea, la configura y la instala en tu Odoo.
Sales en vivo en unas 2–4 semanas, con un periodo de soporte posterior al lanzamiento.
Moving money between your own accounts — petty cash to the operating bank, one bank to another, a POS till drop to the safe — sounds trivial until you do it in accounting. In stock Odoo, an internal transfer between a cash journal and a bank journal is stitched together from separate outbound and inbound account.payment records (or manual account.move entries) that land in a transfer/suspense account and then have to be matched by hand. When someone forgets the second leg, or reconciles the transfer account against the wrong counterpart, you get a phantom balance in the suspense account that surfaces weeks later at month-end. Finance teams end up policing a control account that Odoo never designed to be a first-class object.
This build-to-order module makes the internal transfer a single, intentional operation. We add a dedicated account.internal.transfer model (with the outbound and inbound account.payment legs generated and linked as a One2many) so that choosing a source journal, a destination journal, an amount, a date, and an optional reference produces both sides atomically, posted through your configured internal-transfer/liquidity-transfer account. Computed fields via @api.depends keep the running source and destination balances visible on the form, @api.constrains blocks same-journal or negative-amount transfers before they post, and the state machine (draft → posted → reconciled / cancelled) mirrors Odoo's own payment lifecycle so nothing feels bolted on. Multi-currency transfers compute the exchange difference and route it to the currency-gain/loss account you nominate. Everything is delivered as clean, upgrade-safe source: a proper __manifest__.py, models under models/, ir.model.access.csv plus record rules for who may create versus post transfers, list/form/search views (and OWL/QWeb where a richer widget helps), and an optional QWeb PDF "transfer voucher" for signature.
We can extend the base scope to match how your team actually works: an approval step (draft transfer requires a manager to post, wired through an automated action or an activity), a transfers dashboard filtered by journal and date, a scheduled reconciliation helper that auto-matches the two legs against the transfer account, cheque/DD reference tracking for bank-to-bank moves, and full XML-RPC/JSON-RPC endpoints so treasury tooling or a bank feed can create transfers programmatically. The module targets Odoo 17.0, 18.0, and 19.0 and works on both Community and Enterprise — where Enterprise-only features (like bank statement auto-reconciliation or accounting reports) exist we integrate with them rather than reinventing them, and on Community we deliver the equivalent behavior in-module.
Because this is made to order, nothing ships until we agree on scope. After you request a quotation we run a short scoping call, confirm your journal setup, transfer/suspense account, currencies, and approval rules, then build against a staging copy of your database, run UAT with your finance users, and deploy with a rollback plan. Typical delivery is 2-4 weeks from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company transfers, multi-currency exchange-difference handling, approval workflows, and integration with external treasury or bank-feed systems increase the quoted scope. You receive a fixed quote after the scoping call — never a surprise invoice.
Owns the general ledger and hates chasing an unbalanced transfer/suspense account at month-end. Needs internal transfers recorded as one auditable action with clear approval and reconciliation, not two loose payments to police.
Moves money between multiple bank and cash journals daily, sometimes across currencies. Wants live journal balances, cheque/DD tracking, and API-driven transfer creation so treasury tooling and bank feeds stay in sync with Odoo.
Runs several legal entities in one Odoo database and needs company-scoped journals, record rules on who can post, and consistent inter-company transfer handling that survives audit.
Records daily till drops and cash-to-bank deposits from stores. Needs a fast, controlled way to log cash movements with a signed voucher and no manual journal entries by store staff.
| Criterio | ECOSIRE | Construcción personalizada | Competidor | Odoo Nativo |
|---|---|---|---|---|
| How a transfer is recorded | Single atomic `account.internal.transfer` generating both linked legs | Whatever your developer builds — quality varies | Usually a helper form that still creates two payments | |
| Reconciliation of the transfer account | Auto-match helper nets the control account to zero | Depends on the build | Sometimes assisted, often still manual | |
| Validation & controls | `@api.constrains` blocks same-journal/zero/negative; record rules on post | Only if explicitly specified and tested | Basic or none | |
| Multi-currency exchange difference | Computed and routed to your nominated gain/loss account | Extra work, often skipped | Rarely handled cleanly | |
| Approval workflow | Optional manager-post step via record rules/automated actions | Buildable at added cost | Seldom included | |
| API / programmatic creation | `XML-RPC`/`JSON-RPC` methods with same rules as the UI | Possible if scoped | Generally not exposed | |
| Fit to your journals & workflow | Scoped to your setup, tested on your staging DB | Fully bespoke but you own all risk | Generic, configure-around-it | |
| Support & handover | Docs, training, support window, full git repo | Whatever you arrange with the developer | Vendor ticket queue, no source ownership |
No. This is a build-to-order module. ECOSIRE builds it against your Odoo configuration after you request a quotation and we agree on scope — there is no instant download. You receive installable, upgrade-safe source code once it is built and passes UAT.
Typical delivery is 2-4 weeks from confirmed scope. The clock starts once the scoping call is done and we have agreed on your journals, transfer account, currencies, and approval rules. Larger scopes — multi-company, external integrations, or data migration — can extend the timeline, which we state in the quote.
Pricing starts from $249 as an indicative single-company base-scope figure. After a short scoping call we send a fixed quote based on your actual requirements — multi-company, multi-currency exchange handling, approval workflows, and treasury/bank-feed integration increase scope. You approve the fixed quote before we build; no surprise invoices.
We target Odoo 17.0, 18.0, and 19.0 on both Community and Enterprise. Where Enterprise provides features like bank statement auto-reconciliation we integrate with them; on Community we deliver the equivalent behavior inside the module.
Every build includes a post-go-live support window for defect fixes and questions. Because you receive the full git repository, your team can maintain it independently, or we can quote a maintenance/version-upgrade engagement to move the module to a future Odoo release.
No — that is exactly the problem it solves. Each transfer generates both the outbound and inbound legs atomically and links them, and the reconciliation helper matches them against your transfer/suspense account so the control account nets to zero. Same-journal, zero, and negative transfers are blocked by `@api.constrains` before they post.
Yes. We expose `XML-RPC`/`JSON-RPC` methods so treasury tooling, a bank feed, or your own scripts can create and post internal transfers programmatically, subject to the same record rules and validations as the UI.
A build-to-order Odoo module that manages internal payment transfers between cash and bank journals as a single, auditable operation with clean two-sided reconciliation. Requested by quotation, then built, installed, and supported by ECOSIRE.