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.

Common Notice of Change Types

Code Reason Description
C01 Incorrect Bank Transit Routing Number     Receiving DFI identifier is incorrect and should be changed.
C02 Incorrect Account Number     The account number is incorrect and needs to be corrected.
C03 Incorrect Transit & Account Number     Both the routing number and account number are incorrect.
C04 Incorrect Individual Name     The customer’s name is incorrect.
C05 Incorrect Transaction Code     Indicates a change from checking to savings (or vice versa).
C06 Incorrect Account Number and Code     Both the account number and the account type (checking/savings) are wrong.

 

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 and Routing Numbers

NOC Response Code: C03

In some cases both the routing number and account number will be updated. In these situations 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. Additionally, the updated routing number will also be returned provided in the webhook. The updated routing number can be found in the accountAccessoryUpdated field.

For a C03 NOC be sure to update both the token and the routing number with the new values provided in the webhook. 

Here's an example webhook for a C03 notice of change with updated account and routing numbers: 

{
  "notificationId": 2541331,
  "eventCode": "processing.noc-processed",
  "eventDate": 1734540825000,
  "dataType": "transaction",
  "data": {
    "objectType": "noc",
   "tokenOriginal": "BCxxxxxxxxxxxxxxxx1479",
"accountTypeUpdated": null,
"sequenceNumber": 1,
"amount": 1066,
"dataType": "transaction",
"accountAccessoryUpdated": "123456789",
"originalTransactionCode": code8614527122,
"transactionId": 8612489411,
  "responseCode": "C03",
"accountId": 12340001,
"originalTransactionId": 867597122,
"tokenUpdated": "BCxxxxxxxxxxxxxxxx3697",
"holderNameUpdated": null,
"responseMessage": "Due to a merger or consolidation, the transit/routing number must be changed; and account number structure is no longer valid"
}
}

For Updated Holder Names

NOC Response Code: C04

In some cases the name on the account has been changed and needs to be updated. In these situations Zift will return an updated holder name in the holderNameUpdated field. This new token can be accessed through the NOC webhook in the tokenUpdated field.

The updated holder name will be available in the NOC webhook. Integrations with Zift should store the updated holder name to be used in future sale requests as the holderName. Not using the correct holderName tied to an account could potentially result in an ACH return. 

Here's an example webhook for a C04 notice of change: 

{
  "notificationId": 2541331,
  "eventCode": "processing.noc-processed",
  "eventDate": 1734540825000,
  "dataType": "transaction",
  "data": {
    "objectType": "noc",
   "tokenOriginal": "BCxxxxxxxxxxxxxxxx1479",
"accountTypeUpdated": null,
"sequenceNumber": 1,
"amount": 1066,
"dataType": "transaction",
"accountAccessoryUpdated": "123456789",
"originalTransactionCode": code8614527122,
"transactionId": 8612489411,
  "responseCode": "C03",
"accountId": 12340001,
"originalTransactionId": 867597122,
"tokenUpdated": "BCxxxxxxxxxxxxxxxx3697",
"holderNameUpdated": John Doe,
"responseMessage": "Due to a merger or consolidation, the transit/routing number must be changed; and account number structure is no longer valid"
}
}

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"
  }
}

For Updated Account Numbers and Account Types

NOC Response Code: C06

In some cases both the account number and account type will be updated. In these situations 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. 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 C06 NOC the account type will also need to be updated. 

The updated account type (checking or savings) will be available in the 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 number and 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": "C06",
  "responseMessage": "Incorrect DFI account number & incorrect transaction code",
    "accountTypeUpdated": "S",
   "tokenUpdated": "BCxxxxxxxxxxxxxxxx1234",
    "tokenOriginal": "BCxxxxxxxxxxxxxxxx4321"
  }
}