/// <summary>
        ///     Add an existing Debit transfer transaction
        /// </summary>
        /// <param name="transfer"></param>
        /// <exception cref="ArgumentNullException">If transfert is null.</exception>
        public void AddDebitTransfer(SepaDebitTransferTransaction transfer)
        {
            if (transfer == null)
            {
                throw new ArgumentNullException("transfer");
            }

            transfer = (SepaDebitTransferTransaction)transfer.Clone();
            if (transfer.EndToEndId == null)
            {
                transfer.EndToEndId = (PaymentInfoId ?? MessageIdentification) + "/" + (numberOfTransactions + 1);
            }
            CheckTransactionIdUnicity(transfer.Id, transfer.EndToEndId);
            transactions.Add(transfer);
            numberOfTransactions++;
            headerControlSum  += transfer.Amount;
            paymentControlSum += transfer.Amount;
        }
        /// <summary>
        /// Generate the Transaction XML part
        /// </summary>
        /// <param name="pmtInf">The root nodes for a transaction</param>
        /// <param name="transfer">The transaction to generate</param>
        private static void GenerateTransaction(XmlElement pmtInf, SepaDebitTransferTransaction transfer)
        {
            var cdtTrfTxInf = pmtInf.NewElement("DrctDbtTxInf");
            var pmtId       = cdtTrfTxInf.NewElement("PmtId");

            if (transfer.Id != null)
            {
                pmtId.NewElement("InstrId", transfer.Id);
            }
            pmtId.NewElement("EndToEndId", transfer.EndToEndId);
            cdtTrfTxInf.NewElement("InstdAmt", StringUtils.FormatAmount(transfer.Amount)).SetAttribute("Ccy", transfer.Currency);

            var MndtRltdInf = cdtTrfTxInf.NewElement("DrctDbtTx").NewElement("MndtRltdInf");

            MndtRltdInf.NewElement("MndtId", transfer.MandateIdentification);
            MndtRltdInf.NewElement("DtOfSgntr", transfer.DateOfSignature.ToString("yyyy-MM-dd"));

            cdtTrfTxInf.NewElement("DbtrAgt").NewElement("FinInstnId").NewElement("BIC", transfer.Creditor.Bic);
            cdtTrfTxInf.NewElement("Dbtr").NewElement("Nm", transfer.Creditor.Name);
            cdtTrfTxInf.NewElement("DbtrAcct").NewElement("Id").NewElement("IBAN", transfer.Creditor.Iban);
            cdtTrfTxInf.NewElement("RmtInf").NewElement("Ustrd", transfer.RemittanceInformation);
        }