# 入金の照合

特定の入金にどの取引が含まれるかを把握します。

Stripe の利用可能な残高から銀行口座に送金すると、Payout オブジェクトが生成されます。自動入金は[入金スケジュール](https://docs.stripe.com/payouts.md#payout-schedule)に従って定期的に発生し、複数の取引からの売上を含めることができます。

Stripe では、自動入金に含まれる取引を以下の方法で確認できます。

- [Stripe ダッシュボード](https://dashboard.stripe.com/test/payouts)で入金を開きます。
- [入金照合レポート](https://docs.stripe.com/reports/payout-reconciliation.md)を表示またはダウンロードします。
- このガイドに記載されているように、Stripe API を使用して入金の詳細を取得します。

> #### 手動入金の照合
> 
> 手動入金のタイミングと金額はお客様が管理するため、Stripe では各入金に含まれる取引を特定できません。取引履歴に対して作成した入金を照合する責任はお客様にあります。

## 入金 ID を確認する

入金の取引に関する情報を取得するには、入金の `id` (`po_xxx`) が必要です。これを取得するには、次のようにします。

- `payout.reconciliation_completed` Webhook イベントをリッスンします。
- [List Payouts](https://docs.stripe.com/api/payouts/list.md) を呼び出して、入金のリストを確認します。
- 自社のデータベースからこれを取得します。

[入金を取得](https://docs.stripe.com/api/payouts/retrieve.md)してそのプロパティにアクセスすることはできますが、これには合計金額を構成する個々の取引は含まれません。

```json
{
  "id": "po_001",
  "amount": 8000,
  "currency": "usd",
  "status": "paid",
  ...
}
```

## BalanceTransactions を表示する

Stripe アカウントを出入りするすべての資金移動で、[BalanceTransaction](https://docs.stripe.com/api/balance_transactions.md) が作成されます。[list BalanceTransaction](https://docs.stripe.com/api/balance_transactions/list.md) リクエストで入金 ID を渡して、その入金に関連付けられた取引のみで結果を絞り込みます。

```curl
curl -G https://api.stripe.com/v1/balance_transactions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d payout=po_xxx
```

デフォルトの 10 件よりも多くの結果が必要な場合は、リクエストで [`limit`](https://docs.stripe.com/api/balance_transactions/list.md#balance_transaction_list-limit) パラメーターを設定するか、Stripe の [auto-pagination](https://docs.stripe.com/api/pagination/auto.md) を使用します。

レスポンスでは、指定された入金の BalanceTransactions オブジェクトの配列が返されます。

```json
{
  "object": "list",
  "data": [
    {
      "id": "txn_001",
      "amount": 10000,
      "type": "charge",
      "source": "ch_001",
      ...
    },
    {
      "id": "txn_002",
      "amount": -2000,
      "type": "refund",
      "source": "re_001",
      ...
    },
    ...
```

`type` プロパティは、取引を生成した元のアクティビティーを識別します。たとえば、以下のようになります。

- `charge`: 顧客からの支払い。
- `refund`: 顧客への売上の返金。
- `stripe_fee`: Stripe 手数料の支払い。
- `payout`: 入金。Stripe アカウントから銀行口座に売上を移動した取引でもあります。

詳細なリストについては、[取引残高タイプ](https://docs.stripe.com/reports/balance-transaction-types.md#types)をご覧ください。

## 取引残高リソースを拡張する

各 BalanceTransaction の `source` プロパティでは、支払いの場合は `ch_xxx`、返金の場合は `re_xxx` など、取引タイプを表す元のオブジェクトを識別します。追加の API コールを行わずにこれらのオブジェクトを取得するには、[expand](https://docs.stripe.com/expand.md) を使用して以前のコードを更新します。

```curl
curl -G https://api.stripe.com/v1/balance_transactions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d payout=po_xxx \
  -d "expand[]=data.source"
```

レスポンスには、入金の各 BalanceTransaction の拡張された `source` オブジェクトが含まれます。

```json
{
  "object": "list",
  "data": [
    {
      "id": "txn_001",
      "amount": 10000,
      "type": "charge",
      "source": {
        "id": "ch_001",
        "amount": 10000,
        "metadata": { ... },
        ...
      },
      ...
    },
    {
      "id": "txn_002",
      "amount": -2000,
      "type": "refund",
      "source": {
        "id": "re_001",
        "amount": 2000,
        "reason": "requested_by_customer",
        ...
      },
      ...
```

以下のコードを使用して、`id` や `amount` などの `source` オブジェクトのプロパティにアクセスします。

#### Ruby

```ruby
balance_transactions['data'].each do |txn|
  obj = txn['source']
  puts "#{obj['id']} #{obj['amount']}"
end
```
