1. Knowledge Base
  2. Transaction Management

ACH Processing - Notice of Change (NOC)

What is a Notice of Change and how to handle them.

A Notification of Change (NOC) in ACH payment processing is an electronic notification sent by a receiving bank to the originating bank or business to inform them of updated or corrected account information for ACH transactions. The purpose of a NOC is to ensure that future ACH payments are routed correctly, reducing the risk of payment delays or errors.

Key points about NOCs

  1. Common Scenarios

    • Updates to account numbers or routing numbers.
    • Changes in account types (e.g., from checking to savings).
    • Name corrections on accounts.
  2. Process:

    • The receiving bank detects outdated or incorrect information during transaction processing.
    • A NOC is generated and sent back to the originator (Zift), usually via the ACH network.
    • Zift is required to make the necessary updates before the next payment.
  3. Compliance:

    • Businesses must act on NOC details within a set timeframe .
    • This ensures compliance with ACH network rules and prevents recurring errors.

NOCs help streamline ACH payment systems, improve efficiency, and maintain accuracy in financial transactions.

How to Handle NOCs

Notices of changes are best handled through Zift webhook notifications

Please contact us if you need help setting up your webhooks.

For Updated Account Numbers

NOC Response Code: C01

When an account number is updated Zift will create a new token with the updated account number. This new token can be accessed through the NOC webhook in the tokenUpdated field. For convenience, the original token can be found in the tokenOriginal field, making it easy to cross-reference.

Here's an example webhook for an updated account number. 

{
  "notificationId": 2541341,
  "eventCode": "processing.noc-processed",
  "eventDate": 1734540851000,
  "dataType": "transaction",
  "data": {
    "objectType": "noc",
    "accountId": 1234001,
    "transactionId": 8612676721,
    "originalTransactionId": 8612315711,
    "originalTransactionCode": "123456789",
    "sequenceNumber": 1,
    "amount": 2500,
    "responseCode": "C01",
    "responseMessage": "Account number is incorrect or is formatted incorrectly",
    "tokenUpdated": "BCxxxxxxxxxxxxxxxx1234",
    "tokenOriginal": "BCxxxxxxxxxxxxxxxx4321"
  }
}

For Updated Routing Numbers

NOC Response Code: C02

Routing numbers are submitted in the accountAccessory field in the transaction sale request. If we receive a NOC with an updated routing number we will deliver a webhook that will contain the updated routing number so you can update the current value stored in your system for future transactions. 

The updated routing number can be found in the NOC webhook under the accountAccessoryUpdated field. Be sure to update future transactions by substituting the old routing number with the new routing number as the accountAccessory.

Here's an example webhook for an updated routing number. 

{
  "notificationId": 2541331,
  "eventCode": "processing.noc-processed",
  "eventDate": 1734540825000,
  "dataType": "transaction",
  "data": {
    "objectType": "noc",
  "accountId": 1234001,
    "transactionId": 8612676711,
    "originalTransactionId": 8612627122,
    "originalTransactionCode": null,
    "sequenceNumber": 1,
    "amount": 14000,
    "responseCode": "C02",
    "responseMessage": "Due to merger or consolidation, a once valid transit/routing number must be changed",
    "accountAccessoryUpdated": "123456789",
  "tokenOriginal": "BCxxxxxxxxxxxxxxxx5678"
  }
}

For Updated Account Types

NOC Response Code: C05

The account type indicates whether the bank account being debited or credited is a savings or checking account and is indicated in the accountType field of a sale request.  If we receive a NOC with an updated account type we will deliver a webhook that will contain the updated account type so you can update the current value stored in your system for future transactions. 

The updated account type (checking or savings) will be available in the NOC webhook in the accountTypeUpdated field. Integrations with Zift should store the updated account type to be used in future transactions as the accountType.

Here's an example webhook for an updated account type, possible values are S for savings and C for checking. 

{
  "notificationId": 2516541,
  "eventCode": "processing.noc-processed",
  "eventDate": 1734118331000,
  "dataType": "transaction",
  "data": {
    "objectType": "noc",
  "accountId": 1234001,
    "transactionId": 8612635151,
    "originalTransactionId": 8612598981,
    "originalTransactionCode": "3255561",
    "sequenceNumber": 1,
    "amount": 5000,
    "responseCode": "C05",
    "responseMessage": "Incorrect Transaction Code. Change from checking to savings or savings to checking.",
    "accountTypeUpdated": "S",
  "tokenOriginal": "BCxxxxxxxxxxxxxxxx3456"
  }
}