Description
SoftLedger allows you to pay approved vendor bills via ACH by exporting a NACHA-formatted file and uploading it to your bank. This feature has two parts: managing vendor bank accounts and generating NACHA payment files.
To use NACHA Payments, the following must be in place:
A Softledger team member must enable this feature in your tenant - reach out to support@softledger.com to confirm this is added to your tenant.
Permissions - Two dedicated permissions control access to this feature:
update:VendorBankAccount - Allows a user to add, edit, or remove a vendor's bank account.
generate:PaymentFile - Allows a user to generate a NACHA file from a selection of approved AP payments or from a Batch Payment.
A system role called vendor_payments bundles both permissions (see image below). An admin must assign this role explicitly — it is not granted to new users by default. Existing users do not receive these permissions automatically on upgrade.
Vendor Bank Account Management
Each vendor can have one ACH bank account on file. The vendor detail page will display:
A bank icon button next to Edit (visible only to users with the update:VendorBankAccount permission). Click this to open the bank account popup.
A Bank Account field on the vendor card (visible to all users) showing whether a bank account is on file, the last 4 digits, and the account type.
Caution: The existing "Account Number" field on the Vendor is not used for NACHA file generation. NACHA uses the dedicated encrypted bank account fields described below.
Add / Edit / Remove a Bank Account
Click the bank icon on the Vendor Detail page to open the bank account popup. The popup behavior depends on whether the vendor already has a bank account on file:
No bank account on file (Add): All fields are blank. Click Submit to save or Cancel to close.
Bank account on file (Edit): Routing number, account number, and account type are prefilled so you can verify what is on record. The Confirm Account Number field is intentionally left blank — you must re-type the account number each time you save. Click Submit to save, Cancel to close, or Remove to delete the bank account.
Bank Account Fields
Complete the below to add/edit a Bank Account for each Vendor:
Routing Number - 9-digit ABA routing number. Validated using the standard ABA check-digit algorithm. Encrypted at rest.
Account Number - Up to 17 characters (letters, numbers, and hyphens). Encrypted at rest.
Confirm Account Number - Must match the Account Number exactly.
Account Type - Checking or Savings.
If an existing Bank Account has been added, you can click the Remove button to delete it.
Bank Account Audit Log
Every bank account action is recorded in the Vendor audit log:
Vendor Bank Account Viewed - Logged when you open the popup on a vendor that has a bank account on file.
Vendor Bank Account Updated - Logged when you save (add or edit) a bank account.
Vendor Bank Account Removed - Logged when you remove a bank account.
The audit log displays the last 4 digits and account type. Full routing and account numbers are never included in the audit history.
Generating the NACHA File
A NACHA file can only be produced for Approved payments made in USD and the user must have the necessary generate:PaymentFile permission.
There are two ways to generate a NACHA file:
AP Payments list - Select one or more approved USD payments, then run the NACHA bulk action.
Batch Payment detail - Click the NACHA button on an approved Batch Payment. All payments on that batch are preloaded into the dialog.
Note: The NACHA button on the Batch Payment detail page is only visible when the batch is in Approved status.
NACHA Dialog Fields
The following fields are entered each time you generate a file, with the selected payments listed in a table at bottom of the form with a running total.. These values are not saved or prefilled from previous runs.
Required Fields:
Bank Name - Your bank's name (free text). Appears as the Immediate Destination Name in the NACHA file header.
ODFI Routing Number - Your bank's 9-digit routing number. Validated using the ABA check-digit algorithm.
Company Legal Name - Your company's legal name as known to your bank.
Customer ID - The originator ID assigned to your company by your bank.
Entry Description - Appears on the vendor's bank statement. Defaults to "AP PAYMENT". Up to 10 characters.
Effective Entry Date - The date ACH entries take effect. Defaults to tomorrow. Selecting today activates Same-Day ACH; selecting a future date uses Standard ACH. Past dates are not allowed.
File ID Modifier - A single character (A–Z or 0–9). Defaults to "A". Change this if you generate more than one file on the same day with the same originator and bank — otherwise your bank may reject the second file as a duplicate.
Optional Fields:
Company Discretionary Data - Up to 20 alphanumeric characters. Some banks (notably Chase) require a value here for internal routing or reconciliation.
Immediate Origin Override - Up to 10 characters. When left blank, this field defaults to your ODFI Routing Number — which most banks accept. However, some banks require a specific value here instead. If your bank rejects the file, this field is the first place to check.
NOTE: Bank of America, Wells Fargo, and similar banks: These banks require the Immediate Origin Override to be populated with your bank-assigned Company ID (typically "1" + your 9-digit EIN — the same value you entered in the Company ID field above). If you leave this field blank with one of these banks, the file will be rejected. When in doubt, enter your Company ID here and confirm with your bank.
Same-Day vs. Standard ACH
The Effective Entry Date you select determines the ACH rail and per-entry cap:
Today - Same-Day ACH. Each payment is capped at $1,000,000.
Future date - Standard ACH. Each payment is capped at $99,999,999.99.
Past date - Not allowed.
When you select today's date, an inline note reminds you of the Same-Day cap and asks you to confirm Same-Day ACH eligibility with your bank. The Submit button is disabled if any selected payment exceeds the active cap. Switching the date re-evaluates the cap automatically.
Note: SoftLedger enforces NACHA-format-level caps only. Your bank's own per-account limits, daily totals, and Same-Day enrollment status are not checked here. Same-Day cutoff times are also not enforced — if you generate a Same-Day file after your bank's cutoff, the bank may treat it as next-day or reject it.
What Happens on Submit
When you click Submit:
Every payment is validated — it must exist, be approved, be in USD, link to a vendor (via its bill), and that vendor must have a bank account on file. If any payment fails validation, the dialog shows an error listing the affected payments or vendors, and no file is generated.
Per-entry and batch-total caps are checked.
The file is generated and downloaded as a .txt file named
softledger-<effective date>.txt.An audit entry is written (see details below).
The file is not stored in SoftLedger. Once downloaded, you own the file and are responsible for uploading it to your bank.
NACHA File Audit Log
Each successful file generation creates an audit entry that records:
Effective date, File ID Modifier, Company Legal Name, Entry Description, Bank Name, and the active rail (Same-Day or Standard).
The originating Batch Payment ID, if applicable.
Number of payments and total amount.
Per-payment details: payment ID, amount, currency, Vendor ID, vendor name, and user-facing Vendor ID.
Routing and account numbers (both your ODFI routing number and vendor bank details) are not included in the audit entry.
Important Considerations
Permissions are not auto-granted. When an admin adds a user to a tenant, the user receives all default permissions except update:VendorBankAccount and generate:PaymentFile. These must be assigned explicitly.
One bank account per vendor. Each vendor can have at most one ACH bank account on file at a time.
Routing and account numbers are encrypted at rest and are only surfaced to authorized users through the bank account popup or during NACHA file generation. They are never exposed through standard vendor API endpoints or audit logs.
The NACHA file is not stored in SoftLedger. The downloaded .txt file is yours to manage and upload to your bank.
File ID Modifier matters. If you generate more than one file on the same day with the same originator and bank, increment the File ID Modifier (A → B → C) to avoid duplicate rejections.
Bank-specific requirements vary. Some banks require the Immediate Origin Override or Company Discretionary Data fields. Check with your bank if you experience file rejections.
Vendor names longer than 22 characters will appear truncated on the receiving bank statement.
Payment amounts are rounded to the nearest cent. Amounts with more than two decimal places (which can arise from FX conversion) are rounded to a whole cent, as banks reject NACHA files containing non-integer-cent amounts.






