# ACH NOC および SEC の取り扱い

外部口座情報の更新方法をご紹介します。

> #### 従来の実装
> 
> Treasury for platforms の v1 は従来の実装であり、[Treasury for platforms v2](https://docs.stripe.com/treasury/connect.md) で導入された機能の多くをサポートしていません。新しい v1 の実装を構築しないでください。

Stripe で ACH 取引を開始する場合 (たとえば、プラットフォーム向け Treasury で `InboundTransfer`、`OutboundTransfer`、または `OutboundPayment` オブジェクトを使用する場合)、取引を受け取る金融機関から Notification of Change (NOC) が返されることがあります。これは、送金先口座に関する新しい情報 (新しい口座番号や金融番号など) が利用可能になったことを示すメッセージです。

ACH ネットワークのルールでは、Stripe は NOC の受信時に、保存されているアカウント情報を更新する必要があります。Stripe は、関連する`PaymentMethod`オブジェクトまたは`BankAccount`オブジェクトを更新して NOC を自動的に処理し、Webhook で通知します。これらの Webhook を監視して、アカウント情報が変更されたことをユーザーに通知したり、Stripe の外部で保持しているアカウント情報を更新したりすることができます。

> #### Accounts API v2
> 
> Events v2 API には、ここで参照されているスナップショットイベントに対応するシンイベントは含まれません。v2 `Accounts` に関する情報については、v1 イベントを待ち受けてください。

| NOC タイプ | 更新されるフィールド |
| --- | --- |
| 口座番号 | `account_number`、`last4`、`fingerprint` |
| 金融番号 | `routing_number`、`fingerprint` |
| 口座の用途 (当座預金や普通預金など) | `account_type`、`fingerprint` |

決済手段の詳細が (`destination_payment_method_data`を使用して) インラインで提供される`OutboundPayment`オブジェクトに対して NOC は処理されません。この場合には、保持されている更新対象の`PaymentMethod`オブジェクトまたは`BankAccount`オブジェクトがないためです。

## PaymentMethod に対する NOC

`PaymentMethod`オブジェクトで開始された取引に対して NOC を受信した場合、以下のようになります。

- Stripe は`PaymentMethod`を更新して`payment_method.updated` Webhook をトリガーします。
- `PaymentMethod`が`Customer` (`OutboundPayment`オブジェクトで使用するために) に関連付けられている場合、Stripe は`customer.source.updated` Webhook をトリガーします。
- `PaymentMethod`が (`InboundTransfer`オブジェクトまたは`OutboundTransfer`オブジェクトで使用するために) Stripe アカウントに直接関連付けられている場合、Stripe は`account.external_account.updated` Webhook をトリガーします。

## BankAccount に対する NOC

`BankAccount`オブジェクトで開始された取引に対して NOC を受信した場合、以下のようになります。

- Stripe は`BankAccount`オブジェクトを更新します。
- `BankAccount`が (`OutboundPayment`オブジェクトで使用するために) `Customer`に関連付けられている場合、Stripe は`customer.source.updated` Webhook をトリガーします。
- `BankAccount`が (`InboundTransfer`オブジェクトまたは`OutboundTransfer`オブジェクトで使用するために) Stripe アカウントに直接関連付けられている場合、Stripe は`account.external_account.updated` Webhook をトリガーします。

プラットフォームの主要外部口座として設定されている`BankAccount`が更新された場合、Stripe はメールでも通知を行います。連結アカウントの Stripe アカウントに関連付けられている外部口座の更新、または`Customer`オブジェクトに関連付けられている外部口座の更新の場合には、メールは送信されません。

## 標準 SEC の取り扱い

各 ACH 取引には、関連するアカウントおよび取引が認可された経緯を示す、関連付けられた Standard Entry Class (SEC) コードがあります。

プラットフォーム向け Treasury では、ACH エントリーを受け取る口座の所有者が企業か個人かに基づいて SEC コードを決定します。以下の場合は、[destination_payment_method_data.us_bank_account.account_holder_type](https://docs.stripe.com/api/treasury/outbound_payments/create.md#create_outbound_payment-destination_payment_method_data-us_bank_account-account_holder_type) で口座名義人の種類を指定します。

- [OutboundPayments](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/out-of/outbound-payments.md) を行う場合
- [stored PaymentMethod](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/working-with-bankaccount-objects.md#setupintents) を設定する場合

[InboundTransfers](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/into/inbound-transfers.md) と [OutboundTransfers](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/out-of/outbound-transfers.md) は、FinancialAccount の所有者が保有し、所有者タイプが `company` の口座にのみ送信してください。

SEC コードは、受け取り口座の所有者種別に基づいて次のように決定されます。

| 資金移動 | 所有者タイプ | SEC コード |
| --- | --- | --- |
| InboundTransfer | `company` | `CCD` |
| OutboundTransfer | `company` | `CCD` |
| OutboundPayment | `company` | `CCD` |
| OutboundPayment | `individual` | `PPD` |
