using System.Collections.Generic;
using System.Xml.Serialization;
public static void Main()
var batchPostingRequest = new BatchPostingRequest();
string xmlRequest = Serialize<BatchPostingRequest>(batchPostingRequest);
string xmlResponse = MakeApiCall(xmlRequest);
Console.WriteLine(xmlResponse);
var result = Deserialize<BatchPostingResponse>(xmlResponse);
Console.WriteLine($"ResponseCode: {result.HostHeaderInfo.ResponseCode}");
Console.WriteLine($"ResponseMessage: {result.HostHeaderInfo.ResponseMessage}");
public static string MakeApiCall(string xmlBody)
var options = new RestClientOptions("https://mybankstatement.net")
var client = new RestClient(options);
var request = new RestRequest("/tpservices/webservice.asmx", Method.Post);
request.AddHeader("Content-Type", "text/xml");
request.AddStringBody(xmlBody, DataFormat.Xml);
RestResponse response = client.Execute(request);
private static string Serialize<T>(T request)
var serializer = new XmlSerializer(typeof(T));
using (var sw = new StringWriter())
using (XmlTextWriter writer = new XmlTextWriter(sw)
Formatting = Formatting.Indented
serializer.Serialize(writer, request);
private static T Deserialize<T>(string xml)
var serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(xml))
result = (T)serializer.Deserialize(reader);
public class FeedbackResult
public string Status { get; set; }
public string Feedback { get; set; }
[XmlRoot(ElementName = "hostHeaderInfo")]
public class HostHeaderInfo
[XmlElement(ElementName = "requestId")]
public double RequestId { get; set; }
[XmlElement(ElementName = "affiliateCode")]
public string AffiliateCode { get; set; }
[XmlElement(ElementName = "responseCode")]
public int ResponseCode { get; set; }
[XmlElement(ElementName = "responseMessage")]
public string ResponseMessage { get; set; }
[XmlRoot(ElementName = "BatchPostingResponse")]
public class BatchPostingResponse
[XmlElement(ElementName = "hostHeaderInfo")]
public HostHeaderInfo HostHeaderInfo { get; set; }
[XmlElement(ElementName = "batchNo")]
public double BatchNo { get; set; }
[XmlRoot(ElementName = "hostHeaderInfo")]
public class RequestHostHeaderInfo
[XmlElement(ElementName = "sourceCode")]
public string SourceCode { get; set; }
[XmlElement(ElementName = "requestId")]
public double RequestId { get; set; }
[XmlElement(ElementName = "requestToken")]
public string RequestToken { get; set; }
[XmlElement(ElementName = "requestType")]
public string RequestType { get; set; }
[XmlElement(ElementName = "affiliateCode")]
public string AffiliateCode { get; set; }
[XmlElement(ElementName = "IPAddress")]
public string IPAddress { get; set; }
[XmlElement(ElementName = "sourceChannelId")]
public string SourceChannelId { get; set; }
[XmlRoot(ElementName = "TransactionEntry")]
public class TransactionEntry
[XmlElement(ElementName = "instrumentNo")]
public object InstrumentNo { get; set; }
[XmlElement(ElementName = "ccy")]
public string Ccy { get; set; }
[XmlElement(ElementName = "amount")]
public double Amount { get; set; }
[XmlElement(ElementName = "lcyAmount")]
public double LcyAmount { get; set; }
[XmlElement(ElementName = "exchRate")]
public double ExchRate { get; set; }
[XmlElement(ElementName = "narration")]
public string Narration { get; set; }
[XmlElement(ElementName = "tranDate")]
public DateTime TranDate { get; set; }
[XmlElement(ElementName = "valueDate")]
public DateTime ValueDate { get; set; }
[XmlElement(ElementName = "externalRefNo")]
public double ExternalRefNo { get; set; }
[XmlElement(ElementName = "costCenterCode")]
public object CostCenterCode { get; set; }
[XmlElement(ElementName = "accountBranchCode")]
public string AccountBranchCode { get; set; }
[XmlElement(ElementName = "accountNo")]
public double AccountNo { get; set; }
[XmlElement(ElementName = "customerID")]
public int CustomerID { get; set; }
[XmlElement(ElementName = "tranCode")]
public string TranCode { get; set; }
[XmlElement(ElementName = "debitOrCredit")]
public string DebitOrCredit { get; set; }
[XmlRoot(ElementName = "BatchPostingRequest")]
public class BatchPostingRequest
[XmlElement(ElementName = "hostHeaderInfo")]
public RequestHostHeaderInfo HostHeaderInfo { get; set; }
[XmlElement(ElementName = "batchNo")]
public double BatchNo { get; set; }
[XmlElement(ElementName = "batchRefNo")]
public double BatchRefNo { get; set; }
[XmlElement(ElementName = "batchTitle")]
public double BatchTitle { get; set; }
[XmlElement(ElementName = "tranType")]
public string TranType { get; set; }
[XmlElement(ElementName = "noOfEntries")]
public int NoOfEntries { get; set; }
[XmlElement(ElementName = "postingBranchCode")]
public string PostingBranchCode { get; set; }
[XmlElement(ElementName = "TransactionEntry")]
public List<TransactionEntry> TransactionEntry { get; set; }