Overview
ThePAIN_VERSIONS type defines the supported ISO 20022 payment initiation message formats. These versions determine the XML schema structure for either Credit Transfers (pain.001) or Direct Debits (pain.008).
Type Definition
Version Types
Credit Transfer (pain.001)
Used for SEPA Credit Transfers - sending money from debtor to creditor.pain.001.001.02
pain.001.001.02
- Legacy version 2 format
- Uses
pain.001.001.02as the root element name - Includes batch booking at group header level
- Uses “MIXD” grouping indicator
pain.001.003.02
pain.001.003.02
- Version 2 format for Swiss implementations
- Uses
pain.001.003.02as the root element name - Similar structure to pain.001.001.02
pain.001.001.03
pain.001.001.03
- Current standard (default in library)
- Uses
CstmrCdtTrfInitnas the root element name - Version 3 format with enhanced transaction details
- Requires
end2endReferencefor each payment - BIC is optional for creditor in SEPA zone
pain.001.003.03
pain.001.003.03
- Version 3 format for Swiss implementations
- Uses
CstmrCdtTrfInitnas the root element name - Enhanced features similar to pain.001.001.03
Direct Debit (pain.008)
Used for SEPA Direct Debits - collecting money from debtor accounts.pain.008.001.01
pain.008.001.01
- Legacy version 1 format
- Uses
pain.008.001.01as the root element name - Requires mandate information for each transaction
pain.008.003.01
pain.008.003.01
- Version 1 format for Swiss implementations
- Uses
pain.008.003.01as the root element name
pain.008.001.02
pain.008.001.02
- Version 2 format
- Uses
CstmrDrctDbtInitnas the root element name - Requires
localInstrumentationandsequenceType - BIC is optional for debtor in SEPA zone
pain.008.003.02
pain.008.003.02
- Version 2 format for Swiss implementations
- Uses
CstmrDrctDbtInitnas the root element name
Usage
Specify the PAIN version in theSepaData object when calling createSepaXML():
Version Detection
The library automatically determines the payment method based on the version:- pain.001.x.x → Credit Transfer (TRF)
- pain.008.x.x → Direct Debit (DD)
Default Version
If nopainVersion is specified, the library defaults to pain.001.001.03.
Key Differences
Version 2 vs Version 3
| Feature | Version 2 (.02) | Version 3 (.03) |
|---|---|---|
| Root element | pain.00x.00x.0x | CstmrCdtTrfInitn / CstmrDrctDbtInitn |
| Batch booking | Group header level | Payment info level |
| Transaction counts | Group header only | Both group header and payment info |
| End-to-end reference | Optional | Required for pain.001.001.03 |
| Grouping indicator | ”MIXD” required | Not used |
Credit Transfer vs Direct Debit
| Feature | Credit Transfer (pain.001) | Direct Debit (pain.008) |
|---|---|---|
| Direction | Push payment | Pull payment |
| Local instrumentation | Not used | Required (CORE/COR1/B2B) |
| Sequence type | Not used | Required (FRST/RCUR/OOFF/FNAL) |
| Mandate info | Not required | Required |
| Collection date | Not used | Required |
Related Types
- LOCAL_INSTRUMENTATION - Used with Direct Debit versions
- SEQUENCE_TYPE - Used with Direct Debit versions
- SepaData - Main data structure interface