Subsembly SEPA API Release Notes
Version 10.3.2.9557
- Added new static property SepaDocument.ParserConfig
- BREAKING: Now only if ParserConfig.ReadBadIBANasOtherId is set, then an invalid IBAN will be parsed into the OtherId property. Previously, this was the default behaviour.
- Fix bug when writing a CtrlSum computed from currencies with three decimal places.
- BREAKING: Added additional static Create() method to SepaMessageInfo. An instance of SepaMessageInfo is now read only and cannot be modified.
- Added various SepaDocument.ReadDocument() methods. These enable reading SEPA XML files with a given SepaMessageInfo.
- VopPaymentStatusReport.GetVopResult() now also tries the IBAN when matching a SepaOriginalTransactionInformation to its SepaCreditTransferTransactionInformation.
- VopStatusReasonInformation.GetVopCloseMatchName() now accepts extended names without quote prefix. VopStatusReasonInformation.SetVopCloseMatchName now generates extended names without quote prefix.
- Added SepaCreditTransferTransactionInformation.CreditorReferenceTypeIssuer.
- Completely changed the implementation that derives the SepaDocument.EbicsOrderType.
- Added SepaTransactionDetails.BookedAmount convenience property.
- Added SepaAccount.Country convenience property.
- Added SepaDocument.GetEbicsOrderType(bool fVopOptIn) method.
- Added SwiftOptions.UseOpeningBalanceEntryDateYear that controls how the entry date year is determined when parsing MT-940.
- Now skipping over TaxRmt and GrnshmtRmt elements, when encountered in a SepaStructuredRemittanceInformation.
Version 10.3.1.9405
- Added SepaCreditTransferTransactionInformation.IntermediaryAgent1 and IntermediaryAgent2.
- Added SupaDataType.DateTime.
- Added ISupaRecord.GetDateTime and SetDateTime.
- SupaConverter now using ISupaRecord parameters instead of SupaRecord.
- Added many methods to SepaDateUtil that help working with DateTime values assuming the Central European Time Zone.
- BREAKING: SepaUtil methods ToLocalDateTime, ToLocalTime, and ToDateTimeFromDt have been removed. Please use suitable methods from SepaDateUtil instead.
- Better return of VoP Group Status from VopPaymentStatusReport.GetVopGroupStatus().
- Added enumeration VopOption.
Version 10.3.0.9369
- Fix CAMT.053 optional element RmtInf/Strd/CdtrRefInf/Tp being treated as mandatory.
- Fix SepaCreditTransferTransactionInformation.CreditorAccount being treated as mandatory.
- Added SepaChequeInstruction.ChequeType and ChequeNumber.
- Added SupaConverter.ProduceTransactionInformation.
- Added SepaOriginalPaymentInformation.SetUncheckedOriginalPaymentInformationIdentification() to allow creating a pain.002 for an EBICS HAC report.
- Support OtherID in SepaStatusReasonInformation.StatusOriginator.
- Added SepaOtherIds.AddProprietaryIdentification for conveniently creating EBICS HAC protocol entries.
- More VerificationOfPayee pain.002 convenience extension methods.
- Added new class SepaCreditorSchemeIdentification.
- BREAKING: The property SepaDirectDebitPaymentInformation.CreditorSchemeNameProprietary was removed. The attribute may now be accessed through SepaDirectDebitPaymentInformation.CreditorSchemeIdentificationObject.SchemeNameProprietary
Version 10.2.0.9270
- Support setting BIC in SepaPaymentInitiation.InitiatingParty.
- Added static class SepaLocalInstrumentCode with convenience contants.
- Added SepaCreditTransferTransactionReference helper class.
- Added SepaStatusReasonInformation.StatusReasonProprietary property.
- Added interface ISepaStatusAndReasonInformation that is implemented by SepaOriginalPaymentInformation, SepaOriginalTransactionInformation, and SepaPaymentStatusReport.
- Added classes SepaStatusCode and SepaReasonCode.
- More tolerant SwiftAmt.Parse().
- Added SUPA support for securities accounts portfolio items.
- Various work arounds for malformed MT-535 from various banks.
- Various additions and extensions in order to support pain.002 from Verification of Payee.
Version 10.1.0.9208
- Added SepaAccount.TypeProprietary property in order to support Swiss payment schemes.
- Added new class SepaRemittanceInformation to hold the unstructured and the structured remittance information of transactions.
- Added new class SepaStructuredRemittanceInformation to hold the complete structured remittance information for transactions. An instance of this class is available through the SepaRemittanceInformation.Structured property.
- BREAKING: The properties SepaTransactionInformation.CreditorReferenceCode and SepaTransactionInformation.CreditorReferenceProprietary have been removed. These values must now be set through the new SepaStructuredRemittanceInformation in SepaTransactionInformation.RemittanceInformationObject.Structured.
- BREAKING: The semantics of SepaTransactionInformation.CreditorReferenceInformation have changed slightly. Please check your usage of thies property against the new documentation.
- BREAKING: The properties SepaTransactionDetails.CreditorReferenceCode and SepaTransactionDetails.CreditorReferenceProprietary have been removed. These values must now be set through the new SepaStructuredRemittanceInformation in SepaTransactionDetails.RemittanceInformationObject.Structured.
- BREAKING: The semantics of SepaTransactionDetails.CreditorReferenceInformation have changed slightly. Please check your usage of thies property against the new documentation.
- BREAKING: The properties SepaOriginalTransactionInformation.CreditorReferenceCode and SepaOriginalTransactionInformation.CreditorReferenceProprietary have been removed. These values must now be set through the new SepaStructuredRemittanceInformation in SepaOriginalTransactionInformation.RemittanceInformationObject.Structured.
- BREAKING: The semantics of SepaOriginalTransactionInformation.CreditorReferenceInformation have changed slightly. Please check your usage of this property against the new documentation.
- Added SepaChargeBearer class with string constants.
- BREAKING: The method SepaMessageInfo.GetSchemaLocation() has been removed. All messages created from a SepaWellKnownMessageInfo are now created without a XML Schema Location specification.
- Added new SepaVatID struct.
- Added SepaUtil.IsEuCountryCode().
- Added class SepaBTC to support mapping from German GV Codes to ISO Bank Transaction Codes.
- Added methods SepaGermanBankTransactionCode.SetupBankTransactionCode() and SepaGermanBankTransactionCode.TryParse().
- Added support for AdditionalRemittanceInformation inside SepaStructuredRemittanceInformation.
- Added SepaNumberOfTransactionsPerStatus and SepaNumberOfTransactionsPerStatusCollection classes, used by the new SepaOriginalPaymentInformation.NumberOfTransactionsPerStatus, and SepaPaymentStatusReport.NumberOfTransactionsPerStatus properties.
- Added new namespace Subsembly.Sepa.VerificationOfPayee with classes that support the German Verification of Payee implementation.
Version 10.0.0.9027
- Added SepaDummyAccount class that can be used to generate dummy test data.
- Added SepaMarketSpecificationIdentifier and extension class.
- Added SepaWellKnownMessageInfos extension class.
- Added static classes SepaServiceLevel and SepaPaymentMethod with convenient constants.
- Added support for pain.002.001.10 documents.
- SEPA: The ElctrncSeqNb and LglSeqNb of a SepaStatement can now be set as zero. Had to be non-zero before.
- BREAKING: Moved SwiftUtil.NullTrim() to SepaUtil.NullTrim().
- BREAKING: The struct SwiftISIN has been extended to handle other national identification schemes, ticker symbols and more.
- BREAKING: All SEPA Identification and Reference property setters do now validate more thoroughly using SepaUtil.CheckIdentification(). This now also checks that the identification does not start with a slash "/", end with a slash "/", or contain a double slash "//".
Version 9.2.0.8902
- Improvements to SepaRF.
- Added properties SepaPostalAddress.StreetNameAndBuildingNumber and SepaPostalAddress.PostCodeAndTownName to simplify compatibility with older PAIN formats.
- Made internal method SepaUtil.GetCurrencyDecimals public.
- SepaAmount no longer validates the number of decimal places when the amount is set, but correctly validates the number of decimal places for the given amount currency in OnValidate.
- Since camt.052/053.001.07 the Rpt/Stmt sub-element CreDtTm is optional. This new rule is now treated correctly, instead of always assuming it is mandatory.
- Added support for the Transaction Details Refs elements MsgId, InstrId, and ClrSysRef by adding corresponding properties to the SepaTransactionDetails class.
- A generated SepaDocument now only includes a XMLSchema-instance namespace reference in its XML header, if a schemaLocation was actually specified.
- All generated ZKA_Pain_001_001_03 (or later), or ZKA_Pain_008_001_02 (or later), now don't include a schemaLocation. (Fixes problems with Bank-Verlag)
- If the properties SepaCreditTransferPaymentInformation.Debtor.BIC and/or SepaCreditTransferPaymentInformation.Debtor.OtherIdentification/s are set, then an Id element with these properties will be generated in the output.
Version 9.1.4.8679
- Added abstract property SepaPaymentInformation.RequestedDate which is overriden with the RequestedExecutionDate or RequestedCollectionDate in derived classes.
Version 9.1.3
- Added property SepaPaymentTypeBase.IsSepaCompliant which can be used to determine, whether a payment initiation is a SEPA compliant payment.
- Added property SepaDocument.ServiceLevel which determines the common service level for all payments in a document.
- Fix generation of Swiss pain.008.001.02.ch.03 format.
- More tolerant parsing of MT-942 floor limits.
- Improvements to SupaConverter.
Version 9.1.1
- Added Support for pain.008.01.08.
- Added property SepaPaymentTypeBase.IsEmptyPaymentTypeInformation and method SepaPaymentTypeBase.ClearPaymentTypeInformation.
- Added property SepaPaymentTypeBase.CategoryPurposeProprietary.
Version 9.1.0
- Added support for OCMT and CHGS in SwiftStatementLine. For this the new properties OriginalAmount, OriginalAmountCurrency, ChargesAmount, and ChargesAmountCurrency have been added.
- Added SupaColumns InstdAmt, InstdAmtCcy, TtlChrgsAndTaxAmt, and TtlChrgsAndTaxAmtCcy to statement entry columns.
- Added Support for pain.001.001.08 and pain.001.001.09. This includes the following generic additions:
- The SepaPostalAddress was vastly extended with many more fields.
- Added SepaCreditTransferPaymentInformation.RequestedExecutionDateTime which can optionally by used instead of SepaCreditTransferPaymentInformation.RequestedExecutionDate if a time shall be included in the RequestedExecutionDate data element.
Version 9.0.7
- Changed handling of missing EntryDate when parsing MT-940. If an OpeningBalance and a ClosingBalance for the same date is present, then all missing EntryDate fields between these balances will be set to this balance date.
- When generating a SepaFinancialInstitutionIdentification, BIC or BICFI is now used correctly based on the generated message type and version. Now produces correct CAMT version 08 and later.
Version 9.0.6
- Added various missing properties to the Payment Status Report object tree classes.
Version 9.0.5
- Added SepaTransactionDetails properties LocalInstrumentCode, LocalInstrumentProprietary and PurposeProprietary. The LocalInstrument properties are only supported in CAMT version 08 and later.
Version 9.0.4
- Fix SupaConverter.ConvertToSupa for SepaStatementEntry, where the amount is given at the TxDtls and not at the Ntry level.
- SepaChargesRecord.Party is now optional instead of mandatory (which was wrong).
- Fix problem with empty RltdAgts elements.
Version 9.0.3
- BREAKING: For all SepaAmount instances it is required to specify a SepaAmountCreditDebitIndicatorConstraint as Forbidden, Optional, or Mandatory, at construction time.
- Added SepaTransactionDetails.Amount property for better support of CAMT version 08.
- Fixed Reading/Writing of SepaTransactionDetails RltdPties for CAMT version 08, where a PartyChoice element is used.
Version 9.0.2
- Fix for Problems with parsing and generating camt.05x.xx.08 files.
- Added SepaQrCode class for generating and parsing the payload of EPC069 QR Codes. This class does not decode or generate QR Code images. We recommend using the ZXing library for that purpose.
- Added SepaDateUtil class.
Version 9.0.1
- Added SepaChequeInstruction and SepaCreditTransferTransactionInformation.ChequeInstruction. Also DtazvParser now supports parsing cheque payments.
- Added SupaRecordUri and more classes to support SUPA URLs.
Version 8.0.1
- Added SepaMessageName class and SepaMessage.MessageName property.
- Parsing a BIC with SepaBIC now tolerates embedded, leading and trailing spaces.
Version 8.0.0
- Added Dtazv* classes for parsing and generating DTAZV files.
- Merged Swift* classes from separate assembly into this assembly. Eliminated the duplicate SwiftIBAN and SwiftBIC classes. Instead the SepaIBAN and SepaBIC classes can be used as a drop-in replacement.
- BREAKING: SwiftStatement.ReadMT940() and Load() have been removed. There are now new ReadAllMessages() methods, that return an array of all messages that were read.
- The PmtInf/FinInstdId is preset as NOTPROVIDED again.
Version 7.7.1
- Added SepaAmount.Clone() and SepaBalance.Clone().
Version 7.7.0
- Added support for balance type element
in SepaBalance.TypeProprietary in order to improve compatibility with Austrian C52. - Added static SepaStatement.CreateStatement() convenience method.
- More SupaConverter stuff.
- Added SepaPartyIdentification.OtherIdentifications collection. The old SepaPartyIdentification.OtherIdentification is just a shortcut to the first element in this collection and should no longer be used.
- Added classes SepaAustrianIBAN and SepaSwissIBAN.
- Added new SepaWellKnownMessageInfos ZKA_Pain_001_001_03_GBIC_3, ZKA_Pain_008_001_02_GBIC_3, and ZKA_Pain_002_001_03_GBIC_3, with corresponding support in SepaMessageInfo. Also fixed spelling errors: Wrong "GIBC" is now "GBIC".
- Added SepaIBANSpec.BankCodeLength and BankCodeOffset.
- Added new SepaPaymentTypeBase abstract base class that holds all information of a PmtTpInf element. This is now the base of SepaPaymentInformation, SepaTransactionInformation, and SepaOriginalTransactionInformation. Thus all payment type attributes are now available at all payment levels.
- Added SepaBankInfo, SepaBankInfos, SepaAustrianBankInfos, SepaGermanBankInfos, and SepaSwissBankInfos. These can be used to load bank information files.
- Many instances now support a full CreditorAccount and DebtorAccount in addition to CreditorAccountIBAN and DebtorAccountIBAN. This is in preparation for international ISO 20022 payments that don't use IBAN numbers.
- BREAKING: Refactored all IsValid() and IsEmpty() methods to simple IsValid and IsEmpty boolean properties. Added Validate() method to SepaObject and SepaCollection that allows a detailed validation.
Version 7.6.1
- Added SepaCreditTransferPaymentInformation.LocalInstrumentCode in order to support SEPA instant payments over EBICS using the new "CIP" order type.
Version 7.6.0
- Added Namespace Subsembly.Supa for coverting SEPA to JSON or CSV.
- Added new SepaRF struct for working with Structured Creditor References.
Version 7.5.0
- Release is now built for .NET Standard 2.0. Please read the documentation for the new platform and installation requirements!
- Added SepaTransactionDetails.RemittanceInformationLines convenience getter.
- Added convenience class SepaGermanBankTransactionCode.
- Skipping Amt and CdtDbtInd in TxDtls if present. This allows parsing of some swiss CAMT files.
- Now includes the previous Subsembly Swift API.
Version 7.0.0
- Now the Subsembly Swift API is included with the Subsembly SEPA API. The Subsembly SWIFT API now also includes a helper class SwiftMX that converts a SwiftStatement (MT-940) to a SepaStatement (CAMT).
- Added properties SepaDirectDebitPaymentInformation.CreditorAgentFinancialInstitutionIdentification, SepaCreditTransferPaymentInformation.DebtorAgentFinancialInstitutionIdentification SepaDirectDebitTransactionInformation.DebtorAgentFinancialInstitutionIdentification, and SepaCreditTransferTransactionInformation.CreditorAgentFinancialInstitutionIdentification that provide more detailed access to the corresponding elements.
- Added property SepaFinancialInstitutionIdentification.ClearingSystemCode.
- Added convenience properties SepaAccount.GermanBankCode and SepaAccount.GermanAcctNo.
- Added SepaCreditorID.Format() method.