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.
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.
New property CreditorReferenceCode of SepaTransactionInformation, SepaTransactionDetails and SepaOriginalTransactionInformation that holds the value of the Strd/CdtrRefInf/Tp/CdOrPrtry/Cd element in a SEPA structured creditor reference information.
New property CreditorReferenceProprietary of SepaTransactionInformation, SepaTransactionDetails and SepaOriginalTransactionInformation that holds the value of the Strd/CdtrRefInf/Tp/CdOrPrtry/Prtry element in a SEPA structured creditor reference information.
Added properties CreditLineIncluded and CreditLineAmount to SepaBalance class.
Added new SepaWellKnownMessageInfos ZKA_Pain_001_001_03_GIBC_2, ZKA_Pain_008_001_02_GIBC_2, and ZKA_Pain_002_001_03_GIBC_2, with corresponding support in SepaMessageInfo.
Added support for Swiss pain.008.001.02.ch.03 according to Swiss Implementation Guidelines for Customer-Bank Messages for the Swiss Direct Debit Procedure version 1.1.1
New property SepaDirectDebitPaymentInformation.ServiceLevelProprietary that holds the value of the PmtTpInf/SvcLvl/Prtry element in a SEPA direct debit payment information.
New property SepaDirectDebitPaymentInformation.LocalInstrumentProprietary that holds the value of the PmtTpInf/LclInstrm/Prtry element in a SEPA direct debit payment information.
New property SepaDirectDebitPaymentInformation.MemberIdentification that holds the value of the CdtrAgt/FinInstnId/ClrSysMmbId/MmbId element in a SEPA direct debit payment information.
New property SepaDirectDebitPaymentInformation.CreditorSchemeNameProprietary that holds the value of the CdtrSchmeId/Id/PrvtId/Othr/Id/SchmeNm/Prtry element in a SEPA direct debit payment information.
New property SepaDirectDebitTransactionInformation.MemberIdentification that holds the value of the DbtrAgt/FinInstnId/ClrSysMmbId/MmbId element in a SEPA direct debit transaction information.
BREAKING: Removed all back/parent references from all SepaObjects and SepaCollections. This was done in order to improve efficiency and also to make the SepaObjects more self-contained and fully usable outside of collections. Also, SepaObjects can now be contained in multiple collections.
Added support for Swiss pain.001.001.03.ch.02 and pain.008.001.02.chsdd.02 according to Swiss Implementation Guidelines for credit transfers, Version 1.7.2 and Swiss Implementation Guidelines for SEPA direct debits, Version 2.5.2. See SepaWellKnownMessageInfos enumeration.
Element PmtTpInf made optional in SepaCreditTransferPaymentInformation
Element PmtTpInf made optional in SepaCreditTransferTransactionInformation
Element PmtTpInf made optional in SepaDirectDebitPaymentInformation
Element PmtTpInf made optional in SepaDirectDebitTransactionInformation
New property SepaCreditTransferTransactionInformation.ServiceLevelCode that holds the value of the PmtTpInf/SvcLvl element in a SEPA credit transfer transaction information.
New property SepaDirectDebitPaymentInformation.ServiceLevelCode that holds the value of the PmtTpInf/SvcLvl element in a SEPA direct debit payment information.
New property SepaDirectDebitTransactionInformation.ServiceLevelCode that holds the value of the PmtTpInf/SvcLvl element in a SEPA direct debit transaction information.
New property SepaDirectDebitTransactionInformation.LocalInstrumentCode that holds the value of the PmtTpInf/LclInstrm element in a SEPA direct debit transaction information.
New property SepaDirectDebitTransactionInformation.SequenceType that holds the value of the PmtTpInf/SeqTp element in a SEPA direct debit transaction information.
New property SepaTransactionInformation.CategoryPurpose that holds the value of the PmtTpInf/CtgyPurp element in a SEPA transaction information.
Possibly BREAKING: The SepaAmount class now has a non-default constructor. It is no longer possible to create a SepaAmount instance without using the special non-default constructor. In addition the SepaAmount class now has an IsValid() method that requires that a currency code and may be a credit/debit indicator is set the amount.
New enumeration SepaBalanceType and property SepaBalance.Type.
New SepaBalance constructor for convenience.
New method SepaBalances.FindBalance().
New property SepaTransactionDetails.TransactionDateTime that holds the value of the RltdDts/TxDtTm element. This is used by credit card transactions to contain the date of purchase.
The SepaObject base class now has an additional abstract IsEmpty() method.
New object SepaBankTransactionCode added. This adds support for bank transaction codes given with domain, family und sub-family codes, in addition to a prorietary bank transaction code and issuer.
The SepaStatementEntry and the SepaTransactionDetails now contain a SepaBankTransactionCode as a member, accessible through the new property TransactionCode. The old properties BankTransactionCode and BankTransactionCodeIssuer of these classes are now marked as deprecated.
The SepaStatementEntries collection has a new method InsertEntry() that makes it easier to create a nicely sorted entries collection from scratch.
New convenience method SepaAmount.SetValue().
Added more well known specifications to SepaIBANSpec.
The method SepaIBAN.IsValid now also validates the length against the well known SepaIBANSpecs.
Added static SepaGermanIBAN.IsValid method.
Unfortunately the implementation of SepaCharges did not work as expected. Therefore some BREAKING CHANGES were required to fix it. SepaCharges no longer derives from SepaObject, but instead now derives from SepaCollection. The intermediate SepaChargesRecords collection has been removed completely, and also the Records property that was holding it. Instead the SepaChargesRecord objects are now contained directly in the SepaCharges collection.
PstlAdr elements with unsupported content elements can now be parsed, too.
Added SepaMessageInfo.GetAllWellKnownMessageInfos() method.
Added TypeCode, TypeProprietaryIdentification, and TypeProprietaryIssuer properties to the SepaChargesRecord.
Added new class SepaPostalAddress that is used by the SepaPartyIdentification class and the SepaFinancialInstitutionIdentification class in their new PostalAddress properties.
- Added SepaTransactionInformation.InstructionIdentification Property that represents the PmtId/InstrId element in a SEPA transaction information.
Support for the outdated pain.001.xxx.02 and pain.008.xxx.01 formats has been completely removed.
The property SepaPartyIdentification.BankPartyIdentification is no longer supported and has been removed. The corresponding BkPtyId element is no longer supported by Austrian banks and hence is no longer needed.
The objects are now no longer implicitly cleared in OnReadXml. This means, if you re-load the content of an object, you must call Clear, first. This should rarely be the case, as you probably use new objects or SepaDocument to load files.
New classes SepaCharges, SepaChargesRecords, and SepaChargesRecord. The SepaStatementEntry and the SepaTransactionDetails classes now contain a Charges property that contains a SepaCharges instance. The SepaCharges object holds all the charge information of a transaction. The implementation is prepared to handle the upcoming CAMT v04 formats.
Added SepaAmount.IsEmpty() and SepaCollection.IsEmpty() for convenience.
Added SepaTransactionDetails.ReferencesProprietary property that contains a Dictionary with all the proprietary references from the Refs collection of the TxDtls element.
Now compiliing everything for .NET Framework 4.5
Small changes in order to achieve compatibility with .NET Core 1.0.
Added Austrian Rulebook 7.1 formats to SepaWellKnownMessageInfos and SepaMessageInfo. The format is identical to the predecessor, thus no extra code changes were needed.
Property SepaDirectDebitTransactionInformation.SameMandateNewDebtorAgent has been removed as this is no longer supported in the current EPC Rulebook. Instead a special SepaDirectDebitTransactionInformation.SMNDA IBAN value was added that can be used with the SepaDirectDebitTransactionInformation.OriginalDebtorAccountIBAN property.
Now supporting "Spezifikation der Datenformate" version 3.0.
Added the new ZKA/DK namespaces to SepaNamespace and SepaWellKnownMessageInfos. Warning: The new namespaces have numerically lower values, than the older namespaces.
Changed the default value of the properties SepaStatementEntry.BankTransactionCodeIssuer and SepaTransactionDetails.BankTransactionCodeIssuer from "ZKA" to "DK".
SepaUtil.EnforceCharset now correctly replaces a '*' with the given substitution character.
Added SepaTransactionDetails.PaymentInformationIdentification property.
Added SepaUtil.NONREF constant value.
Added SepaPaymentInformation.ChargeBearer property that is used in the derived SepaCreditTransferPaymentInformation and SepaDirectDebitPaymentInformation classes. The default value of this property is "SLEV" in order to ensure backward compatibility.
For all Name, Info and Text properties, the character set of a given string is no longer validated against the Latin 1 characters set. This means, that any Unicode characters can be used now.
The SepaUtil helper class now contains new static methods CheckGermanCharset, EnforceGermanCharset, and EnforceGermanName. These properly deal with the German DK SEPA character set that includes umlaut characters.
Added static SepaIBAN.Format convenience method.
Support for the element RtrInf/Rsn/Prtry in SepaTransactionDetails through the new ReturnInformationReasonProprietary property.
Support for AddtlInf elements in SepaStatusReasonInformation through the new AdditionalInformation property.
Support for PmtInfSts element in SepaOriginalPaymentInformation through new PaymentInformationStatus property.
Fixed support for pain.002 files by reworking SepaPaymentStatusReport implementation.
Added several comatibility work-arounds for malformed SEPA documents.
Fixed bug where reading SepaTransactionDetails (e.g. inside a CAMT file) leads to an endless loop when unknown elements exist.
Added two convenient SepaGermanIBAN.LoadBundesbankTable method overloads.
Added SepaOriginalTransactionInformation.PaymentMethod which also fixes a bug when loading pain.002 documents that contain a PmtMtd element.
When reading the XML the namespace declarations are now fully supported.
When reading a DrctDbtTxInf the element AmdmntInd is now ignored and only AmdmntInfDtls is parsed.
SepaStatement.ElectronicSequenceNumber and SepaStatement.LegalSequenceNumber are now of type long instead of type int. This avoids overflow on really large numbers.
SepaTransactionDetails: Fixed reading of empty RtrInf element.
Any amounts are now always written with exactly two decimal places. Additional decimal places will be rounded, less decimal places will be filled with zeroes.
Implemented Bundesbank IBAN Rules 2014/03.
New Object SepaStatements, new Properties SepaBankToCustomerMessage.Statements SepaBankToCustomerMessage.StatementTag and new method SepaBankToCustomerMessage.NewStatement() now support CAMT files with multiple Rpt, Stmt, or Ntfctn elements.
Added SepaTransactionDetails.InstructedAmount property.
SepaStatementEntry can now read multiple
elements, but only a single element may occur.
Added property SepaCreditTransferTransactionInformation.InstructionForDebtorAgent.
Added property SepaDirectDebitTransactionInformation.InstructionForCreditorAgent.
Added properties Batch, BatchMessageIdentification, and BatchNumberOfTransactions to SepaStatementEntry class.
Added properties TransactionIdentification and AccountServicerReference to SepaTransactionDetails class.
Added static SepaDocument.NewDocumentXml(XmlReader) overload.
Fixed bug in reading of empty RltdPties element in SepaTransactionDetails class.
Added new class SepaOtherId that helps reading and writing SEPA "other identification" elements. The new class is used internally in various other classes where "other identification" elements are required.
Add new SepaPartyIdentification.OtherIdentification property for direct access to the "other identification" element. Through this property the special fields required for submitting a XML container via EBICS can be set up.
Fixed errors in SepaGermanIBAN processing of rules 0021, 0052, and 0053.
Added this ReadMe.txt file in order to start a version history.
Added SepaInfo.pdf file with general information about the German SEPA formats and usage.
Added SepaDirectDebit sample application that demonstrates how to create a SEPA direct debit XML file.
Added SepaConvertIBAN sample application that demonstrates how to use the SepaGermanIBAN class and is actually useful.
SepaGermanIBAN is now based on the Bundesbank IBAN Regeln from December 2013.
The Austrian pain.001.001.03 and pain.008.001.02 formats according to APC Rulebooks 4.0, 5.0 and 6.0 are now supported. See SepaWellKnownMessageInfos enumeration.
Added property OtherId to SepaFinancialInstitutionIdentification class. This takes up the bank code as sent by the German Postbank.
Added property CreditorReferenceInformation to SepaTransactionDetails, SepaTransactionInformation, and SepaOriginalTransactionInformation classes.