Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

ACH NOC and SEC handling


Legacy

ACH NOC and SEC handling Legacy

Learn how external account information is updated.

Legacy integration

The v1 version of Treasury for platforms is a legacy integration that doesn’t support many of the features introduced in Treasury for platforms v2. Don’t build a new v1 integration.

When you originate an ACH transaction with Stripe (for example, using InboundTransfer, OutboundTransfer, or OutboundPayment objects with Treasury for platforms), the financial institution receiving the transaction might return a Notification of Change (NOC). This is a message indicating that new information is available about the destination account (such as a new account number or routing number).

ACH network rules require Stripe to update saved account information when we receive an NOC. We automatically process the NOC by updating the relevant PaymentMethod or BankAccount object and notify you through a webhook. You might want to monitor these webhooks to inform your users that account information has changed or to update account information that you’ve persisted outside of Stripe.

Accounts API v2

The Events v2 API doesn’t include thin events that correspond to the snapshot events referenced here. Listen to the v1 events for information about your v2 Accounts.

NOC typeFields updated
Account numberaccount_number, last4, fingerprint
Routing numberrouting_number, fingerprint
Account use (for example, checking or savings)account_type, fingerprint

NOCs aren’t processed for OutboundPayment objects where payment method details are provided inline (using destination_payment_method_data) as there is no persisted PaymentMethod or BankAccount object in this case to update.

NOC for a PaymentMethod

When we receive an NOC for a transaction originated with a PaymentMethod object:

  • Stripe updates the PaymentMethod and triggers a payment _ method. updated webhook.
  • If the PaymentMethod is attached to a Customer (for use with OutboundPayment objects), Stripe triggers a customer. source. updated webhook.
  • If the PaymentMethod is attached directly to a Stripe account (for use with InboundTransfer or OutboundTransfer objects), Stripe triggers an account. external _ account. updated webhook.

NOC for a BankAccount

When we receive an NOC for a transaction originated with a BankAccount object:

  • Stripe updates the BankAccount object.
  • If the BankAccount is attached to a Customer (for use with OutboundPayment objects), Stripe triggers a customer. source. updated webhook.
  • If the BankAccount is attached directly to a Stripe account (for use with InboundTransfer or OutboundTransfer objects), Stripe triggers an account. external _ account. updated webhook.

In cases where the BankAccount that’s set up as your platform’s primary external account is updated, Stripe also notifies you by email. We don’t send an email for updates to external accounts that are attached to your connected accounts’ Stripe accounts, or for updates to external accounts attached to Customer objects.

Standard SEC handling

Each ACH transaction has an associated Standard Entry Class (SEC) code that describes the accounts involved and how the transaction was authorized.

Treasury for platforms determines the SEC code based on whether the account receiving the ACH entry is owned by a company or an individual. You specify the account holder type in destination_payment_method_data.us_bank_account.account_holder_type when:

Only send InboundTransfers and OutboundTransfers to accounts owned by the FinancialAccount owner and with a company owner type.

SEC codes are determined based on the receiving account’s owner type as follows:

Money movementOwner typeSEC code
InboundTransfercompanyCCD
OutboundTransfercompanyCCD
OutboundPaymentcompanyCCD
OutboundPaymentindividualPPD
Last verified 2026-09-24

Is this helpful?