# 金融口座の機能

金融口座で使用できる機能についてご紹介します。

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

> #### Accounts v2 API 互換性
> 
> Accounts v2 API は Treasury and Issuing ワークフローをサポートしていません。Accounts v2 で作成されたアカウントがある場合は、Accounts v1 を使用して `treasury` と `card_issuing` のケイパビリティを管理できます。詳細については、[Accounts を顧客として使用する](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md)を参照してください。

[金融口座](https://docs.stripe.com/treasury/connect/legacy/v1/account-management/financial-accounts.md)に機能を追加すると、口座間で資金を移動したり、決済カードを関連付けたりするための機能を提供できます。通常は、`FinancialAccount` オブジェクトの作成の前提となる `Feature` オブジェクトを割り当てますが、これらはいつでも追加または削除できます。一部の `Features` では、金融口座に関連付けられた連結アカウントで特定の機能を有効にしてください。たとえば、その連結アカウントに関連付けられた金融口座で `card_issuing` 機能をリクエストするには、連結アカウントで `card_issuing` 機能を有効にしてください。

## 使用できる機能

以下の表は、`FinancialAccount` で使用できる `Features` と、それを追加するために関連する連結アカウントで有効になっている必要のあるケイパビリティを示したものです。

> 連結アカウントの `treasury` ケイパビリティをリクストするには、事前に以下のケイパビリティをリクエストするか、有効にしておく必要があります。
> 
> - `transfers`

| 機能 | 説明 | 必要なケイパビリティ |
| --- | --- | --- |
| `card_issuing` | この金融口座に関連付けられた [Card (カード) オブジェクト](https://docs.stripe.com/api/.md#issuing_card_object)の作成を可能にします。 | `card_issuing` |
| `deposit_insurance` | その金融口座の FDIC 保険の利用資格をリクエストします。 | `treasury` |
| `financial_addresses.aba` | この金融口座に関連付けられた ABA タイプの `FinancialAddress` オブジェクトの作成をトリガーします。この機能が有効な場合、アドレスは ACH、電信送金、または RTP 経由で資金を受け取ることができ、外部の銀行口座からの引き落としが可能になります。 | `treasury` |
| `inbound_transfers.ach` | アメリカの外部銀行口座から資金を引き落として、金融口座に資金を追加できるようにする、`InboundTransfer` オブジェクトの作成を可能にします。 | `treasury`、`us_bank_account_ach_payments` |
| `intra_stripe_flows` | この金融口座が、`stripe` ネットワークを介して他の金融口座との間で資金を送受信できるようにします。`stripe` ネットワーク送金が機能するためには、両方の金融口座 (送金側と受取側) で、この機能が有効になっている必要があります。 | `treasury` |
| `outbound_payments.ach` | この金融口座が、Stripe API の `OutboundPayment` オブジェクトを使用して ACH 送金できるようにします。 | `treasury`、`us_bank_account_ach_payments` |
| `outbound_payments.us_domestic_wire` | この金融口座が、Stripe API の `OutboundPayment` オブジェクトを使用して、アメリカ国内で電信送金できるようにします。 | `treasury` |
| `outbound_transfers.ach` | この金融口座が、Stripe API の `OutboundTransfer` オブジェクトを使用して ACH 送金を送信できるようにします。 | `treasury`、`us_bank_account_ach_payments` |
| `outbound_transfers.us_domestic_wire` | この金融口座が、Stripe API の `OutboundTransfer` オブジェクトを使用して、アメリカ国内で電信送金できるようにします。 | `treasury` |

### 同日の ACH

Same-day ACH により、資金が同営業日中に利用可能になるなど、より迅速な決済が実現します。

> Same-day ACH は現在、限定的なプライベートプレビュー段階にあります。アクセスをリクエストするには、[treasury-support@stripe.com](mailto:treasury-support@stripe.com) までメールでお問い合わせください。アクセスが許可されるまで、Same-day ACH パラメーターを含む API コールはエラーを返します。

以下の機能により、金融口座は当日 ACH 機能を利用することができます。この機能を使用するには、金融口座で対応する `*.ach` 機能をリクエストしてください。たとえば、ある金融口座が当日中に [OutboundPayment](https://docs.stripe.com/treasury/connect/legacy/v1/moving-money/out-of/outbound-payments.md) を送信できるようにするには、その金融口座で `outbound_payments.ach` と `outbound_payments.ach.same_day` をリクエストしてください。

|  |
| 機能 | 説明 | 必要なケイパビリティ |
| `outbound_payments.ach.same_day` | この金融口座で、`OutboundPayment` オブジェクトを使用して、同一営業日内に入金先口座に届く ACH 送金を行えるようにします。 | `treasury`、`us_bank_account_ach_payments` |
| `outbound_transfers.ach.same_day` | この金融口座で、`OutboundTransfer` オブジェクトを使用して、同一営業日内に入金先口座に届く ACH 送金を行えるようにします。 | `treasury`、`us_bank_account_ach_payments` |
| `inbound_transfers.ach.same_day` | `InboundTransfer` オブジェクトを作成して、同一営業日内に金融口座に資金を追加できるようにします。 | `treasury`、`us_bank_account_ach_payments` |

## 機能をリクエストする

通常、金融口座の機能は、[金融口座を作成](https://docs.stripe.com/treasury/connect/legacy/v1/account-management/financial-accounts.md#create-a-financialaccount)するときにリクエストします。次のリクエストは、金融口座を作成し、同じ呼び出しで機能をリクエストします。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "supported_currencies[]=usd" \
  -d "features[card_issuing][requested]=true" \
  -d "features[financial_addresses][aba][requested]=true"
```

既存の金融口座を使用している場合は、`POST /v1/treasury/financial_accounts/{{FINANCIAL_ACCOUNT_ID}}/features` を使用して追加機能をリクエストします。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}}/features \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "card_issuing[requested]=true" \
  -d "deposit_insurance[requested]=true" \
  -d "financial_addresses[aba][requested]=true" \
  -d "inbound_transfers[ach][requested]=true" \
  -d "intra_stripe_flows[requested]=true" \
  -d "outbound_payments[ach][requested]=true" \
  -d "outbound_payments[us_domestic_wire][requested]=true" \
  -d "outbound_transfers[ach][requested]=true" \
  -d "outbound_transfers[us_domestic_wire][requested]=true"
```

### 機能の有効化

ある機能をリクエストし、プラットフォームに連結アカウントをアカウント登録するためのすべての確認要件が満たされると、その機能が有効化されます。機能によっては、有効化が即時実行されますが (`card_issuing` など)、`financial_addresses.aba` のように[非同期で有効化される](https://docs.stripe.com/treasury/connect/legacy/v1/account-management/financial-account-features.md#webhooks)機能もあります。以下の API コールは、金融口座を作成し、 ‘financial_addresses.aba’ および ‘card_issuing’ 機能をリクエストします。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "supported_currencies[]=usd" \
  -d "features[financial_addresses][aba][requested]=true" \
  -d "features[card_issuing][requested]=true"
```

金融口座作成時に機能をリクエストすると、レスポンスでは、`active_features`、`pending_features`、`restricted_features` プロパティでそのステータスが示されます。詳細については、[機能を取得する](https://docs.stripe.com/treasury/connect/legacy/v1/account-management/financial-account-features.md#retrieving-features) のセクションをご覧ください。

```json
{
  "object": "treasury.financial_account",
  "created": 1612927106,
  "id": "fa_123",
  "country": "US",
  "supported_currencies": ["usd"],
  "active_features": ["card_issuing"],
  "pending_features": ["financial_addresses.aba"],
  "restricted_features": [],
  // No FinancialAddress added as the financial_addresses.aba feature is not yet active
  "financial_addresses": [],
  "livemode": true,
  "status": "open",
  ...
}
```

`GET /v1/treasury/financial_accounts/{{FINANCIAL_ACCOUNT_ID}}/features` を使用して、前の例で作成された金融口座の機能を取得できます。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}}/features \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}"
```

レスポンスには、`pending` の `status` を持つ `financial_addresses.aba` と、`activating` の `code` を持つ `status_details` が示されます。

```json
{
  "object": "treasury.financial_account_features",
  "financial_addresses": {
    "aba": {
      "requested": true,
      "status": "pending",
      "status_details": [
        {
          "code": "activating"
        }
      ]
    }
  },
  "card_issuing": {
    "requested": true,
    "status": "active",
    "status_details": []
  },
  ...
}
```

Stripe が外部システムと通信する間、機能は最大 30 分間この状態にとどまることがあります。`financial_addresses.aba` 機能が有効化されると、金融口座は `FinancialAddress` オブジェクトを受け取り、`treasury.financial_account.features_status_updated` [Webhook](https://docs.stripe.com/webhooks.md) がトリガーされます。

以下のリクエストは、`financial_addresses.aba` の詳細が展開された `FinancialAccount` の詳細を取得します。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "expand[]=financial_addresses.aba.account_number" \
  -d "supported_currencies[]=usd"
```

レスポンスでは、完全な財務アドレス情報を含むアカウントの詳細が提供されます。

```json
{
  "object": "treasury.financial_account",
  "id": "{{FINANCIAL_ACCOUNT_ID}}",
  "country": "US",
  "supported_currencies": ["usd"],
  "active_features": ["card_issuing", "financial_addresses.aba"],
  "pending_features": [],
  "restricted_features": [],
  "financial_addresses": [
    {
      "type": "aba",
      "supported_networks": ["ach", "us_domestic_wire", "rtp"],
      "aba": {
        "account_number_last4": "7890",
        // The full account_number is only returned if the request expands it.
        "account_number": "1234567890",
        "routing_number": "000000001",
        "bank_name": "Goldman Sachs"
      }
    }
  ],
  "livemode": true,
  ...
}
```

これでこの金融口座は、この ABA 財務アドレスへのクレジットやデビットを受信することができます。

## 機能を削除する

機能を削除するには、`POST /v1/treasury/financial_accounts/{{FINANCIALACCOUNT_ID}}/features` を使用して、機能の値を `false` に設定します。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}}/features \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "card_issuing[requested]=false"
```

成功すると、オブジェクトから削除した機能を含む [`Features` オブジェクト](https://docs.stripe.com/api/treasury/financial_account_features.md)がレスポンスとして返されます。

## 機能を取得する

金融口座の機能を取得するには、`GET /v1/treasury/financial_accounts/{{FINANCIAL_ACCOUNT_ID}}/features` を使用します。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}}/features \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}"
```

JSON レスポンスでは、次の 3 つのプロパティで定義された機能詳細が提供されます。

- `requested`: 機能がリクエストされたかどうかを示します。
- `status`: 機能の現在の状態 (`active`、`pending`、または `restricted`) を示します。
- `status_details`: code と resolution を格納するハッシュの配列。

```json
{
  "card_issuing": {
    "requested": true,
    "status": "active",
    "status_details": []
  },
  "deposit_insurance": {
    "requested": true,
    "status": "restricted",
    "status_details": [
      {
        "code": "requirements_past_due",
        "resolution": "provide_information"
      }
    ]
  }
}
```

以下の表は、`status` と `status_details` の可能な組み合わせを示したものです。

| ステータス | ステータスの詳細コード | ステータスの詳細の解決 | 説明 |
| --- | --- | --- | --- |
| `pending` | `activating` |  | Stripe は現在、この機能を有効化しています。 |
| `pending` | `requirements_pending_verification` |  | 連結アカウントの関連するケイパビリティに対する要件は提出されていますが、確認が完了していません。 |
| `restricted` | `requirements_past_due` | `provide_information` | 連結アカウントが要件を満たすまで、この機能を有効化できません。 |
| `restricted` | `rejected_unsupported_business` | `contact_stripe` | このタイプのビジネスは現在サポートされていないため、アカウントが拒否されました。詳細については、[treasury-support@stripe.com](mailto:treasury-support@stripe.com)にメールを送信してください。 |
| `restricted` | `rejected_other` | `contact_stripe` | その他の理由により、アカウントが拒否されました。詳細については、[treasury-support@stripe.com](mailto:treasury-support@stripe.com)にメールを送信してください。 |
| `restricted` | `restricted_by_platform` | `remove_restriction` | プラットフォームは [platform_restrictions](https://docs.stripe.com/api/treasury/financial_accounts/object.md#financial_account_object-platform_restrictions) ハッシュを使用してこの機能を制限しています。 |
| `restricted` | `financial_account_closed` |  | 金融口座が閉鎖されているため、この機能はご利用になれません。 |
| `restricted` | `restricted_other` | `contact_stripe` | その他の理由により、この機能は制限されています。詳細については、[treasury-support@stripe.com](mailto:treasury-support@stripe.com)にメールを送信してください。 |

## 制限された機能

プラットフォームの金融口座での資金移動を制限して、インバウンドフロー (`inbound_flows`)、アウトバウンドフロー (`outbound_flows`)、または両タイプの資金移動を禁止することが可能です。これを行うには、[platform_restrictions](https://docs.stripe.com/api/treasury/financial_accounts/object.md#financial_account_object-platform_restrictions) ハッシュを使用します。資金移動フローを制限すると、そのフローに完全に、または部分的に依存する可能性がある金融口座の機能に影響します。たとえば、金融口座からの資金の移動を防止するには、`POST /v1/treasury/financial_accounts/{{FINANCIALACCOUNT_ID}}` を呼び出します。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d "platform_restrictions[outbound_flows]=restricted"
```

成功するとレスポンスで、該当のフローが `restricted` に設定された金融口座オブジェクトが返されます。

```json
{
  "object": "treasury.financial_account",
  "id": "{{FINANCIAL_ACCOUNT_ID}}",
  "status": "open",
  ...
  "platform_restrictions": {
    "inbound_flows": "unrestricted",
    "outbound_flows": "restricted"
  },
  "active_features": ["card_issuing", "deposit_insurance", "inbound_transfers.ach"],
  "pending_features": [],
  "restricted_features": ["financial_addresses.aba", "intra_stripe_flows", "outbound_payments.ach", "outbound_payments.us_domestic_wire", "outbound_transfers.ach", "outbound_transfers.us_domestic_wire"]
}
```

前のレスポンスに示されていたように、FinancialAccount で `outbound_flows` を制限すると、`financial_addresses.aba` 機能、`intra_stripe_flows` 機能、`inbound_transfers.ach` 機能が `restricted_features` 配列に追加されます。

`restricted_features` 配列にある機能は、全部または一部が制限される場合があります。たとえば、`outbound_flows` を制限すると、財務アドレスからの引き落としができなくなるため、前述のレスポンスでは、`financial_addresses.aba` が `restricted_features` 配列の一部となっています。ただし、`inbound_flows` は制限されていないため、その財務アドレスは引き続き ACH や電信送金を受け取ることができます。

同様に、`outbound_flows` 制限により、この金融口座を別の金融口座へのアウトバウンド支払いの送金元として使用できないため、`intra_stripe_flows` 機能が制限されます。ただし、この金融口座を引き続きアウトバウンド支払いの送金先にすることはできるため、この機能は完全には制限されません。

以下のリクエストは、フローが制限された金融口座の機能詳細を取得します。

```curl
curl https://api.stripe.com/v1/treasury/financial_accounts/{{TREASURYFINANCIALACCOUNT_ID}}/features \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}"
```

レスポンスでは、`restricted_by_platform` のコードがある `status_details` が含まれた `Feature` オブジェクトが提供されます。`restriction` プロパティによって、適用された `platform_restriction` への参照が示されます。

```json
{
  "object": "treasury.financial_account_features",
  "financial_addresses": {
    "aba": {
      "requested": true,
      "status": "restricted",
      "status_details": [
        {
          "code": "restricted_by_platform",
          "resolution": "remove_restriction",
          "restriction": "inbound_flows"
        }
      ]
    }
  },
  ...
}
```

以下の表は、`platform_restrictions` による機能への影響を説明したものです。

> `financial_addresses.aba` のインバウンドフローを制限する機能は、インバウンド電信送金をブロックしません。

### プラットフォームの制限が機能に与える影響

次の表は、個々の機能に対する `inbound_flows` と `outbound_flows` のプラットフォーム制限の影響を示しています。

| 機能 | inbound_flows | outbound_flows |
| --- | --- | --- |
| `card_issuing` | 該当なし | 該当なし |
| `deposit_insurance` | 該当なし | 該当なし |
| `financial_addresses.aba` | ABA 財務アドレスが ACH で入金を受け取れなくなります。 | ABA 財務アドレスから引き落としできなくなります。 |
| `inbound_transfers.ach` | 機能を無効にします。 | 該当なし |
| `intra_stripe_flows` | その金融口座が別の金融口座からアウトバウンド支払いを受け取れなくなります。 | この金融口座から別の金融口座に、アウトバウンド支払いを作成することはできません。 |
| `outbound_payments.ach` | 該当なし | 機能を無効にします。 |
| `outbound_payments.us_domestic_wire` | 該当なし | 機能を無効にします。 |
| `outbound_transfers.ach` | 該当なし | 機能を無効にします。 |
| `outbound_transfers.us_domestic_wire` | 該当なし | 機能を無効にします。 |

金融口座の作成時に `financial_address.aba` 機能が制限されている場合は、制限が解除されるまで金融アドレスは作成されません。詳細については、[利用可能な機能](https://docs.stripe.com/treasury/connect/legacy/v1/account-management/financial-account-features.md#available-features)をご覧ください。

### Stripe 制限機能

より高い不正利用リスクを検出すると、Stripe によって機能が制限されることがあります。これらの機能のいずれかを取得した場合の対応は、次のようになります:

```json
{
  "object": "treasury.financial_account_features",
  "financial_addresses": {
    "aba": {
      "requested": true,
      "status": "restricted",
      "status_details": [
        {
          "code": "restricted_other",
          "resolution": "contact_stripe"
        }
      ]
    }
  },
  ...
}
```

このような場合に Stripe の介入を独自に上書きするには、Connect ダッシュボードに移動して、次の手順を実行します。

1. 影響を受けた連結アカウントの詳細ページに移動します。
2. 制限された金融口座に移動します。
3. 制限を解除する機能を見つけて、**Turn on** をクリックします。これにより、そのアカウントのすべての金融口座でその機能の制限が解除されます。

## Webhook

1 つ以上の機能が特定のステータスに移行したときに [Webhook](https://docs.stripe.com/webhooks.md) でアクションを実行するには、ローカルの状態を機能の最新状態と比較します。`treasury.financial_account.features_status_updated` Webhook の `previous_attributes` プロパティにも、あるステータスから別のステータスに変わった機能が示されますが、イベントの重複が発生したり、受信順序が前後したりする場合があります。詳細については、[Webhook のベストプラクティス](https://docs.stripe.com/webhooks.md#best-practices)をご覧ください。

- `account.updated`
  - 新しい機能をリクエストすると、`requirements` ハッシュが変更され一部の新しいフィールドが `pending_verification` に追加されたことを通知する、`account.updated` Webhook がプラットフォームで受信されることがあります。
- `treasury.financial_account.features_status_updated`
  - 1 つ以上の機能のステータスが変わったことを示します。これを反映して、`active_features`、`pending_features`、`restricted_features` の各配列に変更が加えられます。
