Optional Modules - Changes & Fixes

This page covers the optional module changes and fixes provided in IPF Release 2025.4.0

Scheme Packs

All Instant Scheme Packs

Changed

  • Scheme packs will no longer be generating a default Pacs002 for inbound messages that failed to deserialise. Going forward, Pacs002s will only be generated for those invalid messages that can be properly referenced. System events and dead letter appender behaviour remains unchanged.

Fixed

  • The following French Territories are now treated as part of the EEA:

    • BL (Saint Barthélemy)

    • GF (French Guiana)

    • GP (Guadeloupe)

    • MF (Saint Martin (French part))

    • MQ (Martinique)

    • RE (Réunion)

    • YT (Mayotte)

TIPS CSM Service

New

  • Added validation for the first eight characters of OrgnlMsgNmId on inbound and outbound messages

    • PACS.002: Must match one of pacs.008, pacs.002, pacs.028, camt.056, pacs.004, camt.029

    • PACS.004: Must be equal to pacs.008

  • Outbound Pacs004:

    • Default enrichments:

      • PmtRtr/GrpHdr/SttlmInf/SttlMtd will default to CLRG if null (PAY-15790)

      • Populate GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI to config value ipf.csm.tips.pacs004.instg-agt-id when both are null (PAY-15834)

      • Populate PmtRtr/TxInf/OrgnlGrpInf from PmtRtr/OrgnlGrpInf using enrichment-type: provided (PAY-15839)

      • If /TxInf/OrgnlGrpInf & PmtRtr/OrgnlGrpInf both are populated and they contain the same data in the initial message - PmtRtr/OrgnlGrpInf will be set to null before sending to scheme. (PAY-16538)

      • PmtRtr/TxInf/ChrgBr will default to SLEV if null (PAY-16106)

    • Icon Standard:

      • Populate TxInf/RtrdIntrBkSttlmAmt with GrpHdr/TtlRtrdIntrBkSttlmAmt (PAY-15786)

      • Populate GrpHdr/InstgAgt/FinInstnId/BICFI from TxInf/InstgAgt/FinInstnId/BICFI, when GrpHdr is null and TxInf is present (PAY-15834)

      • Populate GrpHdr/InstdAgt/FinInstnId/BICFI from TxInf/InstdAgt/FinInstnId/BICFI when GrpHdr is null and TxInf is present, or TxInf from GrpHdr when TxInf is null and GrpHdr is present (PAY-15838)

      • Populate TxInf/RtrdIntrBkSttlmAmt from OrgnlIntrBkSttlmAmt (minus any ChrgsInf/Amt) if is initially null (PAY-16068)

    • Breaking Changes

      • Validations:

        • TxInf/RtrChain is validated to make sure it has not been populated. (PAY-16287)

  • Configuration Changes:

    • Added:

      • ipf.csm.tips.pacs004.instg-agt-id - default value for GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI when both are null (PAY-15834)

TIPS CSM Simulator

Changed

  • To support the core IPF Simulator feature of transport header generation, all send connectors and their related transports except for the raw message send connector now have a domain type of Message<DomainType> instead of DomainType. For more details regarding the feature, see the official docs.

RT1 CSM Service

New

  • Outbound Pacs004:

    • Mappings:

      • Will not map TxInf/ClrSysRef if it is populated (PAY-16107)

    • Default enrichments:

      • PmtRtr/GrpHdr/SttlmInf/SttlMtd will default to CLRG if null (PAY-15790)

      • PmtRtr/GrpHdr/SttlmInf/ClrSys/Prtry will default to RT1 if Cd and Prtry are both null (PAY-15818)

      • Populate GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI to config value ipf.csm.rt1.pacs004.instg-agt-id when both are null (PAY-15833)

      • PmtRtr/TxInf/ChrgBr will default to SLEV if null (PAY-16106)

    • Icon Standard:

      • Populate TxInf/RtrdIntrBkSttlmAmt with GrpHdr/TtlRtrdIntrBkSttlmAmt (PAY-15774)

      • Populate GrpHdr/InstgAgt/FinInstnId/BICFI from TxInf/InstgAgt/FinInstnId/BICFI, when GrpHdr is null and TxInf is present (PAY-15833)

      • Populate TxInf/RtrdIntrBkSttlmAmt from OrgnlIntrBkSttlmAmt (minus any ChrgsInf/Amt) if is initially null (PAY-16068)

    • Breaking changes

      • Validations:

        • TxInf/RtrChain/UltmtDbtr validation – if the value is populated, payment will be rejected with code FF01 and reason 'RtrChain/UltmtDbtr is not allowed'. (PAY-16288)

        • TxInf/RtrChain/UltmtCdtr validation – if the value is populated, payment will be rejected with code FF01 and reason 'RtrChain/UltmtCdtr is not allowed'. (PAY-16292)

        • TxInf/RtrChain/Dbtr/Agt validation – if the value is populated, payment will be rejected with code FF01 and reason 'RtrChain/Dbtr/Agt is not allowed'. (PAY-16291)

  • Configuration Changes:

    • Added:

      • ipf.csm.rt1.pacs004.instg-agt-id - default value for GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI when both are null (PAY-15833)

SIC CSM Service

New

  • Outbound Pacs004:

    • Mappings:

      • TxInf/ClrSysRef will default to IPCRTN if null (PAY-16107)

      • When mapping to scheme pacs.004, pmtRtr.txInf.instgAgt.finInstnId.BICFI, pmtRtr.txInf.instdAgt.finInstnId.BICFI are excluded (PAY-13618)

    • Default enrichments:

      • PmtRtr/GrpHdr/SttlmInf/SttlMtd will default to CLRG if null (PAY-15790)

      • PmtRtr/GrpHdr/SttlmInf/ClrSys/Cd will default to SIP if Cd and Prtry are both null (PAY-15820)

    • Icon Standard:

      • Populate TxInf/RtrdIntrBkSttlmAmt with GrpHdr/TtlRtrdIntrBkSttlmAmt and vice versa (PAY-15787)

      • Populate TxInf/RtrdIntrBkSttlmAmt from OrgnlIntrBkSttlmAmt if is initially null (PAY-16068)

      • Populate TxInf/InstgAgt/FinInstnId/ClrSysMmbId/MmbId & TxInf/InstdAgt/FinInstnId/ClrSysMmbId/MmbId deriving Member ID from IBAN (PAY-16115)

      • Default TxInf/InstgAgt/FinInstnId/ClrSysMmbId/clrSysId/cd & TxInf/InstdAgt/FinInstnId/ClrSysMmbId/clrSysId/cd to CHSIC (PAY-16115)

    • Validations:

      • TxInf/ChrgsInf is validated to make sure it has not been populated (PAY-16052)

      • Icon standard specific validation - If TxInf/OrgnlTxRef/Amt/InstdAmt is present, TxInf/RtrdInstdAmt must also be present. (PAY-16376) ==== Fixed

  • Error messages for certain validation failures (mostly for mutual exclusivity around RmtInf) were badly formatted. This is now fixed (PAY-13614)

SIC CSM Simulator

Changed

  • To support the core IPF Simulator feature of transport header generation, all send connectors and their related transports except for the raw message send connector now have a domain type of Message<DomainType> instead of DomainType. For more details regarding the feature, see the official docs.

SEPA CT CSM Service

New

  • Outbound Pacs004:

    • Mappings:

      • Will not map TxInf/ClrSysRef if it is populated (PAY-16107)

    • Default enrichments:

      • PmtRtr/GrpHdr/SttlmInf/ClrSys/Prtry will default to ST2 if Prtry is null (PAY-15821)

      • Populate GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI to config value ipf.csm.sepa-ct.pacs004.instg-agt-id when both are null (PAY-15835)

      • PmtRtr/TxInf/ChrgBr will default to SLEV if null (PAY-16106)

    • Icon Standard:

      • Populate TxInf/RtrdIntrBkSttlmAmt with GrpHdr/TtlRtrdIntrBkSttlmAmt and vice versa (PAY-15788)

    • Breaking Changes

      • Validations:

        • TxInf/RtrChain/UltmtDbtr validation - if the value is populated payment will be rejected with XT13. (PAY-16288)

        • TxInf/RtrChain/UltmtCdtr validation - if the value is populated payment will be rejected with XT13. (PAY-16292)

        • TxInf/RtrChain/Dbtr/Agt validation – if the value is populated, payment will be rejected with XT13. (PAY-16291)

  • Updated state name in MessageProcessing to correctly reflect processing. (Validating Instructed Agent was incorrectly Validating Instructing Agent) (PAY-16143)

    • Populate GrpHdr/InstgAgt/FinInstnId/BICFI from TxInf/InstgAgt/FinInstnId/BICFI, when GrpHdr is null and TxInf is present (PAY-15835)

    • Populate TxInf/RtrdIntrBkSttlmAmt from OrgnlIntrBkSttlmAmt (minus any ChrgsInf/Amt) if is initially null (PAY-16068)

  • Added new system events:

    • CorrelationStoreLookupFailedEvent — raised when the Correlation Store returns zero results for a lookup (i.e., no matching record is found) (PAY-15534)

    • UnexpectedNumberOfCorrelations — raised when the number of correlations returned from the Correlation Store does not match the expected OrgnlNbOfTxs value (PAY-15534)

    • ProcessingEntityEnrichmentLookupFailed - raised when inbound processing entity enrichment fails to resolve just ONE processing entity (see Processing Entity Enrichment for more detail) (PAY-15729)

    • PaymentTransactionUpdateFailed — raised when there is an exception while updating Payment Transaction (PAY-14885)

  • Added debtor postal address country validation for inbound pacs.008 messages (PAY-12820)

    • ipf.csm.sepa-ct.validation.pacs008.non-eea-debtor-address-validation-inbound.enabled = false To enable this functionality, set to true

  • Updated the existing CategoryPurposeCodeRule Validator for pacs.008 to return error code FF01 if the category purpose code (cd) and prty are not mutually exclusive (PAY-16349)

  • Added ability to enrich processing entity on inbound SCF and OQF files (PAY-15729)

    • Introduced three types of processors (full detail and configuration explained in Processing Entity Enrichment):

      1. NoOp - out-of-the-box enabled and has the same behaviour as previously, it will use the value supplied in fallback-entity for the processing entity (defaults to UNKNOWN)

      2. Config - utilises an enriched valid-agent-bics config structure that already exists for validations; you can now supply a processing entity for each BIC

      3. Reachability - with a deployed CSM Reachability service, call /determine-processing-entity and resolve the correct processing entity based on your setup

  • Configuration Changes:

    • Added:

      • ipf.csm.sepa-ct.pacs004.instg-agt-id - default value for GrpHdr/InstgAgt/FinInstnId/BICFI & TxInf/InstgAgt/FinInstnId/BICFI when both are null (PAY-15835)

Changed

  • Bulk failure reason codes can now be configured by overriding the ipf.csm.sepa-ct.bulk-file.rejection-reason-codes config property. See more at Group Header error handling docs

  • MDSWrapper Business Data Element has been changed to MESSAGE_DATA_STRUCTURE from PROCESSING_DATA_STRUCTURE in the flow to correctly mark it as an ISO message in ODS (PAY-16340)

Fixed

  • The following French Territories are now treated as part of the EEA:

    • BL (Saint Barthélemy)

    • GF (French Guiana)

    • GP (Guadeloupe)

    • MF (Saint Martin (French part))

    • MQ (Martinique)

    • RE (Réunion)

    • YT (Mayotte)

SEPA DD CSM Service

New

  • Added three new system events to report issues with correlation store lookups:

    • CorrelationStoreLookupFailedEvent — raised when the Correlation Store returns zero results for a lookup (i.e., no matching record is found) (PAY-15594)

    • UnexpectedNumberOfCorrelations — raised when the number of correlations returned from the Correlation Store does not match the expected OrgnlNbOfTxs value (PAY-15594)

    • CancellationCorrelationFailed — raised if the correlation associated with the original transaction for a cancellation cannot be retrieved (PAY-16037)

  • New r-message validation cutoff time configuration introduced (PAY-15299):

    • ipf.csm.sepa-dd.lac.r-message-validation-cutoff – defines the cutoff time for R-message validation - (default 10:30 CET).

  • Support receive inbound DNF file from Sepa Scheme for Pacs002(Reject and Refusal) and Pacs004(Return and Refund)

    • Direct Debit API now supports NotifyDDRefusalReject notification for additional details see API (PAY-16234 PAY-16152). The API has been delivered to facilitate testing, but it will be removed in release 2026.1.0 and replaced with refusal/reject updates being sent back to CollectAndSettleRequest

    • Direct Debit API now supports NotifyDDRefundReturn notification for additional details see API (PAY-16245 PAY-16208).

    • New System Events

      • CanonicalGenerationFromSchemeFailed - event raised when an error occurs while generating a canonical message/transaction from scheme message (PAY-16151 PAY-16207)

      • InboundValidationFailed - event raised when an error occurs while validating inbound message/transaction (PAY-11174 PAY-16197)

      • SendCanonicalMessageFailed event raised when an error occurs while sending a canonical message to the client (PAY-16152 PAY-16208_)

    • New Notification (if ipf.csm.sepa.notification.enabled set to true)

      • InboundValidationFailureNotification - notification raised when failure passing the inbound message/transaction level validation rules (PAY-11174 PAY-16197)

    • Extension points for DNF Inbound files, properties added under ipf.csm.sepa-dd.extension-point to allow clients to optionally call an extension point during message processing, for additional details see Extension Points (PAY-16234)

    • Optional properties, override to improve the efficiency while generating and mapping the canonical message from Sepa Scheme message. Please see SEPA DD CSM Core Configuration for more details (PAY-16151 PAY-16207)

      • ipf.caching.caffeine.settings.message-content.timeout default value is 30m if not set. The cache eviction time that expire entries after the specified duration has passed since the entry was created, or the most recent replacement of the value.

      • ipf.caching.caffeine.settings.message-content.max-size default value is 100000 if not set. The maximum cache size.

    • Add configuration ipf.csm.sepa-dd.processing-entity for setting the direct/indirect participants (PAY-11174 PAY-16197). Please see Migration Steps for more details

  • Added new validation rules for outbound processing

    • pacs.003

      • Party Name greater than 70 characters (PAY-15320)

      • More than one occurrence of remittance information (PAY-15321)

      • Structured Remittance Information Length (PAY-15780)

    • pacs.007

      • Message Total Reversed Amount (PAY-15935)

      • Message Clearing System And Instructing Agent (PAY-15936)

      • Message Original Message Name Id (PAY-15937)

      • Transaction Instructing Agent (PAY-15939)

      • Transaction Amounts (PAY-15313)

      • Transaction Reversed Instructed Amount (PAY-15938)

      • Interbank Settlement Date (PAY-15851)

      • Transaction Duplicate Check (PAY-15312)

      • Message Number of Transactions (PAY-15311)

    • camt.056

      • Transaction Duplicate Check (PAY-15308)

      • Message Assigner Agent (PAY-15359)

      • Message Number of Transactions (PAY-15307)

      • Transaction Original UETR (PAY-15877)

      • Transaction Assigner Agent (PAY-15878)

      • Interbank Settlement Date (PAY-15849)

  • Added a new cutoff time configuration for R messages with the following default time (PAY-15299):

    • ipf.csm.sepa-dd.lac.r-message-validation-cutoff = "10:30"

  • Updates to Collect And Settle Response following EBA acceptance of camt.056. For additional details please see Request Processing (PAY-16037)

  • Updates to DVF rejection handling for Collect And Settle and Reversal requests excluding them from settlement processing. For additional details please see DVF/RSF Processing (PAY-16038 PAY-16136)

  • Correlation validation added for messages received in DVF and RSF files. For additional details please see DVF/RSF Processing (PAY-16038 PAY-16136)

Changed

  • Updated the following schemas to version Jan 15th 2025, Release October 2025

    • pacs.002 (PAY-11035)

    • pacs.004 (PAY-11170)

    • pacs.007 (PAY-16033)

    • camt.056 (PAY-16032)

  • MDSWrapper Business Data Element has been changed to MESSAGE_DATA_STRUCTURE from PROCESSING_DATA_STRUCTURE in the flow to correctly mark it as an ISO message in ODS (PAY-16340)

Breaking Changes

  • Add configuration ipf.csm.sepa-dd.processing-entity for setting the direct/indirect participants (PAY-11174, PAY-16197). Please see Migration Steps for more details

Payment Notification Service

New

  • Version 2 of the Notification Service API has been introduced.

    • By default, the application produces messages using the V2 API. See the data structure changes for the difference between the V1 and V2 produced report.

The V1 Notification Service API is now deprecated and will be removed as part of the 2026.4.0 IPF release.
If you are using the Payment Notification service, you must migrate to the V2 API before then.

Breaking Changes

  • By default, the Notification service produces messages using the new V2 API. To keep producing messages using the V1 API, configure the following:

payment-status-notification.schema-version = 1
  • Check the V2 migration guide to see why you might want to migrate and what changes need to be made.

Verification of Payee (VoP)

VoP Requester

New

  • Country Filtering

    • Added functionality to filter VoP requests based on requesting agent IBAN country code and an optional regulatory date. Returns a new NORQ (Request not required) response if any of these checks are not met.

    • Country Filtering is disabled by default, so no migration steps are needed for requester to continue working. If enabled, the NORQ response code must be handled.

    • Please see Country Filtering for more details.

Identity Resolution

  • Updated the configuration - identity-resolution.comparison.netowl.exclusion.special-characters to include special character - (PAY-15864).