Offline NACHA Payment Processing Workflow


Often clients want to create and submit NACHA files to their banks themselves, instead of using 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 PCI-Wallet doesn’t provide.


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 enter the options.

Pull Payments Report

For general information on pulling a payment report through the API, take a look at this article.

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 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.

Leave A Comment?