Tokenized auto-charge engine for Odoo subscriptions, memberships, and rentals — saved-card renewals, proration, and retries. Built to order. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Tokenized auto-charge engine for Odoo subscriptions, memberships, and rentals — saved-card renewals, proration, and retries. Built to order.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Odoo's core subscription and rental flows can generate a recurring invoice on schedule — but out of the box they still lean on your customer to log in and pay each renewal manually. For a membership club, a SaaS product, or an equipment-rental business, that manual step is exactly where revenue leaks: expired sessions, forgotten emails, and involuntary churn.
Saved-token auto-charge on renewal — vaults a payment.token on first subscription, then captures automatically on each recurring date with zero customer interaction
Multi-gateway tokenization built on Odoo's payment.token / payment.provider abstraction, so the same auto-charge logic spans Stripe and other tokenizing acquirers we wire for your region
Proration and plan-change billing — upgrades, downgrades, and mid-cycle switches compute prorated credits/charges against the remaining period on the resulting account.move
Mandate and consent capture — records recurring-payment authorization (amount, cadence, start date, IP/timestamp) and generates a QWeb mandate document for audit and dispute defense
Failed-charge retry hook (dunning) — configurable retry schedule with exponential backoff, driven by an ir.cron automated action, before a subscription is flagged past-due
Automated renewal charging via ir.cron — a scheduled action scans due subscriptions, generates the renewal invoice, and captures payment server-side, no manual batch run
ECOSIRE builds a tokenized auto-charge engine that closes that gap. Instead of emailing a payment link, the module vaults a payment method the first time a customer subscribes (capturing the card/gateway token, never the raw PAN — your Odoo database stays out of PCI scope), records the recurring mandate and consent, and then charges that saved token automatically on every renewal date. The renewal invoice is generated, the payment is captured server-side through your existing Odoo payment provider, and the customer receives a paid invoice — with no login and no clicks.
This is a build-to-order engagement, not an apps.odoo.com download. We write a proper custom module (__manifest__.py, models/ extending sale.subscription / sale.order / account.move, security/ir.model.access.csv plus record rules, views/ in XML and OWL, and a QWeb mandate/receipt report), wire it to your specific payment acquirers, install it on your Odoo 17, 18, or 19 instance, and support it. Every scheduled charge runs through an ir.cron automated action; failed charges fire a retry hook (dunning) and a mail.activity for your billing team so nothing silently drops off.
The engine is gateway-agnostic by design: it uses Odoo's payment.token abstraction so the same auto-charge logic works across Stripe, and any tokenizing acquirer we integrate for your region. Plan changes are handled properly — upgrade, downgrade, or mid-cycle switches compute prorated credits and charges against the remaining period, exactly as your finance team would expect on the resulting account.move.
You get the source code, a documented configuration, admin and end-user training, and a support window. Because it's your own module and not a locked marketplace binary, you keep full control — read the ORM, adjust a compute, add a field — and we keep it running.
Clubs, gyms, professional bodies, and communities running dues on Odoo who need annual or monthly memberships to renew silently on a saved card — with clean lapse/dunning handling when a card expires — instead of chasing members to log in and pay.
Software and digital-service teams billing recurring plans in Odoo who need reliable off-session renewals, mid-cycle upgrade/downgrade proration, and a retry-then-suspend dunning flow to cut involuntary churn.
Rental operators using Odoo's rental/subscription flows who want ongoing rental periods auto-charged to a vaulted payment method, with mandates on file and automatic retries so long-term hires keep billing without manual invoicing.
Buy the license on ecosire.com and download the Recurring & Auto-Charge Subscriptions Payment for Odoo module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Recurring & Auto-Charge Subscriptions Payment for Odoo, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Off-session auto-charge on saved token at renewal | Core capability — merchant-initiated capture via ir.cron, no customer action | Buildable but you engineer token vaulting, off-session flags, and cron yourself | Varies; many marketplace apps only email a payment link | |
| Built and installed for you on Odoo 17/18/19 | Yes — scoped, built, staged, and deployed by ECOSIRE | Only if you have in-house Odoo developers to build and maintain it | Self-install binary; you configure and troubleshoot alone | |
| Proration on mid-cycle plan change | Prorated credit/charge computed on the resulting account.move | Must be designed and tested from scratch | Inconsistent across apps; often manual credit notes | |
| Mandate / recurring consent capture + QWeb document | Recorded (amount, cadence, timestamp) with an audit-ready QWeb mandate | You design the data model and report | Rarely included | |
| Failed-charge retry / dunning engine | Configurable retry-then-suspend with backoff + billing-team activity | You build the retry scheduler and state machine | Basic or fixed retries in some apps | |
| Multi-gateway tokenization | Gateway-agnostic on payment.token; acquirers wired for your region | Each acquirer integrated by hand | Usually locked to one or two providers | |
| Source code ownership + right to modify | Full source handed over — read the ORM, adjust a compute, extend fields | You own it (you also built it) | Often obfuscated/locked marketplace binary | |
| Ongoing support + version-compatibility check | Post-go-live support window + minor-version compatibility check | You maintain it in perpetuity | Ticket queue; upgrades may cost extra or lag |
This is a build-to-order module, not an instant download. Typical delivery is 2-4 weeks depending on how many payment gateways and plan-change rules you need. The flow is: a short scoping call to confirm your Odoo version, edition (Community or Enterprise), acquirers, and dunning policy; then we build the module, install it on your staging instance for UAT, and after your sign-off deploy to production with the ir.cron charge job enabled.
Every engagement includes a post-go-live support window for bug fixes and questions, plus a compatibility check if you apply an Odoo minor-version update during that window. Because we hand over the full source, your team can also maintain and extend it directly. Extended support and version-upgrade retainers (for example moving the module from Odoo 17 to 18 or 19) are available on request.
No. Odoo core (and the Enterprise Subscriptions app) can generate recurring invoices and send payment links, but the reliable off-session, merchant-initiated auto-charge on a vaulted token — with proper proration, mandate capture, and a configurable retry/dunning engine — is what this module adds on top. We build against your existing subscription/sale/account models rather than replacing them.
Yes, because we never store raw card numbers. The module uses Odoo's payment.token abstraction: the acquirer (e.g. Stripe) vaults the card and returns a token, and only that token lives in your Odoo database. That keeps your Odoo instance out of cardholder-data (PCI-DSS) scope. We also capture and store the recurring mandate/consent record for audit and dispute defense.
The engine is built on Odoo's gateway-agnostic payment.provider / payment.token layer, so it works with any tokenizing acquirer we integrate for your region — Stripe is the most common. It supports Odoo 17, 18, and 19, on both Community and Enterprise (a few features that depend on Enterprise-only apps are flagged during scoping). Tell us your acquirer and version on the scoping call and we confirm fit before you commit.
The failed-charge retry hook kicks in: the module re-attempts on a schedule you define (with backoff), keeping the subscription active during the grace period. If all retries fail, it applies your chosen policy — auto-suspend, downgrade, or flag past-due — raises a mail.activity for your billing team, and notifies the account owner, so an expired card becomes a handled event rather than silent churn.
Tokenized auto-charge engine for Odoo subscriptions, memberships, and rentals — saved-card renewals, proration, and retries. Built to order.