| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1691 |
| Technical Name |
pay_iso20022_pain002_status |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Invoicing (account)
• Discuss (mail) |
| Lines of code | 1691 |
| Technical Name |
pay_iso20022_pain002_status |
| License | OPL-1 |
| Website | https://gencbaris.com/odoo_plugins/ |
| Versions | 18.0 19.0 |
ISO 20022 pain.002 Payment-Status Report Parser
Turn your bank's pain.002 acknowledgements into live payment-batch statuses in Odoo — pure file parser, BYOK, no bank transmission
pain.002 is the ISO 20022 CustomerPaymentStatusReport
message your bank returns to acknowledge a payment-initiation file
(pain.001 credit transfer or pain.008 direct debit)
you previously submitted. This app reads those
pain.002.001.xx files, matches each acknowledgement back to the
payment batch you sent, and writes every transaction's
accepted / rejected / settled status — with the bank's
reason code — onto the matching batch line. No more opening raw XML to
find out which payment the bank bounced.
What it does
Version-independent parser
Reads every published pain.002 version (.001.02 through
.001.12) by matching ISO 20022 elements on their local
name, so a change of message version never breaks the import.
Three status levels
Captures the group status (GrpSts), the per-payment-information
status (PmtInfSts) and the per-transaction status
(TxSts). Each transaction inherits the most specific status
that applies to it — exactly how banks layer their reports.
Reason codes, decoded
Every rejection carries an ISO 20022 ExternalStatusReason1Code
(e.g. AC01 incorrect account, AM04 insufficient
funds) plus the bank's free text. The app decodes the code to a readable
label and shows it right on the line.
Batch matching
Acknowledgements are matched to your local payment batch on the original message id the bank echoes back, then each transaction is linked to its batch line by End-to-End id, Instruction id or UETR.
How it works
1. Register the batch
Record the payment file you sent — its original message id and the lines it contained (End-to-End id, amount, counterparty). Optionally link each line to its Odoo payment.
2. Download & import
Download the pain.002 file your bank returns and upload it. The app parses it and matches it back to the batch automatically.
3. Apply the statuses
Apply the acknowledgement: every batch line is updated to accepted, rejected or settled, and rejected lines flag their linked payment with the bank's reason.
Status codes handled
| Code | Meaning | Bucket |
|---|---|---|
ACTC | Accepted Technical Validation | Accepted |
ACCP | Accepted Customer Profile | Accepted |
ACSP | Accepted Settlement In Process | Accepted |
ACSC | Accepted Settlement Completed | Settled |
ACWC | Accepted With Change | Accepted |
PDNG / RCVD / PART | Pending / Received / Partially Accepted | Pending |
RJCT | Rejected | Rejected |
CANC / BLCK | Cancelled / Blocked | Rejected |
Key features
- Reads pain.002.001.02 – pain.002.001.12 regardless of namespace version.
- Group, payment-information and transaction status levels with automatic inheritance.
- Full ISO 20022 status reason code table (AC01, AM04, MD01, FF01 and more), decoded to readable labels.
- Matches each acknowledgement to its payment batch on the original message id; links transactions by End-to-End id, Instruction id or UETR.
- Writes accepted / rejected / settled status straight onto the batch lines and rolls the batch up to a single verdict.
- Settlement follow-ups promote accepted lines to settled as later pain.002 files arrive.
- Rejected lines post a note on the linked Odoo payment with the bank's reason.
- Stored, searchable status buckets — filter batches and reports by “with rejections”, “pending” or “final”.
- One-step import wizard: upload, parse, match and apply in a single action.
BYOK — you stay in control
This is a pure file parser. You download the pain.002 from your own bank channel (portal, EBICS, SFTP) and upload it here; the app never connects to your bank and never holds your banking credentials. It generates no payment files and transmits nothing — it only reads the status report your bank already produced.
Compatibility
Odoo 18.0 and 19.0 · Community and Enterprise · depends only on the base account module.
Screenshots
Payment Batches
Import Pain 002
Status Reports
Transaction Statuses
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module