
OFX, Open Financial Exchange, files are used for exchanging financial information. It is used in client-server as well as Cloud-based systems. So the request-response model is used for exchanging financial information. Let us learn the OFX request and response:
- Parse OFX Request and Response – C# API Installation
- Create OFX Request Programmatically using C#
- Create OFX Response Programmatically with C#
Parse OFX Request and Response – C# API Installation
Aspose.Finance for .NET API supports several features for processing and parsing financial data. You can download it from the Downloads section or install via NuGet gallery with the following command:
PM> Install-Package Aspose.Finance
Moreover, the evolution of OFX is worth mentioning here. OFX version 1 through 1.6 is based on SGML syntax. The later versions rely on XML specifications. For better understanding, we will create OFX request and response files in both formats (1.03 & 2.2).
Create OFX Request Programmatically using C#
OFX protocol is a standard for a two-way exchange of financial data. You can easily create a request by following the steps below:
- Initialize Ofx Request Document object
- Create Sign on Request instance
- Set different properties
- Save OFX request in 1.03 and 2.2 format
The code snippet below explains how to create OFX Request programmatically using C# language:
// Initialize OfxRequestDocument object | |
OfxRequestDocument document = new OfxRequestDocument(); | |
document.SignonRequestMessageSetV1 = new SignonRequestMessageSetV1(); | |
// Initialize SignonRequest and set diffent properties | |
SignonRequest signonRequest = new SignonRequest(); | |
document.SignonRequestMessageSetV1.SignonRequest = signonRequest; | |
signonRequest.ClientDate = "20200611000000"; | |
signonRequest.UserId = "aspose"; | |
signonRequest.UserPassword = "password"; | |
FinancialInstitution fi = new FinancialInstitution(); | |
fi.Organization = "aspose"; | |
fi.FinancialInstitutionId = "1"; | |
signonRequest.FinancialInstitution = fi; | |
signonRequest.AppVersion = "1.0"; | |
signonRequest.AppId = "Aspose.Finance"; | |
signonRequest.ClientUserId = "aaaaaaa"; | |
document.BankRequestMessageSetV1 = new BankRequestMessageSetV1(); | |
StatementTransactionRequest stmtTransRequest = new StatementTransactionRequest(); | |
document.BankRequestMessageSetV1.StatementTransactionRequests.Add(stmtTransRequest); | |
stmtTransRequest.TransactionUniqueId = "1111111"; | |
stmtTransRequest.StatementRequest = new StatementRequest(); | |
stmtTransRequest.StatementRequest.BankAccountFrom = new BankAccount(); | |
stmtTransRequest.StatementRequest.BankAccountFrom.BankId = "sssss"; | |
stmtTransRequest.StatementRequest.BankAccountFrom.AccountId = "sfsdfsfsdf"; | |
stmtTransRequest.StatementRequest.BankAccountFrom.AccountType = AccountEnum.CHECKING; | |
stmtTransRequest.StatementRequest.IncTransaction = new IncTransaction(); | |
stmtTransRequest.StatementRequest.IncTransaction.StartDate = "20200601000000"; | |
stmtTransRequest.StatementRequest.IncTransaction.EndDate = "20200611000000"; | |
stmtTransRequest.StatementRequest.IncTransaction.Include = true; | |
// Create OFX request for both versions | |
document.Save(outputDir + @"newOfxRequestBankStatement.xml", OfxVersionEnum.V2x); | |
document.Save(outputDir + @"newOfxRequestBankStatement.sgml", OfxVersionEnum.V1x); |
Create OFX Response Programmatically with C#
You can create an OFX response in .NET based applications programmatically using C#. The following steps explain OFX response creation process:
- Initialize Ofx Response Document class object
- Declare Sign on Response and set values
- Save response with Ofx Version Enum Enumeration
The following code snippet shows how to create OFX response programmatically using C#:
// Initialize OfxResponseDocument object | |
OfxResponseDocument document = new OfxResponseDocument(); | |
document.SignonResponseMessageSetV1 = new SignonResponseMessageSetV1(); | |
// Initialize SignonResponse instance | |
SignonResponse signonResponse = new SignonResponse(); | |
document.SignonResponseMessageSetV1.SignonResponse = signonResponse; | |
signonResponse.Status = new Status(); | |
signonResponse.Status.Code = "0"; | |
signonResponse.Status.Severity = SeverityEnum.INFO; | |
signonResponse.Status.Message = "SUCCESS"; | |
signonResponse.ServerDate = "20200611"; | |
signonResponse.ProfileUpdateDate = "20200611"; | |
FinancialInstitution fi = new FinancialInstitution(); | |
fi.Organization = "aspose"; | |
fi.FinancialInstitutionId = "1"; | |
signonResponse.FinancialInstitution = fi; | |
signonResponse.SessionCookie = "11111111111111111"; | |
document.BankResponseMessageSetV1 = new BankResponseMessageSetV1(); | |
StatementTransactionResponse stmtTransResponse = new StatementTransactionResponse(); | |
document.BankResponseMessageSetV1.StatementTransactionResponses.Add(stmtTransResponse); | |
stmtTransResponse.TransactionUniqueId = "829631324"; | |
stmtTransResponse.Status = new Status(); | |
stmtTransResponse.Status.Code = "0"; | |
stmtTransResponse.Status.Severity = SeverityEnum.INFO; | |
stmtTransResponse.StatementResponse = new StatementResponse(); | |
stmtTransResponse.StatementResponse.Currency = CurrencyEnum.USD; | |
stmtTransResponse.StatementResponse.BankAccountFrom = new BankAccount(); | |
stmtTransResponse.StatementResponse.BankAccountFrom.BankId = "1111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountId = "1111111111111"; | |
stmtTransResponse.StatementResponse.BankAccountFrom.AccountType = AccountEnum.CHECKING; | |
stmtTransResponse.StatementResponse.BankTransactionList = new BankTransactionList(); | |
stmtTransResponse.StatementResponse.BankTransactionList.StartDate = "20200601000000"; | |
stmtTransResponse.StatementResponse.BankTransactionList.EndDate = "20200611000000"; | |
StatementTransaction transaction1 = new StatementTransaction(); | |
transaction1.TransactionType = TransactionEnum.DEBIT; | |
transaction1.PostedDate = "20200611000000"; | |
transaction1.TransactionAmount = "-12"; | |
transaction1.FinancialInstitutionTransactionId = "1111111111111111111111111"; | |
transaction1.Name = "bbbbbbbbbbbbbbbbbbbbbbb"; | |
StatementTransaction transaction2 = new StatementTransaction(); | |
transaction2.TransactionType = TransactionEnum.CREDIT; | |
transaction2.PostedDate = "20200611000000"; | |
transaction2.TransactionAmount = "22222.11"; | |
transaction2.FinancialInstitutionTransactionId = "2222222222222222222222222222"; | |
transaction2.Name = "wwwwwwwwwwwwwwwwwwwwwwww"; | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction1); | |
stmtTransResponse.StatementResponse.BankTransactionList.StatementTransactions.Add(transaction2); | |
stmtTransResponse.StatementResponse.LedgerBalance = new LedgerBalance(); | |
stmtTransResponse.StatementResponse.LedgerBalance.BalanceAmount = "+2222.42"; | |
stmtTransResponse.StatementResponse.LedgerBalance.DateAsOf = "20200611000000"; | |
stmtTransResponse.StatementResponse.AvailableBalance = new AvailableBalance(); | |
stmtTransResponse.StatementResponse.AvailableBalance.BalanceAmount = "+222222.42"; | |
stmtTransResponse.StatementResponse.AvailableBalance.DateAsOf = "20200611000000"; | |
// Save response in OFX 1.03 and 2.2 format specification | |
document.Save(outputDir + @"newOfxResponseBankStatement.xml", OfxVersionEnum.V2x); | |
document.Save(outputDir + @"newOfxResponseBankStatement.sgml", OfxVersionEnum.V1x); |
Conclusion
OFX standard is platform-independent so the users can choose the system environment or platform to use financial processing features. It enables the banks, brokerages, and payroll processing companies to create tailored solutions. You can get in touch via the Free Support Forum. We will be glad to help you!