Account Banking PAIN Base Module

account_banking_pain_base
REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/19.0/account_banking_pain_base
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, Andrii9090-tecnativa, arantxa-s73
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:50
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains fields and functions that are used by the module
for SEPA Credit Transfer (account_banking_sepa_credit_transfer) and SEPA
Direct Debit (account_banking_sepa_direct_debit). This module doesn't
provide any functionality by itself.

This module was started during the Akretion-Noviat code sprint of
November 21st 2013 in Epiais les Louvres (France).

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (4)
  • default_batch_booking Boolean
    help='Default value for payment order batch booking related to this payment mode'
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    compute='_compute_batch_booking' help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=False store=True tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/18.0/account_banking_pain_base
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSVíctor Martínez, Weblate, OCA-git-bot, Nikos Tsirintanis, oca-ci, Benoit Aimont, arantxa-s73
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains fields and functions that are used by the module
for SEPA Credit Transfer (account_banking_sepa_credit_transfer) and SEPA
Direct Debit (account_banking_sepa_direct_debit). This module doesn't
provide any functionality by itself.

This module was started during the Akretion-Noviat code sprint of
November 21st 2013 in Epiais les Louvres (France).

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (4)
  • default_batch_booking Boolean
    help='Default value for payment order batch booking related to this payment mode'
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    compute='_compute_batch_booking' help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=False store=True tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/17.0/account_banking_pain_base
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSPedro M. Baeza, Weblate, OCA-git-bot, oca-ci, Vincent Van Rossem, Camille Morand, tris
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module contains fields and functions that are used by the module
for SEPA Credit Transfer (account_banking_sepa_credit_transfer) and SEPA
Direct Debit (account_banking_sepa_direct_debit). This module doesn't
provide any functionality by itself.

This module was started during the Akretion-Noviat code sprint of
November 21st 2013 in Epiais les Louvres (France).

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_pain_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None, bank_name=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument For some special transfers such as International Credit Transfers, we want the bank name to be set besides the BIC.
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None, bank_name=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument For some special transfers such as International Credit Transfers, we want the bank name to be set besides the BIC.
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/16.0/account_banking_pain_base
VERSION
VERSION 1.2.3
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, Sylvain LE GAL, Luc De Meyer, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Antônio Neto, Julien Guenat
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
res_config_settings_view_form pain.group.on.account.config.settings res.config.settings xpath Inherits account_payment_order.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
    Generate the piece of the XML corresponding to PstlAdr
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/15.0/account_banking_pain_base
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSPedro M. Baeza, Luc De Meyer, manu, OCA Transbot, Weblate, OCA-git-bot, oca-ci, David Ramia, Gemini CLI, BT-anieto
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
    Generate the piece of the XML corresponding to PstlAdr
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/14.0/account_banking_pain_base
VERSION
VERSION 2.1.3
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion, Therp BV
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, GitHub, Enric Tobella, Luc De Meyer, OCA Transbot, oca-travis, Weblate, OCA-git-bot, Nikos Tsirintanis, oca-ci, Carlos Roca, Eduard Brahas
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_line_tree pain.base.account.payment.tree account.payment.line field Inherits account_payment_order.account_payment_line_tree
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' string='Category Purpose' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    ondelete={'ISO': 'cascade'} selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    copy=False string='PAIN Version' args: []
  • sepa_pain09_address_mode Selection
    default='minimal' help='Controls how the <PstlAdr> block is generated for PAIN.001.001.09- Minimal: only City (TwnNm) and Country (Ctry)- Hybrid: City/Country plus optional AdrLine lines (street/street2) and optional Post Code (PstCd) when available.' required=True string='PAIN.001.001.09 Address Mode' args: [('minimal', 'Minimal (City + Country only)'), ('hybrid', 'Hybrid (City/Country + AdrLine)')]
  • warn_not_sepa Boolean
    string='Warn If Not SEPA'
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (5)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Batch Booking' tracking=True
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Charge Bearer' tracking=True args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' string='SEPA Payment'
  • sepa_payment_method Boolean
    compute='_compute_sepa' string='SEPA Payment Method'
  • show_warning_not_sepa Boolean
    compute='_compute_sepa'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/13.0/account_banking_pain_base
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSPedro M. Baeza, Luc De Meyer, OCA Transbot, oca-travis, Weblate, OCA-git-bot, robin.keunen, Valentin Vinagre Urteaga
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_payment_order.bank_payment_line_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (8)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' string='Category Purpose' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (2)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    string='PAIN Version' args: []
Public methods (1)
  • get_xsd_file_path(self)
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (3)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Batch Booking' track_visibility='onchange'
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Charge Bearer' track_visibility='onchange' args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='_compute_sepa' readonly=True string='SEPA Payment'
Public methods (15)
  • compute_sepa_final_hook(self, sepa)
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
    Generate the piece of the XML corresponding to PstlAdr
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
  • generate_pain_nsmap(self)
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (4)
  • category_purpose Selection
    related='payment_line_ids.category_purpose' string='Category Purpose'
  • local_instrument Selection
    related='payment_line_ids.local_instrument' string='Local Instrument'
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
  • purpose Selection
    related='payment_line_ids.purpose'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/12.0/account_banking_pain_base
VERSION
VERSION 1.0.5
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSYannick Vaucher, Pedro M. Baeza, GitHub, sebalix, OCA Transbot, Thierry Ducrest, Thomas Binsfeld, oca-travis, Weblate, OCA-git-bot, SimoRubi, Wolfgang Pichler, robin.keunen
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_payment_order.bank_payment_line_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (8)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' string='Category Purpose' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (2)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    string='PAIN Version' args: []
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (3)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Batch Booking' track_visibility='onchange'
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Charge Bearer' track_visibility='onchange' args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='compute_sepa' readonly=True string='SEPA Payment'
Public methods (16)
  • compute_sepa(self)
    @api.multi@api.depends('company_partner_bank_id.acc_type', 'payment_line_ids.currency_id', 'payment_line_ids.partner_bank_id.acc_type')
  • compute_sepa_final_hook(self, sepa)
    @api.multi
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
    @api.multi
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
    Generate the piece of the XML corresponding to PstlAdr
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
    @api.multi
  • generate_pain_nsmap(self)
    @api.multi
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model

New fields (4)
  • category_purpose Selection
    related='payment_line_ids.category_purpose' string='Category Purpose'
  • local_instrument Selection
    related='payment_line_ids.local_instrument' string='Local Instrument'
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
  • purpose Selection
    related='payment_line_ids.purpose'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    readonly=False related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    readonly=False related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    readonly=False related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/11.0/account_banking_pain_base
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, GitHub, Enric Tobella, Stéphane Bidoul (ACSONE), Patrick Tombez, OCA Transbot, Timka Piric, oca-travis, Weblate, OCA-git-bot, SimoRubi
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_payment_order.bank_payment_line_form
view_account_config_settings pain.group.on.account.config.settings res.config.settings xpath Inherits account.res_config_settings_view_form
Models touched (7)

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' string='Category Purpose' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (2)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    string='PAIN Version' args: []
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (3)
  • batch_booking Boolean
    help='If true, the bank statement will display only one debit line for all the wire transfers of the SEPA XML file ; if false, the bank statement will display one debit line per wire transfer of the SEPA XML file.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Batch Booking' track_visibility='onchange'
  • charge_bearer Selection
    default='SLEV' help='Following service level : transaction charges are to be applied following the rules agreed in the service level and/or scheme (SEPA Core messages must use this). Shared : transaction charges on the debtor side are to be borne by the debtor, transaction charges on the creditor side are to be borne by the creditor. Borne by creditor : all transaction charges are to be borne by the creditor. Borne by debtor : all transaction charges are to be borne by the debtor.' readonly=True states={'draft': [('readonly', False)], 'open': [('readonly', False)]} string='Charge Bearer' track_visibility='onchange' args: [('SLEV', 'Following Service Level'), ('SHAR', 'Shared'), ('CRED', 'Borne by Creditor'), ('DEBT', 'Borne by Debtor')]
  • sepa Boolean
    compute='compute_sepa' readonly=True string='SEPA Payment'
Public methods (18)
  • compute_sepa(self)
    @api.multi@api.depends('company_partner_bank_id.acc_type', 'payment_line_ids.currency_id', 'payment_line_ids.partner_bank_id.acc_type')
  • compute_sepa_final_hook(self, sepa)
    @api.multi
  • except_messages_prepare_field(self, eval_ctx, field_name)
    @api.model
    Inherit this method to provide more detailed error messages for exceptions to be raised while evaluating `field_name` using `eval_ctx`. :return: List containing the error messages.
  • finalize_sepa_file_creation(self, xml_root, gen_args)
    @api.multi
  • generate_address_block(self, parent_node, partner, gen_args)
    @api.model
    Generate the piece of the XML corresponding to PstlAdr
  • generate_creditor_scheme_identification(self, parent_node, identification, identification_label, eval_ctx, scheme_name_proprietary, gen_args)
    @api.model
  • generate_fininst_postal_address(self, parent_node, bank)
    @api.model
  • generate_group_header_block(self, parent_node, gen_args)
    @api.model
  • generate_initiating_party_block(self, parent_node, gen_args)
    @api.model
  • generate_pain_attrib(self)
    @api.multi
  • generate_pain_nsmap(self)
    @api.multi
  • generate_party_acc_number(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
  • generate_party_agent(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to BIC This code is mutualized between TRF and DD Starting from Feb 1st 2016, we should be able to do cross-border SEPA transfers without BIC, cf http://www.europeanpaymentscouncil.eu/index.cfm/ sepa-credit-transfer/iban-and-bic/ In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_block(self, parent_node, party_type, order, partner_bank, gen_args, bank_line=None)
    @api.model
    Generate the piece of the XML file corresponding to Name+IBAN+BIC This code is mutualized between TRF and DD In some localization (l10n_ch_sepa for example), they need the bank_line argument
  • generate_party_id(self, parent_node, party_type, partner)
    @api.model
    Generate an Id element for partner inside the parent node. party_type can currently be Cdtr or Dbtr. Notably, the initiating party orgid is generated with another mechanism and configured at the company or payment mode level.
  • generate_remittance_info_block(self, parent_node, line, gen_args)
    @api.model
  • generate_start_payment_info_block(self, parent_node, payment_info_ident, priority, local_instrument, category_purpose, sequence_type, requested_date, eval_ctx, gen_args)
    @api.model
  • has_fininst_postal_address(self, gen_args)
    @api.model

New fields (4)
  • category_purpose Selection
    related='payment_line_ids.category_purpose' string='Category Purpose'
  • local_instrument Selection
    related='payment_line_ids.local_instrument' string='Local Instrument'
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
  • purpose Selection
    related='payment_line_ids.purpose'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/10.0/account_banking_pain_base
VERSION
VERSION 1.1.3
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Ronald Portier, Pedro M. Baeza, GitHub, Denis Roussel, Stéphane Bidoul (ACSONE), Patrick Tombez, OCA Transbot, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_payment_order.bank_payment_line_form
view_account_config_settings pain.group.on.account.config.settings account.config.settings xpath Inherits account.view_account_config_settings
Models touched (6)

New fields (4)
  • group_pain_multiple_identifier Boolean
    help='Enable this option if your country requires several SEPA/PAIN identifiers like in Spain.' implied_group='account_banking_pain_base.group_pain_multiple_identifier' string='Multiple identifiers'
  • initiating_party_identifier Char
    related='company_id.initiating_party_identifier'
  • initiating_party_issuer Char
    related='company_id.initiating_party_issuer'
  • initiating_party_scheme Char
    related='company_id.initiating_party_scheme'
Public methods (0)

No public methods.

New fields (6)
  • category_purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' string='Category Purpose' args: [('BONU', 'Bonus Payment'), ('CASH', 'Cash Management Transfer'), ('CBLK', 'Card Bulk Clearing'), ('CCRD', 'Credit Card Payment'), ('CORT', 'Trade Settlement Payment'), ('DCRD', 'Debit Card Payment'), ('DIVI', 'Dividend'), ('DVPM', 'Deliver Against Payment'), ('EPAY', 'ePayment'), ('FCOL', 'Fee Collection'), ('GOVT', 'Government Payment'), ('HEDG', 'Hedging'), ('ICCP', 'Irrevocable Credit Card Payment'), ('IDCP', 'Irrevocable Debit Card Payment'), ('INTC', 'Intra-Company Payment'), ('INTE', 'Interest'), ('LOAN', 'Loan'), ('OTHR', 'Other Payment'), ('PENS', 'Pension Payment'), ('RVPM', 'Receive Against Payment'), ('SALA', 'Salary Payment'), ('SECU', 'Securities'), ('SSBE', 'Social Security Benefit'), ('SUPP', 'Supplier Payment'), ('TAXS', 'Tax Payment'), ('TRAD', 'Trade'), ('TREA', 'Treasury Payment'), ('VATX', 'VAT Payment'), ('WHLD', 'WithHolding')]
  • communication Char
    size=140
  • communication_type Selection
    selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • purpose Selection
    help='If neither your bank nor your local regulations oblige you to set the category purpose, leave the field empty.' selection=[('ACCT', 'Account Management'), ('CASH', 'Cash Management Transfer'), ('COLL', 'Collection Payment'), ('INTC', 'Intra Company Payment'), ('LIMA', 'Liquidity Management'), ('NETT', 'Netting'), ('AGRT', 'Agricultural Transfer'), ('BEXP', 'Business Expenses'), ('COMC', 'Commercial Payment'), ('CPYR', 'Copyright'), ('GDDS', 'Purchase Sale Of Goods'), ('LICF', 'License Fee'), ('ROYA', 'Royalties'), ('SCVE', 'Purchase Sale Of Services'), ('SUBS', 'Subscription'), ('SUPP', 'Supplier Payment'), ('TRAD', 'Trade Services'), ('CHAR', 'Charity Payment'), ('COMT', 'Consumer Third Party Consolidated Payment'), ('CLPR', 'Car Loan Principal Repayment'), ('GOVI', 'Government Insurance'), ('HLRP', 'Housing Loan Repayment'), ('INSU', 'Insurance Premium'), ('INTE', 'Interest'), ('LBRI', 'Labor Insurance'), ('LIFI', 'Life Insurance'), ('LOAN', 'Loan'), ('LOAR', 'Loan Repayment'), ('PPTI', 'Property Insurance'), ('RINP', 'Recurring Installment Payment'), ('TRFD', 'Trust Fund'), ('ADVA', 'Advance Payment'), ('CCRD', 'Credit Card Payment '), ('CFEE', 'Cancellation Fee'), ('COST', 'Costs'), ('DCRD', 'Debit Card Payment'), ('GOVT', 'Government Payment'), ('IHRP', 'Instalment Hire Purchase Agreement'), ('INSM', 'Installment'), ('MSVC', 'Multiple Service Types'), ('NOWS', 'Not Otherwise Specified'), ('OFEE', 'Opening Fee'), ('OTHR', 'Other'), ('PADD', 'Preauthorized debit'), ('PTSP', 'Payment Terms'), ('RCPT', 'Receipt Payment'), ('RENT', 'Rent'), ('STDY', 'Study'), ('ANNI', 'Annuity'), ('CMDT', 'Commodity Transfer'), ('DERI', 'Derivatives'), ('DIVD', 'Dividend'), ('FREX', 'Foreign Exchange'), ('HEDG', 'Hedging'), ('PRME', 'Precious Metal'), ('SAVG', 'Savings'), ('SECU', 'Securities'), ('TREA', 'Treasury Payment'), ('ANTS', 'Anesthesia Services'), ('CVCF', 'Convalescent Care Facility'), ('DMEQ', 'Durable Medicale Equipment'), ('DNTS', 'Dental Services'), ('HLTC', 'Home Health Care'), ('HLTI', 'Health Insurance'), ('HSPC', 'Hospital Care'), ('ICRF', 'Intermediate Care Facility'), ('LTCF', 'Long Term Care Facility'), ('MDCS', 'Medical Services'), ('VIEW', 'Vision Care'), ('ALMY', 'Alimony Payment'), ('BECH', 'Child Benefit'), ('BENE', 'Unemployment Disability Benefit'), ('BONU', 'Bonus Payment.'), ('COMM', 'Commission'), ('PENS', 'Pension Payment'), ('PRCP', 'Price Payment'), ('SALA', 'Salary Payment'), ('SSBE', 'Social Security Benefit'), ('ESTX', 'Estate Tax'), ('HSTX', 'Housing Tax'), ('INTX', 'Income Tax'), ('TAXS', 'Tax Payment'), ('VATX', 'Value Added Tax Payment'), ('AIRB', 'Air'), ('BUSB', 'Bus'), ('FERB', 'Ferry'), ('RLWY', 'Railway'), ('CBTV', 'Cable TV Bill'), ('ELEC', 'Electricity Bill'), ('ENRG', 'Energies'), ('GASB', 'Gas Bill'), ('NWCH', 'Network Charge'), ('NWCM', 'Network Communication'), ('OTLC', 'Other Telecom Related Bill'), ('PHON', 'Telephone Bill'), ('WTER', 'Water Bill')]
Public methods (0)

No public methods.

New fields (3)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_bank_address Boolean
    help='If enabled, the name and address of the bank will be set in the appropriate XML tags (if the bank account is linked to a bank and if the information is set on the related bank). Some banks reject PAIN XML files that contain the name and address of the bank, although the ISO 20022 standard and the EPC guidelines specify this possibility.' string='Bank Address in PAIN XML'
  • pain_version Selection
    string='PAIN Version' args: []
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi
    This method is designed to be inherited in the SEPA modules

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo. This value is determined by the financial institution that will process the file. If not defined, no scheme will be used.\n" size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

New fields (4)
  • category_purpose Selection
    related='payment_line_ids.category_purpose' string='Category Purpose'
  • local_instrument Selection
    related='payment_line_ids.local_instrument' string='Local Instrument'
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
  • purpose Selection
    related='payment_line_ids.purpose'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (3)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
  • initiating_party_scheme Char
    help="This will be used as the 'Initiating Party Scheme Name' in the PAIN files generated by Odoo." size=35 string='Initiating Party Scheme'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/9.0/account_banking_pain_base
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSTecnativa, Odoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, Weblate
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_order
    - account_payment_partner
    - account_payment_mode
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
    - base_iban
    - document
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
account_payment_line_form pain.base.account.payment.line account.payment.line field Inherits account_payment_order.account_payment_line_form
account_payment_method_form pain_base.account_payment_method.form account.payment.method field Inherits account_payment_mode.account_payment_method_form
account_payment_method_tree pain_base.account_payment_method.tree account.payment.method field Inherits account_payment_mode.account_payment_method_tree
account_payment_mode_form pain_base.account.payment.mode.form account.payment.mode group Inherits account_payment_order.account_payment_mode_form
account_payment_order_form pain.base.account.payment.order.form account.payment.order field Inherits account_payment_order.account_payment_order_form
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_payment_order.bank_payment_line_form
view_company_form pain.group.on.res.company.form res.company group Inherits base.view_company_form
Models touched (5)

New fields (4)
  • communication Char
    size=140
  • communication_type Selection
    selection_add=[('ISO', 'ISO')]
  • local_instrument Selection
    string='Local Instrument' args: []
  • priority Selection
    default='NORM' help="This field will be used as 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
Public methods (0)

No public methods.

New fields (2)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented character to the corresponding unaccented character, so that only ASCII characters are used in the generated PAIN file.' string='Convert to ASCII'
  • pain_version Selection
    string='PAIN Version' args: []
Public methods (1)
  • get_xsd_file_path(self)
    @api.multi
    This method is designed to be inherited in the SEPA modules

New fields (2)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
Public methods (0)

No public methods.

New fields (2)
  • local_instrument Selection
    related='payment_line_ids.local_instrument' string='Local Instrument'
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (2)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/8.0/account_banking_pain_base
VERSION
VERSION 0.4.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Noviat, Akretion, Antiun Ingeniería S.L., Serv. Tecnol. Avanzados - Pedro M. Baeza
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Noviat, Akretion, Antiun Ingeniería S.L., Serv. Tecnol. Avanzados - Pedro M. Baeza
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Yannick Vaucher, Alexandre Fayolle, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Stefan Rijnhart (Therp), oca-travis, Weblate, Antonio Espinosa, Philippe Schmidt
WEBSITE
WEBSITEhttps://github.com/OCA/bank-payment
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_payment_export
odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
    - account_voucher
    - base_iban
    - document
    - knowledge
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
bank_payment_line_form pain.base.bank.payment.line.form bank.payment.line field Inherits account_banking_payment_export.bank_payment_line_form
view_company_form pain.group.on.res.company.form res.company group Inherits base.view_company_form
view_payment_mode_form_inherit add.convert_to_ascii.in.payment.mode.form payment.mode field Inherits account_banking_payment_export.view_payment_mode_form_inherit
view_payment_order_form pain.base.payment.line.inside.order.form payment.order xpath Inherits account_banking_payment_export.view_payment_order_form
Models touched (5)

New fields (2)
  • priority Selection
    related='payment_line_ids.priority' string='Priority'
  • struct_communication_type Selection
    related='payment_line_ids.struct_communication_type' string='Structured Communication Type'
Public methods (1)
  • same_fields_payment_line_and_bank_payment_line(self)
    @api.model

New fields (3)
  • communication Char
    size=140
  • priority Selection
    default='NORM' help="This field will be used as the 'Instruction Priority' in the generated PAIN file." string='Priority' args: [('NORM', 'Normal'), ('HIGH', 'High')]
  • struct_communication_type Selection
    default='ISO' string='Structured Communication Type' args: '_get_struct_communication_types'
Public methods (0)

No public methods.

New fields (4)
  • convert_to_ascii Boolean
    default=True help='If active, Odoo will convert each accented caracter to the corresponding unaccented caracter, so that only ASCII caracters are used in the generated PAIN file.' string='Convert to ASCII'
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo. If not defined, Initiating Party Identifier from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo. If not defined, Initiating Party Issuer from company will be used.\nCommon format (13): \n- Country code (2, optional)\n- Company idenfier (N, VAT)\n- Service suffix (N, issued by bank)" size=35 string='Initiating Party Issuer'
  • sepa_type Char
    compute='_compute_sepa_type'
Public methods (0)

No public methods.

New fields (2)
  • initiating_party_identifier Char
    help="This will be used as the 'Initiating Party Identifier' in the PAIN files generated by Odoo." size=35 string='Initiating Party Identifier'
  • initiating_party_issuer Char
    help="This will be used as the 'Initiating Party Issuer' in the PAIN files generated by Odoo." size=35 string='Initiating Party Issuer'
Public methods (0)

No public methods.

New fields (2)
  • bank Many2one
    help="If this field is set and the related bank has a 'Bank Identifier Code', then this BIC will be used to generate the credit transfers and direct debits files."
  • bank_bic Char
    help="In the generation of credit transfer and direct debit files, this BIC will be used only when the 'Bank' field is empty, or has a value but the field 'Bank Identifier Code' is not set on the related bank."
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/7.0/account_banking_pain_base
VERSION
VERSION 0.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Yannick Vaucher, Alexandre Fayolle, Raphaël Valyi, Stefan Rijnhart, Sandy Carter, Holger Brunn, Ignacio Ibeas - Acysos S.L., EL HADJI DEM, Launchpad Translations on behalf of banking-addons-team, OCA Transbot
WEBSITE
WEBSITEhttp://openerp-community-association.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_payment_export
odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - process
    - decimal_precision
    - mail
    - analytic
    - board
    - edi
    - email_template
    - account_voucher
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Base module for PAIN file generation
====================================

This module contains fields and functions that are used by the module for SEPA
Credit Transfer (account_banking_sepa_credit_transfer) and SEPA Direct Debit
(account_banking_sepa_direct_debit). This module doesn't provide any
functionnality by itself.

This module is part of the banking addons:
    https://www.github.com/OCA/banking-addons

This module was started during the Akretion-Noviat code sprint of
November 21st 2013 in Epiais les Louvres (France).
    

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_company_form pain.group.on.res.company.form res.company group Inherits base.view_company_form
view_payment_line_form pain.base.payment.line.form payment.line field Inherits account_payment.view_payment_line_form
view_payment_mode_form_inherit add.convert_to_ascii.in.payment.mode.form payment.mode field Inherits account_banking_payment_export.view_payment_mode_form_inherit
view_payment_order_form pain.base.payment.line.inside.order.form payment.order xpath Inherits account_payment.view_payment_order_form
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/bank-payment
GIT
GIThttps://github.com/OCA/bank-payment.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/bank-payment/tree/6.1/account_banking_pain_base
VERSION
VERSION 0.1
CATEGORY
CATEGORYHidden
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Noviat, Akretion
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Noviat, Akretion
COMMITTERS
COMMITTERSAlexandre Fayolle, Holger Brunn
WEBSITE
WEBSITEhttp://openerp-community-association.org/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:07
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_banking_payment_export
odoo/odoo:
    - account_payment
    - account
    - base_setup
    - base
    - product
    - process
    - decimal_precision
    - analytic
    - board
    - edi
    - email_template
    - mail
    - base_tools
    - account_voucher
    - base_iban
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES lxml
unidecode
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Base module for PAIN file generation
====================================

This module contains fields and functions that are used by the module for SEPA Credit Transfer (account_banking_sepa_credit_transfer) and SEPA Direct Debit (account_banking_sepa_direct_debit). This module doesn't provide any functionnality by itself.

This module is part of the banking addons: https://launchpad.net/banking-addons

This module was started during the Akretion-Noviat code sprint of November 21st 2013 in Epiais les Louvres (France).
    

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
view_company_form pain.group.on.res.company.form res.company page Inherits base.view_company_form
view_payment_line_form pain.base.payment.line.form payment.line field Inherits account_payment.view_payment_line_form
view_payment_mode_form_inherit add.convert_to_ascii.in.payment.mode.form payment.mode field Inherits account_banking_payment_export.view_payment_mode_form_inherit
view_payment_order_form pain.base.payment.line.inside.order.form payment.order xpath Inherits account_payment.view_payment_order_form
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.