Dunning + RMA · Odoo 17/18/19 · Free

Subscription dunning and RMA for Odoo: recover the revenue that slips away

Two silent revenue leaks in any subscription business: the subscription charges that fail with nobody retrying them, and the RMA returns that land in the warehouse and get written off as a total loss. This free Odoo module (17, 18 and 19) brings both into a single recovery workspace: it runs card-network-safe retry steps with MIT guards, escalates to write-off, and manages return disposition, so no recoverable pound or euro is left unworked.

Free (0 €, one-time) · Odoo 17/18/19 · No monthly fee · Source code included · Direct support from the developer
Subscription dunningCard-network-safe retry steps with MIT guards.
Return valueReclaim what comes back via RMA instead of writing it off.
One workspaceFailed charges and returns together, not in two separate tools.
Free and native to OdooInside the ERP, no separate SaaS and no monthly fee.
Subscription dunning and RMA recovery workspace inside Odoo 19
Recovery inside your ERPSubscription dunning and return value in the same Odoo.

Real screenshots of the module

The very screens you get in Odoo, working for real.

Odoo dunning and RMA module screenshot Odoo dunning and RMA module screenshot Odoo dunning and RMA module screenshot Odoo dunning and RMA module screenshot

Try the dunning and RMA module inside a real Odoo 19, no sign-up. User demo / flexigodemo.

Try the live demo View on the App Store

Where recoverable revenue gets lost

This is not new debt: it is revenue you already earned that slips away for lack of a process. A subscription charge that fails with nobody retrying it, and a return that lands in the warehouse and gets written off, are the two easiest leaks to plug.

Subscription charges that fail in silence

An expired card or a bounced direct debit leaves the subscription unpaid. Without a dunning policy that retries and notifies in an orderly way, that customer churns by inertia and you lose recurring revenue that was recoverable all along.

Returns written off as a total loss

The product comes back via RMA, lands in the warehouse and stays there. If you never decide whether it gets refurbished, restocked, refunded or claimed from the supplier, that return is booked as a loss even though part of its value was recoverable.

Two processes in two different places

Collections sit with finance on one side and returns sit with the warehouse on the other, each in its own spreadsheet or tool. With no shared space, nobody sees the total value slipping away or puts it in priority order.

What the module does inside Odoo

One module, two recovery workflows: subscription dunning and return RMA, with configurable policies, return disposition and a recovery KPI dashboard. Native to Odoo Community, no Enterprise required.

Configurable dunning policies with retries and write-off

Every overdue invoice opens a dunning case that runs card-network-safe retry steps with MIT guards. You define as many retry steps, email templates and thresholds as you need, and it only escalates to write-off once the policy is fully exhausted.

RMA lifecycle with authorization, inspection and disposition

Every return moves through authorization, inspection and a disposition decision: refurbish, refund or replace. Reason codes flag statutory (legal) returns versus goodwill returns, so you always know your obligation in each case.

Recovery KPI dashboard and customer return portal

A single dashboard covers both workflows: amount overdue, amount recovered and amount at risk, plus value returned, recovered and refunded, and a recovery rate per policy. Customers open their return from a portal form, no phone call needed.

Free, source included, and runs on Odoo Community

It installs from the Odoo App Store and completes the full dunning + RMA loop on a EUR 0 licence with the source code included, on Odoo 17/18/19 Community, with no Enterprise, no SMS gateway and no paid add-ons. Dunning works over email out of the box.

MIT guards that keep retries card-network compliant

Retries respect merchant-initiated-transaction rules so you do not burn through attempts or trigger declines that count against you. The policy engine paces each retry step and stops cleanly, instead of hammering a card that will never clear.

One shared workspace for finance and warehouse

Failed charges and returns live in the same place inside Odoo, so finance and the warehouse work from one view instead of two disconnected spreadsheets. Nothing recoverable falls between the two teams.

The person who builds the module is the person who supports you

FlexigoTech is Flexibles y Accesorios Gobe, S.L., based in Barcelona. Development is handled by a single developer, so when you ask about dunning or the returns flow you talk directly with the person who wrote the code, not a salesperson and not a first-line support desk forwarding tickets.

17/18/19Odoo native
0 €free module
BCNin-house development

What it does and what it doesn't

It is a free, native Odoo module, with no external platform and no SaaS fee. We don't fake reviews or customer cases. It runs card-network-safe retry steps with MIT guards and manages return disposition, but it does not replace your payment gateway or your warehouse: the gateway charges the card, the warehouse moves the stock. We tell you this before you install it, not after.

Try the live demoAsk a question

If recovering revenue matters to you, this fits too

Dunning and returns rarely travel alone. They usually show up alongside the need to bring subscriptions, finance and operations together inside a single Odoo.

Frequently asked questions about dunning and RMA

What is subscription dunning in Odoo and why do I need to manage it?

Dunning is the process of recovering failed subscription payments: when a card is declined or a direct debit bounces, you need to retry the charge and notify the customer in an orderly way before writing the account off. Without a defined process, those failed charges quietly pile up into avoidable churn and lost recurring revenue. This module opens a dunning case for every overdue invoice and runs card-network-safe retry steps with MIT guards, escalating to write-off only once the retry policy is exhausted.

What does RMA have to do with recovering failed payments?

They are two sides of the same value-recovery job. Dunning recovers revenue from failed charges; RMA (return merchandise authorization) recovers value from the products that come back: refurbish, refund or replace instead of writing the return off as a total loss. The module brings both workflows into a single workspace so neither one is left unworked.

Is the module really free?

Yes. It is a free module (0 EUR, LGPL-3, one-time, no monthly fee) that you install from the Odoo App Store, and the full source code is included. It runs card-network-safe retry steps with MIT guards and manages return disposition, but it does not replace your payment gateway or your warehouse: the gateway charges the card and the warehouse moves the stock.

Does it work with Odoo Community?

Yes. The module runs on Odoo Community with no Enterprise required, across Odoo 17, 18 and 19. The whole dunning-plus-RMA loop completes on a free licence with no SMS gateway and no paid modules, and dunning works over email out of the box.

Can I try it before installing it in my own Odoo?

Yes. There is a live demo, a real Odoo 19 with the module already installed and no sign-up (user demo, password flexigodemo), where you can see subscription dunning and RMA return-value recovery managed in the same workspace. Once you are happy with it, you install it from the Odoo App Store, and if you need a hand we help you get it configured.

Every failed charge and every unworked return is revenue you already earned.

The only question is whether you let it slip away or recover it inside Odoo. Tell us how you handle failed charges and returns today and we'll tell you plainly whether the module is a fit.

Try the live demoView on the App Store · +34 639 913 105