| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 172 |
| Technical Name |
grev_od_refund_payment |
| License | OPL-1 |
| Website | https://grevlin.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 172 |
| Technical Name |
grev_od_refund_payment |
| License | OPL-1 |
| Website | https://grevlin.com |
| Versions | 17.0 18.0 19.0 |
|
💰
Refund Payment RoutingTake full control of where your refund payments go — advance credit, bank transfer, or standard waiting account.
|
|
|
|
|
|
Need Help?For support, contact us at odoo@grevlin.com Follow us on X: @GrevlinGlobal ⭐ 30 days free support ⭐ |
Refund Payment Routing
Route refund payments to an advance credit, a bank or mobile money account, or keep the standard Odoo waiting-account behaviour.
Overview
In many jurisdictions every credit note (refund invoice) must have a corresponding refund payment. By default, Odoo records this payment against the outgoing waiting account, where it stays until matched with a bank statement.
Refund Payment Routing adds a Refund Routing field to the payment registration wizard so that accountants can choose the payment destination at the moment of payment:
- Advance -- credit the partner's receivable (or payable) account so the amount appears as an outstanding credit on future invoices.
- Bank / Mobile Money -- transfer the amount to a specific bank or cash journal, sending money directly to the customer.
- Nothing -- keep the default Odoo behaviour (waiting account).
The module works with both customer credit notes (out_refund) and vendor credit notes (in_refund), and supports multi-currency transactions.
Configuration
No additional configuration is required. Once installed the module automatically extends the payment registration wizard with the new routing fields.
Note
The routing fields only appear when registering a payment on a credit note. Regular invoice payments are not affected.
Usage
Registering a Refund Payment
- Open a posted credit note via :menuselection:`Accounting --> Customers --> Credit Notes` (or :menuselection:`Accounting --> Vendors --> Refunds`).
- Click :guilabel:`Register Payment`.
- In the payment wizard, a new :guilabel:`Refund Routing` field appears below the payment method.
- Choose one of the three options described below.
- Click :guilabel:`Create Payment`.
Advance Routing
Select Advance to move the refund amount from the outgoing waiting account to the partner's receivable (or payable) account.
What happens behind the scenes:
- The standard payment is created and reconciled with the credit note as usual.
- A second journal entry is posted in the same journal:
- Debit the outstanding payment account
- Credit the receivable account (with the partner set)
- The outstanding-account lines from both entries are auto-reconciled, clearing the waiting balance.
The new receivable credit will appear in the Outstanding credits widget the next time you open an invoice for the same partner. Click :guilabel:`Add` on the invoice to apply it.
Tip
This is ideal when you want to keep the refund amount within the partner's account and offset it against a future sale.
Bank / Mobile Money Routing
Select Bank / Mobile Money to send the refund directly to a bank or cash account.
- After choosing this option, a :guilabel:`Routing Journal` field appears. Select the target bank or mobile money journal.
- On confirmation, the module posts a routing entry in the
selected journal:
- Debit the outstanding payment account
- Credit the bank journal's default liquidity account
- Outstanding-account lines are auto-reconciled.
Tip
Use this when the customer should receive cash back immediately, for example via mobile money transfer.
Default Behaviour (Nothing)
Select Nothing (the default) to keep standard Odoo behaviour. The refund payment stays in the outgoing waiting account and will be matched during bank reconciliation. No routing entry is created.
Technical Details
Models Inherited
| Model | Type | Purpose |
|---|---|---|
| account.payment.register | Transient (wizard) | Adds routing fields and overrides payment creation |
Fields Added
| Field | Type | Description |
|---|---|---|
| is_refund_payment | Boolean (computed) | True when all source moves are credit notes |
| refund_payment_routing | Selection | Routing choice: nothing, advance, or bank |
| refund_routing_journal_id | Many2one (account.journal) | Target journal for Bank / Mobile Money routing |
Key Methods
- _create_payments
- Overridden to call routing logic after the standard payment creation and reconciliation.
- _route_to_advance(payment)
- Creates a journal entry that debits the outstanding account and credits the receivable/payable account, then reconciles.
- _route_to_bank(payment)
- Creates a journal entry in the selected bank journal that debits the outstanding account and credits the bank liquidity account, then reconciles.
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