Overview
Lead applies various validation checks on all ACH transactions processed through our systems.
- API-based ACH: the individual transaction may be queued for manual review by a Lead processor in cases that require more research or could be immediately rejected at submission time
- File-based ACH: if an individual entry in a Nacha file fails validation, Lead will reject the entire file and report via Slack about any individual entry validation exceptions
ach.rejected webhook. Please see the table below to determine which validations are synchronous or asynchronous.
While it is not always possible to prevent all validation failures, following these best practices can reduce the likelihood of exceptions:
| Validation | Best Practice | Is Rejection Synchronous via API? |
|---|---|---|
| account_number_not_active | Verify that the account number used for an ACH transaction is in active status before initiating a transfer. | Y |
| aggregate_limit_exceeded | Periodically review ACH transaction volume and ensure that daily/monthly aggregate limits set with Lead are sufficient for your business. | N |
| client_customer_not_present | Ensure all account numbers have a valid entity_id | Y |
| disallowed_counterparty | Periodically review disallowed counterparty lists to ensure accuracy | Y |
| disallowed_sec_code | Ensure that you are utilizing the proper SEC codes approved by Lead for your use cases | Y |
| invalid_format | This indicates a failure to format inputs correctly in an API, or a failure to properly format a Nacha spec file. Ensure you follow all guidance. | Y |
| non_sufficient_funds | Monitor and manage the balance in the originating account to prevent NSF (Non-Sufficient Funds) scenarios. | N |
| ofac_rejection | Institute proper screening procedures to help prevent sanctions list matches. | N |
| per_transaction_limit_exceeded | Periodically review ACH transaction volume and ensure that per transaction limits set with Lead are sufficient for your business. | Y |
| previously_corrected | React promptly to ach.corrected webhooks to prevent subsequent transactions from being flagged. | N |
| related_prenote_exception | If you utilize prenotifications, ensure that you do not submit any live transactions until after three banking days from the date of the prenote. | N |
| return_untimely | Submit returns as soon as possible to ensure they are processed within the allowed timeframe. | Y |
| reversal_rejection | When in doubt, reach out to Lead payment processors to ensure you are properly setting reversal codes for your use case. | N |
| unexpected_return_code | Ensure you are adhering to Nacha guidance on proper use of return codes for your use case. | N |
| unexpected_routing_number | Ensure that the recipient’s routing number is accurate before submitting an ACH transaction. | Y |

