Offline NACHA Payment Processing Workflow


Often clients want to create and submit NACHA files to their banks themselves, instead of using NACHA files provided by Secure Payments (formerly PCI Wallet). The reasons for doing this will vary, but they include retaining control of payment processing in-house, settling transactions to different bank accounts, or the need for specific information in the NACHA file that is not included in the file provided by Secure Payments. If you have a need to create your own NACHA files instead of using the files provided by Secure Payments, it is still highly recommended to use Secure Payments' batching process to manage NACHA payments within LoanPro. Using the Secure Payments batching process, payment statuses will be managed through Secure Payments, but you will still be able to query information from either Secure Payments or LoanPro to create a NACHA file that may be submitted to your bank. This process is explained in detail in the NACHA Process Start to Finish article.

If you would like to process NACHA payments entirely from LoanPro, you may use the following process.

To make the process clear, it will be broken down into the following steps:

  1. Create a payment custom field
  2. Pull a payment history report from LoanPro
  3. Create your NACHA file
  4. Mark payments included in the NACHA file as submitted in LoanPro

Create Payment Custom Field

To create a custom field that will be associated with payments, navigate to Settings > Loan > Payments > Custom Fields inside your account.

Click ADD.

For our example, we will set up the field in the following way:

  • Field Name: Funding Status
  • Field Type: Select
  • Include as a Column in the Export file for the History Payment Reports: Yes
  • Required: No
  • Default Value Select ID: 1

The selection options will be:

1. Not Submitted

2. NACHA Submitted

3. Completed

Click SAVE when you have entered the options.

Pull Payments Report

For general information on pulling a payment report through the API, take a look at our API – Payment Report article.

Send a POST request to this endpoint:

When you pull the payments report, you will want only results where the payment custom field you created has a value of 1. Here is an example of a query you would use to get the correct results. To use this correctly, replace <custom field ID> with the ID of the custom field you created.

  "query": null,
"reportOptions": {
"method": "all",
"type": "all",
"status": "all",
"reversereason": "all",
"chargeOff": "all",
"period": "other",
"dateFrom": "",
"dateTo": "",
"changedPeriod": "tw",
"changedDateFrom": "2017-11-12T00:00:01",
"changedDateTo": "2017-11-15T23:59:59",
"sourceCompanies": [
"id": ""
"portfoliosCriteria": "all",
"splitPayments": "all",
"dateEnteredPeriod": "other",
"dateEnteredTo": "",
"dateEnteredFrom": "",
"customFields": {
"<custom field ID>": "1"

"chargeOffRecovery": "all",
"selectedPortfolios": [
"category": "",
"portfolio": "",
"subportfolio": ""

Create NACHA File

Creating a NACHA file is a complex process.  Here is a link to some software that can help you do this.

Mark Payments As Submitted

To make the payments as submitted, you’ll need to update the value of the custom field for all payments that were included in the NACHA file. To do this you’ll first need to get the IDs for the custom field values that you want to update. This is best done using the following GET request. To use it, change <payment ID> to the ID of the first payment for which you want to change a custom field value and <custom field ID> to the ID of the custom field you created.

GET /api/public/api/1/odata.svc/CustomFieldValues?$filter=entityType eq ‘Entity.Payment’ and entityId eq <payment ID> and customFieldId eq <custom field ID>

This will retrieve the data for a single payment and will return something like this:

"d": {
"results": [
"__metadata": {
"uri": "",
"type": "Entity.CustomFieldValue"
"CustomField": {
"__deferred": {
"uri": "CustomFieldValues(id=111)/CustomField"
"id": 111,
"entityId": 100,
"entityType": "Entity.Payment",
"customFieldId": 25,
"customFieldValue": 1
"summary": {
"start": 0,
"pageSize": 50,
"total": 1

The ID for the custom field value is labeled “id” in the response. To change the value, use the following request.

PUT api/public/api/1/odata.svc/CustomFieldValues(<custom field value ID>)

"customFieldValue": "2"

This will update the custom field value to a value of “2” or NACHA Submitted, on the custom field for this payment. You will need to repeat this process for each payment that was included in the NACHA file.

How did we do?

Powered by HelpDocs (opens in a new tab)