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 type | Fields updated |
|---|---|
| Account number | account_number, last4, fingerprint |
| Routing number | routing_number, fingerprint |
| Account use (for example, current 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 authorised.
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:
- You make OutboundPayments
- You set up a stored PaymentMethod
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 movement | Owner type | SEC code |
|---|---|---|
| InboundTransfer | company | CCD |
| OutboundTransfer | company | CCD |
| OutboundPayment | company | CCD |
| OutboundPayment | individual | PPD |
