# Create invoice payment plans

Learn how to create payment plans for your Stripe invoices.

Invoice payment plans let you break up an [invoice’s](https://docs.stripe.com/api/invoices.md) total amount into separate payments with different due dates. This can expand your billing flexibility. For example, you could first collect a deposit and then the balance amount of a transaction at a later date. Alternatively, you could break up dues into more favorable terms for your customers by splitting them into multiple, smaller increments over time. Stripe reminds your customers of upcoming payments that they have to make and shows them a history of past payments. You can use both the Dashboard and the API to generate payment plans.

> This feature is in private preview. You can request early access by filling in the form below.

### Interested in getting early access to invoice payment plans?

Enter your email address below and our team will contact you soon.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/invoicing/payment-plans" \
  -d '{"email": "EMAIL", "preview": "billing_invoice_payment_plans_preview"}'
```

## Limitations

Payment plans are currently a preview feature and have a few important limitations. Make sure that the following limitations don’t conflict with your use case:

- Payment plans aren’t supported by Stripe Revenue Recognition or the Stripe Connector for NetSuite.
- Payment plans don’t auto-charge customers with saved payment details. Customers must return to the payment page to make subsequent payments. You can’t use them with `charge_automatically` invoices.
- For Connect users, application fees can’t be set on payment plan-enabled invoices. You can only set fees on PaymentIntents.
- Additional fields associated with payment plans aren’t available in Sigma.
- Some Billing Analytics charts (Top Subscribers, Collections) only register invoices that are fully paid. Other charts are unaffected.
- Subscription invoices can’t have payment plans applied.

> If you want to enable [buy now, pay later](https://docs.stripe.com/payments/buy-now-pay-later.md) for B2C invoices, read our [buy now, pay later guide](https://stripe.com/guides/buy-now-pay-later) for more information.

## Notifications

You can enable installment reminders in [Invoice reminders settings](https://dashboard.stripe.com/settings/billing/invoice). To turn off email reminders, disable [Invoice reminders](https://dashboard.stripe.com/settings/billing/invoice).

# API


This guide shows how to set up and manage payment plans using the [amounts_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-amounts_due) field on the [Invoicing API](https://docs.stripe.com/api/invoices.md).

## Create supporting objects

Before setting up payment plans, make sure to review the concepts in the [integrate with the Invoicing API](https://docs.stripe.com/invoicing/integration.md) guide. You need an understanding of how to create products, prices, and customers using the Stripe API or Dashboard to use this feature.

## Create an invoice with a payment plan

The [amounts_due](https://docs.stripe.com/api/invoices/create.md#create_invoice-amounts_due) field helps you set up payment plans with Stripe Invoices. To use this feature, set the [collection_method](https://docs.stripe.com/api/invoices/create.md#create_invoice-collection_method) for the invoice to `send_invoice`. Payment plans aren’t supported for `charge_automatically` invoices.

This section goes through two common use cases for payment plans: flexible payment terms and initial deposit.

### Flexible payment terms

Use payment plans when you want to divide the amount due from your customer into smaller increments. For example, suppose you have an invoice of 6,000 USD, and you want the customer to pay it in three payments. You can set up the payment plan using the `amounts_due` field as shown below:

```curl
curl https://api.stripe.com/v1/invoices \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-08-26.preview; invoice_payment_plans_beta=v1" \
  -d "customer={{CUSTOMER_ID}}" \
  -d collection_method=send_invoice \
  -d auto_advance=true \
  -d "amounts_due[0][amount]=200000" \
  -d "amounts_due[0][days_until_due]=30" \
  -d "amounts_due[0][description]=Payment 1" \
  -d "amounts_due[1][amount]=200000" \
  -d "amounts_due[1][days_until_due]=60" \
  -d "amounts_due[1][description]=Payment 1" \
  -d "amounts_due[2][amount]=200000" \
  -d "amounts_due[2][days_until_due]=90" \
  -d "amounts_due[2][description]=Payment 2"
```

### Initial deposit

In some situations, you might want to ask for an initial deposit followed by a payment plan for the remaining amount. For example, suppose you have an invoice of 5,000 USD, and you want the customer to pay a 1,000 USD deposit followed by two equal payments for the remaining amount. You can set up the payment plan as follows:

```curl
curl https://api.stripe.com/v1/invoices \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-08-26.preview; invoice_payment_plans_beta=v1" \
  -d "customer={{CUSTOMER_ID}}" \
  -d collection_method=send_invoice \
  -d auto_advance=true \
  -d "amounts_due[0][amount]=1000" \
  -d "amounts_due[0][days_until_due]=1" \
  -d "amounts_due[0][description]=Deposit" \
  -d "amounts_due[1][amount]=2000" \
  -d "amounts_due[1][days_until_due]=30" \
  -d "amounts_due[1][description]=Payment 1" \
  -d "amounts_due[2][amount]=2000" \
  -d "amounts_due[2][days_until_due]=60" \
  -d "amounts_due[2][description]=Payment 2"
```

The examples above illustrate how to set up payment plans using the `amounts_due` field for invoices with various payment structures. Keep in mind that the total amount from the `amounts_due` field must equal the final [amount_due](https://docs.stripe.com/api/invoices/object.md#invoice_object-amount_due) of the invoice. With these examples, you can begin creating tailored payment plans based on your specific needs.

## Update the payment plan

You can update the `amounts_due` field for an invoice before finalizing it, letting you modify the payment plan as needed. This allows you to make adjustments, such as changing due dates, altering payment amounts, or adding new payments.

In addition to setting the number of days until a payment is due with [days_until_due](https://docs.stripe.com/api/invoices/update.md#update_invoice-amounts_due-days_until_due), you can also set a specific due date using the [due_date](https://docs.stripe.com/api/invoices/update.md#update_invoice-amounts_due-due_date) field. The `due_date` field lets you specify an exact date for a payment, providing more customization options for your payment plans.

Here’s an example of updating an invoice’s payment plan:

```curl
curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Version: 2026-08-26.preview; invoice_payment_plans_beta=v1" \
  -d "amounts_due[0][amount]=1000" \
  -d "amounts_due[0][due_date]=1677514200" \
  -d "amounts_due[0][description]=Updated Payment 1" \
  -d "amounts_due[1][amount]=3000" \
  -d "amounts_due[1][due_date]=1678132000" \
  -d "amounts_due[1][description]=Updated Payment 2"
```

In this example, we update an invoice’s payment plan to use specific due dates instead of `days_until_due`. The `amounts_due` field also adjusts to show new payment amounts, showcasing the flexibility in modifying payment plans before finalizing an invoice.

## Finalize the invoice

You can finalize an invoice after setting up the payment plan and adding the desired invoice items. You can’t modify a finalized invoice, for example, updating the payment plan, adding or removing invoice items, or making changes to the invoice’s amounts or dates.

Before finalizing your invoice, make sure you’ve added the required invoice items. Here’s an example of adding an invoice item:

```curl
curl https://api.stripe.com/v1/invoiceitems \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "invoice={{INVOICE_ID}}" \
  -d "pricing[price]={{PRICE_ID}}" \
  -d currency=usd
```

After adding the necessary invoice items and making sure your payment plan is set up correctly, proceed with finalizing the invoice. Here’s an example of how to finalize an invoice:

```curl
curl -X POST https://api.stripe.com/v1/invoices/{{INVOICE_ID}}/finalize \
  -u "<<YOUR_SECRET_KEY>>:"
```

After finalizing an invoice, it’s ready to be sent to the customer for payment. Any adjustments to the invoice need to be done before finalization, so review the invoice details before doing this step. Learn more about finalization from our [status transitions and finalization](https://docs.stripe.com/invoicing/integration/workflow-transitions.md) guide.

[You can configure a longer grace period](https://docs.stripe.com/billing/subscriptions/usage-based/configure-grace-period.md).


## Post-finalization actions on invoices

You can still revise, void, or mark as uncollectible a finalized invoice with a payment plan, only before the first payment is received. Additionally, payment plans can only be “marked as paid” outside Stripe for the entire remaining amount due of the invoice, and not for a partial amount.
