Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer tools
Overview
Billing
    Overview
    About the Billing APIs
    Subscriptions
    Invoicing
      Overview
      API quickstart
      Integrate with the API
      Invoicing without code
      Invoice lifecycle
      Preview invoices
      Edit invoices
      Schedule invoice finalization
      Status transitions and finalization
      Send customer emails
      Generate credit notes
      Invoice customers
      Customers
      Customer credit balance
      Customer tax IDs
      Invoice payments
      Hosted Invoice Page
      Create invoice payment plans
      Accept partial payments
      Payment methods for invoices
      Automated collections
      Invoice customization
      Customize invoices
      Invoice rendering templates
      Group invoice line items
      Summarize line items
      Global invoicing
      Best practices
      Multi-currency customers
      Other invoicing features
      Products and prices
      Manage bulk invoice line items
      Taxes
    Usage-based billing
    Connect and Billing
    Tax and Billing
    Quotes
    Revenue recovery
    Automations
    Scripts
    Revenue recognition
    Customer management
    Entitlements
    Test your integration
Tax
Reporting
Data
Startup incorporation
HomeRevenueBillingInvoicing

Create invoice payment plansPublic preview

Learn how to create payment plans for your Stripe invoices.

Copy page

Invoice payment plans let you break up an invoice’s 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.

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.
  • Invoices with payment plans aren’t reflected accurately by Stripe Tax obligations monitoring. Consult with your tax advisor.
  • Stripe Tax doesn’t support partial refunds, so tax liability won’t be reflected accurately. Consult with your tax advisor.
  • 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.
  • Stripe automatically emails reminders to your customers to complete subsequent payments. We send these emails 1 week before payments are due by default. Sending these emails overrides any email reminder schedules and settings for one-off invoices. You can turn off the email reminders by disabling the setting for Send finalized invoices and credit notes to customers.
  • 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.

Note

If you want to enable buy now, pay later for B2C invoices, read our buy now, pay later guide for more information.

This guide shows how to set up and manage payment plans using the amounts_due field on the Invoicing API.

Create supporting objects

Before setting up payment plans, make sure to review the concepts in the integrate with the Invoicing API 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 field helps you set up payment plans with Stripe Invoices. To use this feature, set the 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:

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d customer=
{{CUSTOMER_ID}}
\ -d collection_method=send_invoice \ -d auto_advance=true \ -d "amounts_due[][amount]=2000" \ -d "amounts_due[][days_until_due]=30" \ -d "amounts_due[][description]=Payment 1" \ -d "amounts_due[][amount]=2000" \ -d "amounts_due[][days_until_due]=60" \ -d "amounts_due[][description]=Payment 2" \ -d "amounts_due[][amount]=2000" \ -d "amounts_due[][days_until_due]=90" \ -d "amounts_due[][description]=Payment 3"

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:

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d customer=
{{CUSTOMER_ID}}
\ -d collection_method=send_invoice \ -d auto_advance=true \ -d "amounts_due[][amount]=1000" \ -d "amounts_due[][days_until_due]=1" \ -d "amounts_due[][description]=Deposit" \ -d "amounts_due[][amount]=2000" \ -d "amounts_due[][days_until_due]=30" \ -d "amounts_due[][description]=Payment 1" \ -d "amounts_due[][amount]=2000" \ -d "amounts_due[][days_until_due]=60" \ -d "amounts_due[][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 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, you can also set a specific due date using the 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:

Command Line
curl https://api.stripe.com/v1/invoices/
{{INVOICE_ID}}
\ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amounts_due[][amount]=1000" \ -d "amounts_due[][due_date]=1677514200" \ -d "amounts_due[][description]=Updated Payment 1" \ -d "amounts_due[][amount]=3000" \ -d "amounts_due[][due_date]=1678132000" \ -d "amounts_due[][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:

Command Line
curl https://api.stripe.com/v1/invoiceitems \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d customer=
{{CUSTOMER_ID}}
\ -d invoice=
{{INVOICE_ID}}
\ -d 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:

Command Line
curl https://api.stripe.com/v1/invoices/
{{INVOICE_ID}}
/finalize
\ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -X POST

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 guide.

You can configure a longer grace period.

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.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access program.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc