About our client and its technological needs
ACH is a US financial network that provides secure electronic funds transfer between bank accounts at different institutions and enables returns.
Our client, an American financial platform, cooperates with brokers and syndicates to issue loans to the end customers, integrating with debit and credit bank APIs. The platform must handle a large volume of transactions and involve external participants in the payment process. Due to a complicated process of paying interest to each stakeholder, extensive data volume, and overall complexity of fund management, the organization needed a solution for the automation of payments.
The decision was made to implement a solution that supports ACH payments through the NACHA file communication protocol with a distinct logic of money distribution between the client, brokers, and syndicates.
The complexity of the loan issue process
Our client’s existing financial architecture consists of multiple steps and criteria to be assessed. To make it all work, the organization needs to establish a seamless and transparent cooperation with the client itself, brokers, and syndicates, with the interest payments properly delivered and managed. This process creates several technical and organizational challenges for our client:
- Complexity of multi-source or multi-tenant financing (everyone pays separately)
- Differences in payment schedules for customers, syndicates, and brokers
- Complex commission or interest structure with different beneficiaries
- Unpredictable payment flows (a payment might be returned after the related interest has already been paid out, requiring reconciliation in the next cycle)
As a software development provider, we needed to consider all these aspects to design a practical solution that automates and streamlines ACH payment placing and processing, ensuring accurate, timely, and transparent management of money across all parties involved.
Our challenges during development
The client provided us only with high-level business requirements: an automated money management system for all parties involved. NetLS was entirely responsible for system design, architecture, and user experience development. The core challenges we faced during ACH file creation software for finance institution included:
- Complex logic that includes commissions, transaction sequencing, and multiple participant roles.
- Instability in banking services in the USA (delays in fund settlements, a lack of streamlined communication between different departments and banks).
- The correct format of a NACHA file. A NACHA file is an electronic set of instructions that triggers a batch of ACH payments when uploaded into a bank portal. The file must be formatted in such a way that the scanning application reads it properly and initiates payment. e.g., NACHA accepts only Latin characters. If there are Cyrillic or special characters, payments are returned. In addition, different banks may require slight variations in the file format, even for similar transaction types.
- Some rejected payments need to be processed manually due to a lack of support on the bank side.
- Strict compliance with the criteria is critical to know which payments should go through and when.
- Some transactions are handled outside the client’s system, yet the platform must still monitor, plan, and report on all payments. This makes the calculation of payouts for beneficiaries particularly complex and error-prone.
- High-stakes environment. The platform processes tens of millions of US dollars monthly, adding pressure to ensure stability, precision, and security.
- Banks provided reporting on different payment types in one batch, and the portal needed to distinguish different payment types for correct reporting. This problem is exacerbated by the fact that debit payments from merchants are already implemented and running in production for each of the banks our dedicated development team has worked with, or continues to support the integration for the financial platform. We needed to make sure we didn’t affect the existing functionality.
With a decade-long experience in fintech development and the best development practices for building digital banking solutions within an Agile framework, our team successfully overcame these challenges and exceeded the client’s expectations.
What was done
In our solution, we implemented:
- Automated B2B ACH payments to brokers (disbursements or credit payments) and syndicates (both disbursements or credit payments and collections or debit payments). (Next-Day ACH — at the earliest stages of production life cycle, Same-Day ACH — now).
- ACH integration with multiple US banks via SFTP in accordance with security policies on on-premises or Azure Cloud servers.
- Payments are batched into separate NACHA files by payment type, bank, and account.
- Clear reporting for accounting and beneficiaries.
- Payments are automated or executed according to the schedule.
- Handling of returned transactions. Returns are recorded automatically or manually. (We developed reports for all pending or unconfirmed, or bounced payments with actions: confirm, edit, resend.)
- Optimized processes built on Azure Cloud infrastructure helped reduce costs and lower reliance on credit analyst personnel, preventing human error and reducing risk by automating repetitive tasks.
In the end, our payment processing solution:
- Allows the business to initiate payments directly from the internal portal.
- Enables verification of bank details before sending payments to prevent mistakes. Even if one of the payments has incorrect data, we ensured that the other payments would be processed correctly. Automated validation on each payment is done, and if some payments don’t match the validation or formatting criteria, they are automatically marked as returned or bounced and not added to the batch. Thus, this guarantees that other payments will be successfully processed.
- Provides reporting on all pending, completed, and rejected payments.
- Handles returns automatically or manually (as needed).
- Tracks each payment’s exact origin and destination (one entity can initiate multiple transactions).
- Provides a custom admin panel for managing high-volume ACH transfers with buttons for paying all or editing payments manually.
A risk-based approach (“ACH Alert” and “ACH debit activity”, and “ACH credit transfers”)
The end-to-end ACH payment processing system for financial institutions works in the following way. The system processes an ACH Alert at the beginning of the business day. This alert shows the status of completed payments. It applies to both credit and debit payments to banks.
Payment NACHA files with ACH credit and debit information are sent through a secure SFTP channel and security policies. The ban's system monitors the storage. A job runs every few minutes to read the files. Then, it deletes them to avoid duplicates: upon processing, the banking payment systems clear the NACHA data storage.
For some banks, a confirmation file is sent along with the NACHA file. It only contains the total sum of the batch. The batch is generated using NACHO, National Automated Clearing House Objects, a custom library for NACHA ACH input files.
We don’t receive any direct confirmation that the batch was successful. Thus, the only confirmation of the transaction success is a return file, read from the bank’s SFTP storage. It’s generated at 6:00 AM daily and contains information about failed payments.
When sending batches, credit and debit payments are processed separately by different jobs (morning and evening).
To handle returned payments, a master process reads the return file and distributes the data to separate jobs based on payment type.
Since the system doesn’t get success confirmations, it uses this logic: if a payment is not returned within 2 business days, it’s considered completed. This was implemented because 98% of returns happen in that period.
Returns can happen for up to 5 business days. Therefore, if a payment was already marked as completed, it can still be marked as returned later if the return info arrives. This rule applies to both credits and debits.
In cases where a payment was not sent or processed correctly, it will appear in the reports within a special alert block for quick review. There is an option for manual re-confirmation of the payment or automatic inclusion in the next batch.
Microsoft Azure Functions with timers are used to automate these processes.
Results
This project was delivered as part of our financial services, with a strong focus on digital transformation and modern business models. Its successful implementation was ensured by a dedicated development team of experts fully immersed in the client’s financial domain.
- ASP.NET enterprise application written in C# for the backend, JavaScript, CSS, and Knockout. JS for the frontend.
- Azure DevOps for streamlined development and deployment.
- Webhooks, background jobs, and the SignalR open-source library for Microsoft ASP.NET that automated and improved data flow and system notifications.
- Data security was guaranteed with secure SFTP with SSH authentication, and data is encrypted in the database of MS SQL Server and Azure Blob storage.
- Data integrity was ensured with MS SQL and a hybrid of Dapper and Entity Framework, reducing development costs during client scaling.
- Data consistency as well as accurate and reliable accounting was guaranteed with robust validation both on the backend and frontend layers, as well as highlighting any deviations from usual behavior.
- Streamlined payments were enabled via a well-thought-out user experience with Razor Views and JavaScript.
- Support of all mainstream (and even legacy) browsers with Knockout.js to provide a predictable and stable web interface for client staff and partners in most browsers and applications, even on slow internet connections.
- We enabled reliable ACH acquiring by automating NACHA file generation with C# and SQL, secure file transfers via SFTP, and organized handling of payment returns.
- Reduced manual paperwork through document automation, as payments are triggered automatically upon electronic signature.
- System performance was guaranteed with optimized .NET code and Microsoft SQL Server as data storage, with access using Entity Framework and store procedures in T-SQL for efficient batching processes and reporting. This allows for accuracy and reliability in data tracking and analysis.
- We helped the client adopt modern standards with automation and support for complex multilateral transactions, so it can stay competitive.
- Accelerated payment processing via one-click batch creation with Same-Day ACH by default. If any of the payments have issues, only they will be postponed to the next batch. This, along with auto-validation, robust notifications, and a highlighting engine, allowed us to minimize human errors.
- Regulatory compliance with Open Banking standards for legal and security requirements.
With a Ukrainian dedicated development office setup, we ensured complete alignment with the client’s goals, affordability, and seamless team integration. Explore our similar fintech development projects to see how we help financial institutions innovate and scale. Are you interested in enhancing your business with a payment processing platform? Get the best value at the lowest cost, with free consulting included. Request a consultation or a quick audit by exploring Our Pricing page.