Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
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
HomeFinance automationBillingInvoicing

Accept partial payments for invoices

Learn how to capture partial payments made on an invoice.

Copy page

Most invoices are paid with a single payment. For larger invoices, you can accept multiple, smaller payments. You can use both the Dashboard and the API to accept partial payments.

Capture partial payments

Before you can charge a customer from the Dashboard, make sure they have a saved payment method.

  1. In the Dashboard, go to Billing > Invoices.
  2. Select an invoice with an open status.
  3. On the invoice details page, click Charge customer.
  4. In the Charge customer for invoice dialog, update the Amount. You can charge any amount less than or equal to the total of the remaining balance on the invoice.
  5. Click Charge customer.

Partial payments for subscription invoices

For invoices that Stripe send automatically after finalization, you can accept partial payments for active subscriptions. If you use the API, the collection_method is set to send_invoice.

Partial payments aren’t supported for subscription invoices that are charged automatically. If you use the API, the collection_method is set to charge_automatically.

The subscription lifecycle is mostly the same for subscription invoices with partial payments. However, invoices are considered paid only when they’re fully paid. If you use the API, this means amount_remaining is 0 and status=paid.

Invoice payment statuses

Each invoice payment has a status you can use to determine whether a payment has succeeded without having to fetch the associated PaymentIntent.

Some statuses also restrict the actions you can take:

  • When an invoice has open or paid payments, you can’t void or edit the invoice.
  • When an invoice has open payments, you can’t mark it uncollectible.

If a payment fully pays the invoice, the status moves to paid. The status for subscription invoices won’t change after a payment is applied.

You can change a payment’s status from open to canceled by canceling its associated PaymentIntent.

Track partially paid invoices

You can check the status of invoices with partial payments on the Invoices page in the Dashboard. Add an Amount remaining column to display the remaining amount on the invoice.

After your customer partially pays an invoice, they see the remaining amount on the invoice and a partially paid status in their customer portal.

You can take one of the following actions on an invoice with a partially paid status:

  • Send the invoice to a customer for payment.
  • Change some elements of the invoice. To make more substantive changes, create a new invoice and void the old one.
  • Change the invoice’s status to paid, void, or uncollectible.

For any invoice payments that aren’t made by the due date, the overdue status takes precedence.

If you use the API, view the amounts_due and payments fields for invoice status details.

Prevent invoice overpayment

If an invoice has multiple open payments, it’s possible to inadvertently overpay the invoice. You can avoid overpayment by canceling payments that you don’t need.

When an overpayment happens, Stripe automatically credits the excess funds to the customer’s credit balance. The balance transactions for these credits have an invoice_overpaid type.

Your integration can listen to the invoice.overpaid webhook to handle overpayments using a custom integration.

For example, to refund an overpayment:

  1. Listen for the invoice.overpaid webhook.
  2. Use the amount_overpaid field to determine the refund amount.
  3. Retrieve the customer’s invoice_credit_balance. If the customer’s balance is less than the refund amount, the overpayment isn’t refunded because it might be applied to another invoice.
  4. Adjust the customer’s balance and subtract the overpayment credit.
  5. Create a refund.

Issue a credit note

When you issue a credit note, Stripe attempts to reduce the invoice’s amount_remaining based on the credit note’s amount. If the credit note amount is greater than the invoice’s remaining amount, you must refund the excess to your customer.

You can preview a credit note to determine how much to refund to your customer. The pre_payment_amount tells you how much you’ll use to reduce the invoice’s amount_remaining, and the post_payment_amount tells you how much to refund to your customer.

Learn more about how credit notes work.

Refunds

When you create a credit note with a refund_amount, Stripe attempts to refund the invoice’s most recent payment. If you already issued a refund for that payment, or the refund amount exceeds the payment amount, the refund fails. To create a credit note in this situation, create the refunds separately and link them to the credit note using the refunds parameter.

Invoices with a refunded status require no action on your part.

Limitations

Be aware of the following limitations when using partial payments:

  • The Stripe Connector for NetSuite doesn’t support partial payments.
  • Your customers can’t pay a partial amount on the Hosted Invoice Page.
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