| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1435 |
| Technical Name |
pay_sepa_sct_nl |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Invoicing (account) |
| Lines of code | 1435 |
| Technical Name |
pay_sepa_sct_nl |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
SEPA Credit Transfer for the Netherlands — pain.001 Generator
Turn vendor bills and ad-hoc payouts into ISO 20022 pain.001 XML files you upload to your own Dutch bank — BIC derived automatically from the NL IBAN, end-to-end reference handling built in, no gateway, no per-transaction fees, your data never leaves Odoo.
What this module does
This app builds standards-compliant SEPA Credit Transfer (SCT) initiation files in the ISO 20022 CustomerCreditTransferInitiation (pain.001) format, tuned for Dutch banks. You assemble a batch of credit transfers in Odoo, generate the XML, download it, and upload it through your bank's own online-banking channel (Rabo Internetbankieren Professional, ING InsideBusiness, ABN AMRO Access Online). Nothing is sent to any third-party service: this is a pure format generator, so payment data stays in your database and you keep your existing banking relationship and credentials.
Dutch bank profile & BIC from IBAN
Every Netherlands IBAN encodes a four-letter bank identifier
(INGB, RABO, ABNA,
BUNQ, TRIO, SNSB,
KNAB …). The module maps that code to the
bank's registered BIC automatically, so you can
enter just the IBAN and the file still carries the correct
creditor agent. More than sixty Dutch bank identifiers are
recognised out of the box.
Two schema versions
Generate pain.001.001.09 — the ISO 20022
2019 message version on which the current SEPA Credit Transfer
scheme (2025 rulebook) is based, and the default — or the
legacy pain.001.001.03 for an older Dutch upload
channel that still requires it. The same batch can be exported in
either version; the BIC element switches between
<BIC> and <BICFI> as the
schema requires.
End-to-end reference handling
Dutch reconciliation relies on structured references. The module
builds and validates the ISO 11649 RF creditor
reference (RF + MOD-97 check digits) with one click and
writes it into RmtInf/Strd/CdtrRefInf with the
SCOR code and ISO issuer. It also
validates the Dutch 16-digit betalingskenmerk
(acceptgiro payment reference) against its published modulo-11
check and carries it in the remittance text so the creditor's
accounting recognises it. The EndToEndId is always
populated — explicit value, then RF reference, then your
reference — so no transaction is ever sent without a
traceable identifier.
Real IBAN & BIC validation
Every IBAN is checked with the full ISO 13616 / ISO 7064 MOD-97-10 algorithm and the per-country length registry, so a typo is caught before the file leaves Odoo. BICs are validated against the ISO 9362 structure and their country is cross-checked against the IBAN country. Legacy Dutch domestic account numbers can be verified with the elfproef (eleven-test) weighted checksum.
Feature highlights
- pain.001.001.03 and .09 from one batch
- Automatic BIC from the NL IBAN bank code
- ISO 11649 RF creditor reference builder + validator
- Betalingskenmerk modulo-11 validation
- EndToEndId always populated and SEPA-clean
- Batch booking (collective debit) toggle
- Build from vendor bills wizard, grouped per payee
- Control sum and transaction count auto-computed
- SEPA character-set transliteration of names & text
- Draft → Generated → Uploaded workflow with chatter
pain.001 message structure
| ISO 20022 element | Filled by the module |
|---|---|
| GrpHdr / MsgId, CreDtTm, NbOfTxs, CtrlSum | Message id, timestamp, count and control sum |
| PmtInf / PmtMtd = TRF, BtchBookg | Credit transfer, optional collective booking |
| PmtTpInf / SvcLvl / Cd = SEPA | SEPA service level |
| ReqdExctnDt | Requested execution date |
| Dbtr / DbtrAcct / DbtrAgt | Ordering party, ordering IBAN, debtor BIC |
| ChrgBr = SLEV | Shared charges (SEPA mandatory) |
| CdtTrfTxInf / PmtId / EndToEndId | Per-transfer end-to-end reference |
| Amt / InstdAmt Ccy = EUR | Transfer amount in euro |
| CdtrAgt | Creditor BIC (derived from NL IBAN) or NOTPROVIDED |
| Cdtr / CdtrAcct | Creditor name and IBAN |
| RmtInf / Ustrd or Strd | Free text / betalingskenmerk or RF structured reference |
How it works — no gateway, your bank, your control
Create a SEPA batch, add credit transfers (or build them from posted vendor bills), validate the data, then generate the pain.001 file. Download the XML and upload it in your bank's own portal. The module never connects to any external payment service: it is a format generator. You keep your bank's authentication and authorisation flow exactly as today; this app only produces the file your bank already accepts.
Compatibility
Odoo 18 and 19 (Community and
Enterprise). Depends only on account, base
and mail — no third-party Python libraries, no
external service.
Screenshots
Credit Transfers
Build From Bills
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module