Collect recurring SEPA, Bacs & ACH direct debits in Odoo via GoCardless mandates, webhooks and automated reconciliation. Built, installed & supported by ECOSIRE. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Collect recurring SEPA, Bacs & ACH direct debits in Odoo via GoCardless mandates, webhooks and automated reconciliation. Built, installed & supported by ECOSIRE.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Stop chasing failed card payments and manual bank transfers. This is a build-to-order Odoo integration — designed, built, installed and supported by ECOSIRE — that connects your Odoo 17, 18 or 19 database directly to GoCardless so you can collect low-cost bank-to-bank direct debits across SEPA (EUR), Bacs (GBP), ACH (USD), BECS (AUD) and PAD (CAD) without leaving Odoo.
Dedicated gocardless.mandate model with full lifecycle status (pending, active, cancelled, expired, failed) linked to res.partner
Hosted mandate authorisation via GoCardless Billing Request Flow, surfaced from the Odoo customer portal
Multi-scheme support: SEPA Core (EUR), Bacs (GBP), ACH (USD), BECS (AUD) and PAD (CAD) with per-scheme charge-date and advance-notice handling
Automatic collection creation when an account.move customer invoice is confirmed for a partner with an active mandate
Recurring collection sweep via ir.cron for subscription and repeat billing on the correct scheme charge dates
One-off 'collect now' server action / button on the invoice for ad-hoc charges against an existing mandate
At its core the module adds a proper GoCardless mandate lifecycle to Odoo. We introduce a dedicated gocardless.mandate model (models.Model) linked one-to-many from res.partner, with fields for scheme, mandate reference, status and the GoCardless customer/bank-account IDs. Compute fields using @api.depends roll up each customer's active-mandate state and outstanding collection totals so your finance team sees everything on the partner form. Mandates are created either through a hosted GoCardless authorisation flow (Billing Request Flow) surfaced from the customer portal, or set up by your team from a mandate wizard — the customer authorises once, and every future invoice can be collected against it.
Collection is wired into the documents you already use. When an account.move (customer invoice) is confirmed for a partner with an active mandate, the module can create a GoCardless payment for the balance due, respecting scheme-specific charge dates and advance-notice rules. For subscription and recurring revenue, it hooks into your billing cadence (Odoo subscriptions or a scheduled ir.cron sweep) to batch-create collections on the correct dates. One-off "collect now" actions are available directly from the invoice via a server action / button for ad-hoc charges.
The hard part of direct debit is what happens after you submit — and that is exactly what we automate. A secured, signature-verified webhook controller (JSON-RPC style HTTP endpoint) ingests GoCardless events (payment confirmed, paid_out, failed, charged_back, mandate cancelled/expired) and reconciles them against the originating Odoo payment. Confirmed collections post an account.payment and reconcile it to the invoice; payouts can be matched to your bank statement lines to close the loop end-to-end. Failed and charged-back payments are flagged, the invoice is re-opened, and a configurable retry policy (with backoff and a max-attempt cap) re-presents the collection or escalates to your dunning process — so a bounced debit never silently slips through.
Everything is built to Odoo standards: strict ir.model.access.csv plus record rules so only Accounting/Finance roles can view mandates and trigger collections, QWeb-ready mandate confirmation documents, clean OWL/XML views with status ribbons, and a settings page holding your GoCardless access token and webhook secret. It runs on Community and Enterprise, uses the official GoCardless API, and — because it is written natively — coexists cleanly with your existing accounting localisation and payment providers.
Because this is a bespoke build, we scope it to your schemes, currencies, subscription model and reconciliation workflow before we write a line of code. Typical delivery is 2–4 weeks. You receive the full module source, a sandbox-verified deployment, documentation and a support window — no black boxes, no per-transaction lock-in beyond GoCardless's own published fees.
Runs recurring plans in EUR or GBP and wants to move customers off expensive cards onto low-cost SEPA/Bacs direct debit, with mandates and renewals handled inside Odoo instead of a separate GoCardless dashboard.
Needs every confirmed collection and payout to auto-post as an account.payment and reconcile against the right invoice, with failed and charged-back debits flagged immediately rather than discovered at month-end.
Bills clients or members on a regular cadence and wants one authorised mandate per customer to drive automatic recurring collections, retries on failure, and a clean portal experience for sign-up.
Buy the license on ecosire.com and download the GoCardless SEPA Direct Debit 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 GoCardless SEPA Direct Debit 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 |
|---|---|---|---|---|
| Time to a working, reconciled direct-debit flow | 2–4 weeks, scoped and delivered done-for-you | Months of in-house dev, design and testing | Fast to install but generic; still needs config work | |
| Multi-scheme (SEPA, Bacs, ACH, BECS, PAD) | Only what you build and maintain | Often SEPA-only or limited schemes | ||
| Webhook-driven reconciliation to account.payment | Must build signature verification and matching yourself | Partial — varies by vendor, often manual matching | ||
| Configurable failed-payment retry & dunning hooks | You design the whole retry engine | Rarely included or basic | ||
| Fit to your subscription model & reconciliation workflow | ||||
| Source code ownership & documentation handed over | Usually closed/obfuscated, licence-locked | |||
| Runs on Odoo 17, 18 and 19, Community & Enterprise | Depends on your team | |||
| Ongoing support & version-upgrade path | Your team owns all maintenance |
This is a build-to-order module, not an instant apps.odoo.com download. After purchase we run a short scoping call to confirm your schemes, currencies, Odoo version and reconciliation workflow, then build, test in a GoCardless sandbox, and deploy. Typical delivery is 2–4 weeks depending on scope. You get the sandbox-verified module first, then we promote it to production together.
Every build includes a post-launch support window for bug fixes, adjustments and questions, plus documentation and a training session. Because we hand over the full source, you own the code. We can also provide ongoing maintenance — including updates when you upgrade across Odoo 17, 18 and 19 or when GoCardless changes its API — under a separate support agreement.
It runs on both Odoo Community and Enterprise, on versions 17, 18 and 19. The module is written natively (models.Model, ir.model.access.csv, record rules, QWeb, OWL/XML views) so it coexists cleanly with your accounting localisation and existing payment providers. We pin the __manifest__.py to your target series and test against it.
The webhook controller ingests GoCardless failure and charged-back events, re-opens the affected invoice, flags the mandate on the partner record, and applies a configurable retry policy — backoff plus a maximum attempt cap — before escalating to your dunning process. Nothing silently disappears; the status is always visible on the invoice and customer form.
Yes. Your GoCardless access token and webhook secret live in Odoo settings, never hard-coded. The webhook endpoint verifies the GoCardless signature on every event to reject spoofed requests, and access to mandates and collection actions is restricted to Finance roles via ir.model.access.csv and record rules. We verify the full flow in a sandbox environment before going live.
Yes. For recurring revenue the module runs a scheduled sweep (ir.cron) that creates GoCardless collections on the correct scheme charge dates against each customer's active mandate, respecting SEPA/Bacs advance-notice rules. It can hook into Odoo subscriptions or your own billing cadence, and confirmed collections auto-reconcile to the generated invoices.
Collect recurring SEPA, Bacs & ACH direct debits in Odoo via GoCardless mandates, webhooks and automated reconciliation. Built, installed & supported by ECOSIRE.