Direct Debit Mandates in Odoo 18
By Braincuber Team
Published on January 14, 2026
Your SaaS company has 500 subscription customers paying €49 monthly. Manually processing 500 invoices each month means sending invoices, tracking payments, following up on late payers, and reconciling bank statements. Your accounting team spends 80 hours per month just on payment collection. You need automation that pulls payments directly from customer bank accounts on schedule.
Direct Debit Mandates in Odoo 18 automate recurring payment collection through SEPA (Single Euro Payments Area). Customers sign a mandate authorizing you to debit their bank account. Each billing cycle, Odoo generates an XML file containing payment instructions. Upload this file to your bank, and they automatically collect payments from all customers. No more manual invoice sending, payment tracking, or reconciliation. Works perfectly for subscriptions, memberships, installment plans, and any recurring payment scenario.
What is SEPA Direct Debit? A European payment scheme that allows businesses to automatically collect euro payments from customer bank accounts. Customers sign a mandate (authorization), you submit payment requests to your bank via XML files, and funds are transferred automatically. Supported in 36 European countries within the SEPA zone.
Benefits of Direct Debit Mandates
Automation
Eliminate manual payment processing. Payments auto-collect on schedule without staff intervention.
Cost Reduction
No paper invoices, checks, or manual processing. Reduce admin costs by 60-80%.
Predictable Cash Flow
Know exactly when payments arrive. Better financial planning and resource allocation.
Customer Convenience
Customers don't remember due dates or initiate payments. Automatic and hassle-free.
Reduced Late Payments
Collections happen on time, every time. Fewer overdue accounts and collection calls.
Perfect for Subscriptions
Ideal for recurring payments, memberships, installments, and subscription services.
Understanding SEPA Direct Debit
SEPA DIRECT DEBIT (SDD) EXPLAINED ═══════════════════════════════════════════════════════════ WHAT IS SEPA? ─────────────────────────────────────────────────────────── Single Euro Payments Area - A payment-integration initiative covering 36 European countries, making euro transfers as easy domestically as they are cross-border. SEPA Countries Include: • All 27 EU member states • Iceland, Norway, Liechtenstein, Switzerland • Monaco, San Marino, Andorra, Vatican City, United Kingdom HOW DIRECT DEBIT WORKS ═══════════════════════════════════════════════════════════ Step 1: Customer Signs Mandate Customer authorizes you to debit their account Mandate includes: IBAN, amount limits, frequency Valid until revoked by customer Step 2: Business Initiates Payment Request You create payment collection file (XML) File contains: customer IBANs, amounts, mandate references Upload to your bank's online portal Step 3: Bank Processes Collections Your bank debits customer accounts Funds transferred to your business account Usually takes 2-5 business days Step 4: Automatic Reconciliation Odoo matches payments to invoices No manual reconciliation needed TWO SDD SCHEMES ═══════════════════════════════════════════════════════════ CORE Scheme (B2C - Business to Consumer) • For individual consumers • Most widely used and accepted • All banks must support CORE • Refund period: 8 weeks no-questions-asked B2B Scheme (Business to Business) • For business customers only • Optional - not all banks support it • No refund right for payer (businesses) • Faster collection (1 business day) • Requires B2B mandate agreement COLLECTION TIMELINE ═══════════════════════════════════════════════════════════ CORE Scheme: D-5: Last day to submit payment file to bank D-1: Pre-notification sent to customer D : Collection date (funds debited) D+2: Funds arrive in your account B2B Scheme: D-1: Submit payment file to bank D : Collection date (funds debited) D+1: Funds arrive in your account PRE-NOTIFICATION REQUIREMENT ═══════════════════════════════════════════════════──────── You must inform customers before debiting their account: • Minimum: 14 calendar days before collection • Can be reduced to 1 day with customer agreement • Usually included on invoice or sent separately • States: amount, collection date, mandate reference Example Pre-Notification: "In accordance with mandate reference MND-2026-001, we will debit €49.00 from your account DE89370400440532013000 on 15-Jan-2026."
Important SEPA Rules:
- Pre-notification required: Inform customers at least 14 days (or agreed shorter period) before each collection
- Mandate validity: Mandates expire if unused for 36 months
- Customer refund rights (CORE): Customers can request refunds up to 8 weeks after collection without reason
- First collection vs recurring: First collection requires 5-day notice, recurring needs 2-day notice
Enabling SEPA Direct Debit in Odoo 18
Access Accounting Settings
- Go to Accounting → Configuration → Settings
- Scroll to the Customer Payments section
Enable SEPA Direct Debit
- Check the box for SEPA Direct Debit
- This activates the Direct Debit Mandate functionality
Enter Creditor Identifier
Your Creditor Identifier is a unique code assigned by your bank or national payment authority.
- Format: 2-letter country code + 2-digit check digits + 3-character business code + national identifier
- Example: DE98ZZZ09999999999 (Germany), FR72ZZZ123456 (France)
- How to get it: Request from your bank or register with your national SEPA authority
- Enter this identifier in the Creditor Identifier field
Save Settings
- Click Save to apply changes
- You can now create Direct Debit Mandates
Creating a Direct Debit Mandate
Once SEPA Direct Debit is enabled, create mandates for customers who authorize automatic payments.
DIRECT DEBIT MANDATE CONFIGURATION
═══════════════════════════════════════════════════════════
Navigation: Accounting → Customers → Direct Debit Mandates
Click: NEW to create mandate
REQUIRED FIELDS
───────────────────────────────────────────────────────────
Customer
Select the customer who authorizes the mandate
Example: "TechStart Solutions Ltd."
IBAN (International Bank Account Number)
Customer's bank account for debits
Format: 2-letter country + 2 check digits + account number
Example: DE89370400440532013000 (Germany)
FR1420041010050500013M02606 (France)
NL91ABNA0417164300 (Netherlands)
Journal
Select your bank journal for receiving payments
This is where collected funds will be deposited
Example: "EUR Bank - BNP Paribas"
SDD Scheme
Choose between CORE or B2B:
○ CORE (Standard)
• For consumer/individual customers
• Supported by all banks
• Customer can refund within 8 weeks
• Use for: Subscriptions, memberships, retail
○ B2B (Business-to-Business)
• For business customers only
• Optional scheme - verify bank support
• No refund right for customer
• Faster processing (1-day vs 2-day)
• Use for: B2B subscriptions, services
Pre-notification (Days)
Minimum notice before collecting payment
Legal minimum: 14 days
Can negotiate shorter with customer agreement
Common practice: 7 days
Enter number: 7
Unique Mandate Identifier
Auto-generated or custom reference
Format: Company abbr + year + sequence
Example: TSL-2026-001, MND/2026/00123
Must be unique per customer
Start Date
When mandate becomes valid
Usually: Today or contract start date
Example: 01/01/2026
End Date (Optional)
When mandate expires
Leave blank for indefinite mandates
Use for: Fixed-term contracts
Example: 31/12/2026 (1-year subscription)
Company
Select if you have multi-company setup
Default: Your current company
VALIDATION
───────────────────────────────────────────────────────────
After filling all fields, click VALIDATE button
Status changes: Draft → Active
Mandate is now ready for payment collection
EXAMPLE: SUBSCRIPTION SERVICE MANDATE
═══════════════════════════════════════════════════════════
Customer: CloudSync SaaS Ltd.
IBAN: DE89370400440532013000
Journal: EUR Bank - Deutsche Bank
SDD Scheme: CORE
Pre-notification: 7 days
Mandate ID: CSS-2026-045
Start Date: 15/01/2026
End Date: [blank - ongoing subscription]
Company: Your Company SARL
Monthly Charge: €149.00
Billing: 1st of each month
Description: "Premium Plan - 50 users"
Navigate to Mandates
- Go to Accounting → Customers → Direct Debit Mandates
- Click New to create a new mandate
Fill Mandate Details
- Customer: Select the customer
- IBAN: Enter customer's bank account (e.g., DE89370400440532013000)
- Journal: Select your bank journal for receiving payments
- SDD Scheme: Choose CORE (consumer) or B2B (business)
- Pre-notification: Days of notice before collection (e.g., 7 days)
- Unique Mandate Identifier: Auto-generated or enter custom reference
- Start Date: When the mandate becomes active
- End Date: Optional expiration date (leave blank for ongoing)
Validate Mandate
- Review all information for accuracy
- Click Validate button
- Mandate status changes to Active
- Now ready to use for payment collection
Using Mandates for Payment Collection
Once a mandate is active, Odoo automatically recognizes it when you create invoices for that customer.
SEPA DIRECT DEBIT COLLECTION PROCESS ═══════════════════════════════════════════════════════════ STEP 1: CREATE INVOICE ─────────────────────────────────────────────────────────── Create invoice for customer with active mandate Invoice Details: Customer: TechStart Solutions Invoice Date: 15/01/2026 Due Date: 01/02/2026 Products: Premium Subscription Amount: €149.00 Action: Accounting → Customers → Invoices → New Fill invoice details and click CONFIRM Odoo automatically detects active mandate for this customer STEP 2: GENERATE SEPA XML FILE ─────────────────────────────────────────────────────────── On confirmed invoice, direct debit badge appears Action: Click "Collect Payment" or "Generate SDD File" Odoo creates XML file containing: • Your Creditor Identifier • Customer IBAN • Invoice amount • Mandate reference • Collection date • Payment description File format: SEPA pain.008.001.02 XML File name: sdd_YYYY-MM-DD_sequence.xml Example: sdd_2026-01-15_001.xml STEP 3: UPLOAD TO BANK ─────────────────────────────────────────────────────────── Download the generated XML file Login to your bank's online portal: • Navigate to SEPA Direct Debit section • Upload XML file • Verify collection details • Submit for processing Bank validates: ✓ Creditor Identifier matches your account ✓ Customer IBANs are valid ✓ Collection dates are in future ✓ Amounts within mandate limits STEP 4: BANK PROCESSES COLLECTIONS ─────────────────────────────────────────────────────────── Your bank sends collection requests to customer banks: Timeline (CORE Scheme): D-5: You submit file D-2: Customer banks receive notification D-1: Pre-notification sent to customer D : Funds debited from customer accounts D+2: Funds credited to your account Timeline (B2B Scheme): D-1: You submit file D : Funds debited from customer accounts D+1: Funds credited to your account STEP 5: AUTOMATIC RECONCILIATION ─────────────────────────────────────────────────────────── When payment arrives in your bank account: Odoo automatically: • Imports bank statement • Matches payment to invoice (via mandate reference) • Marks invoice as PAID • Posts accounting entries • No manual intervention needed Invoice Status: Open → Paid Payment Method: SEPA Direct Debit BATCH COLLECTION EXAMPLE ═══════════════════════════════════════════════════════════ Scenario: Monthly subscription billing - 250 customers January 1st: Create 250 invoices (automated) Total: €37,250 Generate single XML file containing all 250 collections Upload to bank (5 minutes) January 15th: All payments collected automatically Success rate: 98% (245 collected, 5 failed) Failed collections (usually due to): • Insufficient funds • Account closed • Mandate revoked Odoo flags failed collections for follow-up Manual Processing Time: Before: 40 hours (manual invoices + chase payments) After: 30 minutes (generate XML + upload) Savings: 39.5 hours per month = 474 hours per year SMART BUTTONS ON MANDATE ═══════════════════════════════════════════════════════════ Active mandate shows smart buttons: [5 Invoices] Click to see all invoices using this mandate [€745.00 Total] Total amount collected via this mandate [View Payments] See payment history Example Mandate Summary: Created: 15/01/2026 Collections: 5 successful Total Value: €745.00 (5 × €149.00) Next Due: 01/03/2026 Status: Active
✅ Collection Best Practices:
- Batch collections: Generate one XML file for all invoices due on same date
- Schedule early: Submit files 5 days before collection date to meet deadlines
- Monitor failures: Check bank portal for rejected collections and follow up promptly
- Send pre-notifications: Email customers their collection schedule (Odoo can automate this)
- Maintain mandates: Regularly update expired or invalid mandates
- Test with small amounts: Validate new mandates with small test collections first
Handling Common Scenarios
Failed Collections
Bank rejects payment due to insufficient funds or closed account.
Solution: Contact customer, request alternative payment, or suspend service until resolved.
Customer Refund Request
Customer exercises 8-week refund right (CORE scheme only).
Solution: Process refund, investigate reason, update or cancel mandate if needed.
Mandate Updates
Customer changes bank account or requests different terms.
Solution: Create new mandate with updated IBAN, deactivate old mandate.
Mandate Cancellation
Customer cancels subscription or revokes authorization.
Solution: Set mandate end date to today, stops future collections automatically.
Real-World Example
REAL-WORLD SCENARIO: SAAS SUBSCRIPTION BUSINESS ═══════════════════════════════════════════════════════════ Company: CloudSync Platform Location: Paris, France Business Model: SaaS subscription service Customer Base: 450 European businesses Monthly Recurring Revenue: €67,500 CHALLENGE ─────────────────────────────────────────────────────────── Before SEPA Direct Debit: • 450 manual invoices sent monthly • 30% late payments (customers "forgot") • 2 staff members dedicated to payment collection • Average payment delay: 18 days • Monthly collection cost: €4,500 SOLUTION: SEPA DIRECT DEBIT IMPLEMENTATION ═══════════════════════════════════════════════════════════ Phase 1: Setup (Week 1) ✓ Enabled SEPA Direct Debit in Odoo ✓ Obtained Creditor Identifier: FR72ZZZ123456 ✓ Configured bank journal for EUR collections Phase 2: Customer Onboarding (Weeks 2-6) ✓ Designed mandate form template ✓ Sent mandate requests to all 450 customers ✓ Collected signed mandates (digital signatures) ✓ Created 412 mandates in Odoo (92% adoption) ✓ 38 customers chose alternative payment methods Phase 3: First Collection (Month 2) ✓ Generated 412 invoices automatically ✓ Created single XML file with all collections ✓ Uploaded to bank on January 25th ✓ Collection date: February 1st ✓ Results: 398 successful (96.6%), 14 failed RESULTS AFTER 6 MONTHS ═══════════════════════════════════════════════════════════ Metrics: ✓ Payment collection time: 80 hours → 2 hours (-97.5%) ✓ Average payment delay: 18 days → 0 days ✓ Late payment rate: 30% → 3.4% (only failures) ✓ Collection costs: €4,500 → €500 (-89%) ✓ Cash flow predictability: 95%+ (from 60%) Financial Impact (Annual): Reduced admin costs: €48,000 Reduced late payment: €15,000 Improved cash flow: €12,000 (interest savings) Total annual benefit: €75,000 ROI: Implementation cost €5,000 / Annual benefit €75,000 = 1,500% MONTHLY WORKFLOW NOW ═══════════════════════════════════════════════════════════ Day 25: Generate Invoices • Automated invoice generation: 412 invoices • Time: 15 minutes (mostly verification) Day 25: Create SEPA File • Select all invoices due on 1st • Generate XML file • Time: 5 minutes Day 25: Upload to Bank • Login to bank portal • Upload XML file • Verify submission • Time: 10 minutes Day 1 (Next Month): Collections Process • Bank debits 398-410 customer accounts • Automatic reconciliation in Odoo • Time: 0 minutes (fully automated) Day 2-3: Handle Failures • Review 2-14 failed collections • Contact customers • Arrange alternative payment • Time: 1-2 hours Total Monthly Time: 2.5 hours (vs 80 hours previously) CUSTOMER FEEDBACK ═══════════════════════════════════════════════════════════ Positive (87%): "Love the automatic payments - one less thing to remember" "No more late fees, this is perfect" "Simplifies our accounting as well" Neutral (10%): "Indifferent - both methods work for us" Negative (3%): "Prefer to control when payments go out" → Offered manual payment option LESSONS LEARNED ═══════════════════════════════════════════════════════════ ✓ Communicate early with customers • Sent explaining email 30 days before implementation • Clear benefits: no late fees, auto-payment convenience ✓ Offer alternatives for reluctant customers • 8% prefer manual payments - that's fine • Maintain flexibility ✓ Monitor failures proactively • Set up alerts for failed collections • Contact customers same day • Often just insufficient funds - easily resolved ✓ Batch collections by date • Weekly batches more efficient than daily • Reduces bank fees ✓ Keep mandates updated • Quarterly review of mandate validity • Prompt customers to update expired/invalid ones
Best Practices
✅ Direct Debit Mandate Best Practices:
- Get proper authorization: Always obtain signed mandate before first collection (digital or physical)
- Store mandates securely: Keep copy of signed mandates for audit purposes (minimum 14 months after last use)
- Send pre-notifications consistently: Inform customers before each collection with amount and date
- Submit files early: Upload XML files 5+ days before collection date to meet bank deadlines
- Monitor rejections: Check daily for failed collections and follow up immediately
- Update expired mandates: Review mandate validity quarterly, unused mandates expire after 36 months
- Use CORE for consumers: Choose CORE scheme for individual customers, B2B only for businesses
- Batch intelligently: Group collections by date to minimize bank fees and admin work
- Maintain audit trail: Keep records of all XML files, bank confirmations, and collection results
Conclusion
SEPA Direct Debit Mandates in Odoo 18 transform recurring payment collection from a manual, time-intensive process into an automated workflow. Enable the feature in settings, obtain your Creditor Identifier, create mandates for customers with their IBAN and authorization, generate XML files from confirmed invoices, and upload to your bank. Payments collect automatically on schedule, Odoo reconciles them with invoices, and you maintain complete visibility through smart buttons showing collection history. Perfect for subscription businesses, membership organizations, installment plans, and any scenario with recurring payments. Reduce administrative costs by 80%, eliminate late payments, improve cash flow predictability, and free your team to focus on growth instead of payment chasing.
🎯 Key Takeaway: Enable SEPA Direct Debit → Get Creditor ID → Create customer mandates → Generate XML from invoices → Upload to bank → Automatic collections. From 80 hours of manual work to 2 hours automated. Better cash flow, happier customers, lower costs.
