# 請求書の一部支払いを受け付ける 請求書の一部支払いをキャプチャーする方法をご紹介します。 大半の*請求書* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice)は 1 回の支払いで完結します。請求書の金額が大きい場合は、少額の支払いを複数回にわたって受け付けることもできます。一部支払いを受け付ける場合は、ダッシュボードと API のどちらでも支払うことができます。 ## 一部支払いをキャプチャーする #### ダッシュボード ダッシュボードから顧客に請求する前に、顧客が決済手段を保存していることを確認してください。 1. ダッシュボードで、**Billing** > [請求書](https://dashboard.stripe.com/invoices)に移動します。 1. ステータスが `open` の請求書を選択します。 1. 請求書の詳細ページで、**顧客に請求**をクリックします。 1. **顧客に請求書を請求**ダイアログで、**金額**を更新します。請求書の残高の合計額以下の金額を請求できます。 1. **顧客に請求**をクリックします。 #### API [請求書](https://docs.stripe.com/api/invoices.md)を確定すると、Stripe はデフォルトの支払いを作成します。この支払いは請求書の全額に適用できます。デフォルトの支払いに関連付けられている PaymentIntent を直接編集することはできません。 一部支払いに対応するには、PaymentIntent を別個に作成して請求書に関連付けます。 請求書に対して支払う金額の *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) を作成します。PaymentIntent には、請求書と同じ `currency` と `customer` を設定しなければなりませんが、`amount` には請求書の [amount remaining (残額)](https://docs.stripe.com/api/invoices/object.md#invoice_object-amount_remaining) を超えない任意の金額を指定できます。 PaymentIntent を作成したら、`client_secret` をフロントエンドに返して支払いを完了します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "customer={{CUSTOMER_ID}}" \ -d "automatic_payment_methods[enabled]=true" ``` 支払いを請求書に関連付けると、Stripe は `InvoicePayment` を作成します。[payments](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments) フィールドを展開することで、請求書の支払いをすべて表示できます。 PaymentIntent を以下のように請求書に関連付けます。 ```curl curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/attach_payment \ -u "<>:" \ -d "payment_intent={{PAYMENTINTENT_ID}}" ``` Invoicing API を使用して[支払い情報を収集し、支払いを完了](https://docs.stripe.com/invoicing/integration.md)する方法をご紹介します。 ### 支払いライフサイクル 顧客が行ったすべての支払いは、請求書の[支払い](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments)リストに保存されます。基本的なライフサイクルは以下のようになります。 1. PaymentIntent を作成します。 1. PaymentIntent を請求書に関連付けます。 1. API は、InvoicePayment を請求書の `payments` リストに自動的に追加します。 1. PaymentIntent を確定します。 1. 支払いが成功すると、Stripe は、請求書の `amount_paid` と `amount_remaining` を更新します。 1. 請求書の全額が支払われると、Stripe は `status` を `paid` に更新します。 `succeeded` の PaymentIntent を請求書に関連付けると、請求書がすぐに更新されます。それ以外の場合、Stripe は支払いが成功するまで待機して、その後で請求書を更新します。 ## サブスクリプション請求書の一部支払い 確定後に Stripe が自動送信する請求書の場合、[有効なサブスクリプション](https://docs.stripe.com/billing/invoices/subscription.md)の一部の決済を受け付けることができます。API を使用する場合、[collection_method](https://docs.stripe.com/api/invoices/object.md#invoice_object-collection_method) は `send_invoice` に設定されます。 [自動請求](https://docs.stripe.com/invoicing/automatic-charging.md)されるサブスクリプションの請求書は、一部支払いに対応していません。API を使用する場合、`collection_method` は `charge_automatically` に設定されます。 [サブスクリプションのライフサイクル](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-lifecycle)は、一部支払いを含むサブスクリプションの請求書でもほぼ同じです。ただし、請求書は全額支払われた場合にのみ支払い済みと見なされます。API を使用する場合、`amount_remaining` は `0` かつ `status=paid` であることを意味します。 ## 請求書の支払いステータス 請求書の支払いには、それぞれの[ステータス](https://docs.stripe.com/api/invoices/object.md#invoice_object-payments-data-status)があり、これを使用すると、関連付けられている PaymentIntent を取得しなくても、支払いが成功したかどうかを確認できます。 一部のステータスでは、実行できる操作も制限されます。 - 請求書に `open` または `paid` の支払いがある場合は、請求書を無効にすることも、[編集](https://docs.stripe.com/invoicing/invoice-edits.md)することもできません。 - 請求書に `open` の支払いがある場合は、回収不能のマークを付けることはできません。 請求書に対して全額が支払われると、ステータスは `paid` に移行します。サブスクリプションの請求書のステータスは、支払いの適用後に変更されません。 請求書の決済 (請求書によって自動的に作成されるデフォルトの PaymentIntent 以外) では、関連する PaymentIntent を[キャンセル](https://docs.stripe.com/api/payment_intents/cancel.md)することで、決済ステータスを `open` から `canceled` に変更できます。 ## 一部支払い済みの請求書を追跡する 一部支払いのある請求書のステータスは、ダッシュボードの[請求書](https://dashboard.stripe.com/invoices)ページで確認できます。**残額** 列を追加して、請求書に残額を表示します。 顧客が請求書の一部を支払うと、請求書の残額と、カスタマーポータルに `partially paid` ステータスが表示されます。 `partially paid` ステータスの請求書に対して、次のいずれかのアクションを実行できます。 - 支払いのために請求書を顧客に送信する。 - [請求書の一部の要素](https://docs.stripe.com/invoicing/invoice-edits.md)を変更します。大幅な変更の場合は、新しい請求書を作成し、古いものを無効にします。 - インボイスのステータスを `paid` または `uncollectible` に変更する。 期日までに行われていない請求書の支払いでは、`overdue` ステータスが優先されます。 API を使用している場合は、インボイスのステータスの詳細の `amount_due` フィールドと `payments` フィールドを表示します。 ## 請求書の過払いを防ぐ 請求書に複数の `open` の支払いがある場合は、誤って請求書の過払いが行われる可能性があります。不要な支払いをキャンセルすることにより、過払いを防止することができます。 過払いが発生すると、Stripe は自動的に過入金を顧客の[クレジット残高](https://docs.stripe.com/invoicing/customer/balance.md)に払い戻します。これらのクレジットの残高取引の [type](https://docs.stripe.com/api/customer_balance_transactions/object.md#customer_balance_transaction_object-type) は、`invoice_overpaid` です。 [invoice.overpaid](https://docs.stripe.com/api/events/types.md#event_types-invoice.overpaid) Webhook をリッスンして、カスタムシステムで過払いを処理するよう実装できます。 過払い金を返金する場合は、次の手順に従います。 1. `invoice.overpaid` [Webhook](https://docs.stripe.com/webhooks.md) をリッスンします。 1. [amount_overpaid](https://docs.stripe.com/api/invoices/object.md#invoice_object-amount_overpaid) フィールドで返金額を指定します。 1. 顧客の [invoice_credit_balance](https://docs.stripe.com/api/customers/object.md#customer_object-invoice_credit_balance) を取得します。顧客の残高が返金額より少ない場合、過払金が別の請求書に適用されている可能性があるため、返金しないようにしてください。 1. 顧客の残高を調整して、過払いのクレジットを差し引きます。 1. 返金を作成します。 ## クレジットノートを発行する クレジットノートを発行すると、Stripe はクレジットノートの `amount` に基づいて請求書の `amount_remaining` の減額を試みます。クレジットノートの金額が請求書の残額を超えている場合は、超過分を顧客に返金する必要があります。 クレジットノートを[プレビュー](https://docs.stripe.com/api/credit_notes/preview.md)すると、顧客への返金額を確認できます。`pre_payment_amount` は請求書の `amount_remaining` への消し込み額を示し、`post_payment_amount` は顧客への返金額を示します。 詳しくは、[クレジットノートの仕組み](https://docs.stripe.com/invoicing/dashboard/credit-notes.md)をご覧ください。 ## 返金 `refund_amount` を指定してクレジットノートを作成すると、Stripe は請求書の直近の支払いの返金を試みます。その支払いに対して返金をすでに発行している場合、または返金額が支払い金額を超えている場合、返金は失敗します。このような場合にクレジットノートを作成するには、返金を別に作成し、[refunds](https://docs.stripe.com/api/credit_notes/create.md#create_credit_note-refunds) パラメーターを使用してクレジットノートに関連付けます。 ステータスが `refunded` の請求書については、お客様側でのアクションは必要ありません。 ## 制限事項 一部支払いを使用する際は、次の制限事項にご注意ください。 - [Stripe Connector for NetSuite](https://docs.stripe.com/use-stripe-apps/netsuite/Overview.md) は Partial Payments に対応していません。 - 顧客は[オンライン請求書ページ](https://docs.stripe.com/invoicing/hosted-invoice-page.md)で一部の金額だけを支払うことができません。