> ## Documentation Index
> Fetch the complete documentation index at: https://docs.treasuryprime.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

[ACH](https://en.wikipedia.org/wiki/Automated_Clearing_House) is the predominant network for electronic funds transfer in the United States. Transferring money over ACH is generally cheaper, but slower, compared to other networks. ACH supports both credits (sending money) and debits (receiving money).

## Workflow

The protocol that underlies the ACH network is batch-oriented and does not provide *success* responses (only *error* responses). As a result, ACH transfers follow a particular workflow as they are processed by the network. You can track a transfer's progress by checking the `status` attribute on the ACH object.

The possible `status` values are:

* `pending`

  Initial status after object creation. Pending transfers are queued for processing, which happens periodically throughout the day. As long as the transfer is `pending` you may still cancel it.
* `canceled`

  The transfer was canceled and was never processed.
* `processing`

  The transfer is being processed in preparation to be sent. You may no longer cancel a transfer once it has entered this state.
* `error`

  The transfer encountered an error during processing. The reasons a transfer might be set to error include non-sufficient funds, suspected fraud, or failed validation.
* `sent`

  The transfer was processed and sent out to the ACH network for clearing and settlement. Because the ACH protocol does not provide for a *success* response, successful transfers will remain in the `sent` state in perpetuity.
* `returned`

  The transfer was processed and sent, but the network or receiving bank could not complete the transfer successfully. See the [ACH Returns guide](/docs/ach-returns) for more details.

## SEC Codes

The ACH network adheres to different processing rules depending on the type of transfer you're sending. For processing purposes, a transfer's type is determined by its `sec_code`.

This API supports the following values of `sec_code`:

* `ccd`

  Used for commercial payments. If the transfer is between two corporate entities, usually you'll use `ccd`.
* `cie`

  Used for transferring funds from one commercial entity to another at a consumer's request. Typically used for bill pay.
* `ppd`

  Used for consumer payments. If one of the parties involved in the transfer is a personal bank account, usually the transfer will be `ppd`.
* `tel`

  Used for consumer payments to a commercial entity when the consumer’s authorization for a transfer of funds is received orally via the telephone.
* `web`

  If you're initiating a consumer payment, and you obtain authorization to make the payment via the Internet, then you'd likely use `web`.

It is necessary to use the correct SEC codes for your particular ACH payment use cases. Using improper codes can cause financial and regulatory consequences. When in doubt, talk with your bank partner(s) to determine the appropriate SEC code to use. Your Treasury Prime Customer Success Manager can help ensure that you are technically able to initiate ACH payments using the necessary SEC codes for your business.

## Virtual Ledger ACH Holds

### Credit ACH Holds

When enabled this setting ensures that a new credit ACH can never be created when said credit may lead to insufficient funds in the account to fulfill the payment.

ACH credit holds alter the ACH processing flow to create a `hold` transaction whenever a credit ACH is created. These `hold` transactions operate in the same manner as a card hold, lowering the current available balance on the corresponding account. A `hold_release` transaction is generated once the credit ACH has completed processing. The `hold`, `hold_release` and `withdrawal` transactions are tied together by a common `trace_id`. For ACH credit holds the value of the `trace_id` is the `ach_id` of the corresponding ACH.

### Debit ACH Settlement Holds

When enabled this setting adjusts the debit ACH processing flow to credit the ledger account as soon as the ACH is moved to a `sent` status. A hold is then immediately created against the account for the value of the ACH. These funds will be released and the ACH will be considered settled at the `scheduled_settlement` time as provided in the ACH response.

# Notices of Change (NOCs)

A Notice of Change (NOC) is a notification from the receiving bank indicating that information on an originated ACH needs to be corrected. The original transaction still processes — the NOC is a signal to update your records for future transactions.

When Treasury Prime receives a NOC for an originated ACH, the following fields are populated on the ACH object:

| Field                | Type   | Description                                                                                                       |
| :------------------- | :----- | :---------------------------------------------------------------------------------------------------------------- |
| `noc_change_code`    | string | If a notice of change has been received for this ACH, this will contain the latest change code for this entry.    |
| `noc_corrected_data` | string | If a notice of change has been received for this ACH, this will contain the latest corrected data for this entry. |

## Important: Only the Latest NOC is displayed

If an ACH receives more than one NOC, the `noc_change_code` and `noc_corrected_data` fields are **overwritten** with the most recent values. Previous NOC data is not retained on the ACH object.

## Common Change Codes

| Code | Description                                                 |
| :--- | :---------------------------------------------------------- |
| C01  | Incorrect Account Number                                    |
| C02  | Incorrect Routing Number                                    |
| C03  | Incorrect Routing Number & Account Number                   |
| C04  | Incorrect Account Name                                      |
| C05  | Incorrect Transaction Code (e.g., checking vs. savings)     |
| C06  | Incorrect Account Number & Transaction Code                 |
| C07  | Incorrect Routing Number, Account Number & Transaction Code |

## Webhooks

When a NOC is received, the `ach.update` webhook fires. Subscribe to this event to be notified of changes and take corrective action.

## Recommended Handling

1. Subscribe to the `ach.update` webhook.
2. When an update is received, check `noc_change_code` and `noc_corrected_data`.
3. Update the corresponding counterparty record with the corrected information.
4. Per NACHA rules, corrections must be applied within **6 banking days** of receipt or before initiating another ACH to the same account — whichever is later.

> **Note:** Do not re-send the original transaction. A NOC means the payment was already processed successfully.
