Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. SEPA Credit Transfer v 19.0
  4. Sales Conditions FAQ

SEPA Credit Transfer

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 32
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Community Apps Dependencies Show
• Accounting Suite Base
• Batch Payment
Lines of code 4742
Technical Name eh_account_sepa_ct
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Community Apps Dependencies Show
• Accounting Suite Base
• Batch Payment
Lines of code 4742
Technical Name eh_account_sepa_ct
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
ERP Heritage · Accounting Suite
PAYMENTS · ISO 20022 SEPA

SEPA Credit Transfer

Turn a batch of posted vendor payments into a bank ready ISO 20022 SEPA credit transfer file, with IBAN and BIC checked before the bank ever sees it.

Free · LGPL-3ISO 20022PAIN.001 .03 + .09v19.0.1.1.4
Dual PAIN.001
IBAN mod-97
BIC check
One currency
SHA-256 audit

Why this module

SEPA Credit Transfer

01 / VALIDATION

Caught before the bank

IBAN passes a pure Python mod-97 check, country in the SEPA zone with the exact per country length, and BIC against ISO 9362 structure. No external library. A bad account never reaches the file.

02 / TWO VERSIONS

The file your bank actually wants

Pick PAIN.001.001.03 (legacy SEPA rulebook) or PAIN.001.001.09 (current EU Implementation Guidelines, 2024 onward) per originator. The .09 path renames BIC to BICFI automatically so the same batch serves either bank.

03 / AUDIT

Every file accounted for

Each export records user, timestamp, message ID, transaction count, control sum and a SHA-256 hash. Regenerating supersedes the old file instead of deleting it, so the audit trail shows which one the bank received.

Day in the life

An AP clerk pays thirty European suppliers before the bank cut off.

The clerk posts the supplier payments, drops them into a batch, and hits generate. One supplier was entered with a French branch IBAN that is one digit short; generation stops and names that line rather than producing a file the bank would silently reject. The clerk fixes the IBAN, regenerates, and the prior draft is marked superseded so only the live file remains. A supplier name carries an accented character, which the SEPA Latin pass transliterates so the gateway accepts it. The originator is set to PAIN.001.001.09, so the file carries BICFI as this bank now requires. The export record shows the message ID, thirty transactions, the control sum and a SHA-256 hash. The clerk downloads the XML, uploads it to the bank portal, and the export flips to downloaded. One pay run, one file, no surprises at the gateway.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

MIXED CURRENCY

A batch that mixes currencies is refused before any file is written, with the offending currency names listed, rather than silently truncating to one currency.

BANK ACCOUNT RESOLUTION

Creditor bank account resolution falls back from the payment bank account to the first partner bank whose IBAN actually validates mod-97, and raises a named error if the partner has no valid IBAN account at all. No silent fallthrough to a non IBAN account.

MSGID COLLISION

Two exports in the same UTC second still get distinct 35 character message IDs via a uuid fragment, with the name part capped so the uuid can never be truncated away.

OUT OF ZONE IBAN

The IBAN country must be in the embedded SEPA zone registry and match the exact per country length before mod-97 runs, so an out of zone or wrong length IBAN is rejected with a specific message instead of a generic failure.

ACCENTED NAMES

Supplier names and remittance text are transliterated and stripped to the SEPA Latin character set, so a name with diacritics clears the bank gateway instead of bouncing.

MISSING ATTACHMENT

Downloading an export whose attachment was deleted raises a clear remediation error instead of a 404, and only flips state to downloaded on success.

What is inside

Built to do the job, end to end.

  • Dual PAIN.001 output per originator. Generate PAIN.001.001.03 or PAIN.001.001.09 selected on the journal originator, with the BIC element renamed to BICFI automatically for the .09 version. Output targets the published namespace and structure and carries the ISO 20022 schemaLocation hint.
  • Pure Python IBAN and BIC validation. Dependency free IBAN mod-97 (ISO 13616) and BIC (ISO 9362) checks, enforced when you save the originator and again when the export is built. IBAN and BIC are canonicalised, spaces stripped, upper cased, 8 character BIC padded to 11, before they are stored.
  • Single currency enforcement. Mixed currency batches are blocked before generation with the currency names shown, because SEPA requires one currency per file and a single control sum.
  • Per export audit record. Each generated file gets an export record with the SHA-256 hash, user, timestamp, transaction count and control sum. Regenerating supersedes prior exports so the trail stays clear, and state tracks from generated to downloaded.
  • SEPA Latin sanitisation. Names and remittance information are transliterated and filtered to the characters the SEPA scheme allows, so accented or non Latin text does not break the file at the bank gateway.
  • Verified by parse-back tests. The test suite renders an inline payload, parses the XML back with lxml, and asserts the namespace, message ID, transaction count, control sum, per transaction amounts and currency, service level (SEPA) and charge bearer (SLEV), element by element.

Honest about the edges

What this does not do, so nothing surprises you.

  • Currency is EUR only, fixed by the SEPA scheme. Non EUR transfers are out of scope, use a different transfer instruction.
  • The file targets the published PAIN.001.001.03 and .09 namespace and structure and carries the schemaLocation hint. It does not bundle an XSD or run xmllint or XSD validation; the tests assert structure by parsing the XML back, not by validating against a schema.
  • The SHA-256 hash and supersession let an auditor detect a duplicate generation, but the module does not hard block a second export of the same batch.
  • One message (CstmrCdtTrfInitn) per export, SEPA service level only, charges allocated SLEV, and no batch booking. Each transaction renders as its own entry.
  • This is a file generator. It does not connect to the bank or transmit the file; you download the XML and upload it through your bank portal.
Search

SEPA credit transfer Odoo 19, PAIN.001.001.03 generator Odoo, PAIN.001.001.09 ISO 20022 Odoo, SEPA XML batch vendor payment Odoo Community, IBAN BIC validation Odoo, ISO 20022 credit transfer file Odoo, SEPA pay run bank upload Odoo, EUR vendor payment file generator

ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by ERP Heritage - Odoo Implementation

v19.0.1.1.4 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with