Quotes
Learn how to provide price estimates to customers before starting a subscription or invoice.
Quotes allow you to provide your customers with a price estimate for requested goods or services. You can combine recurring and one-off line items, and include any discounts or taxes. After your customer accepts the quote, you can convert it into a recurring subscription or a one-time invoice.
Send and accept quotes 
To send and accept quotes for one-time invoices:
- Log in to your Stripe Dashboard.
- On the Your plans page, sign up for Invoicing Plus.
Learn more about accessing quotes.
Quote statuses 
Quotes can transition between these statuses:
Status | Description | Possible actions |
---|---|---|
draft | The starting status for all quotes. You can still edit the invoice when it’s in draft status. | |
open | The quote is finalized and awaiting action from the customer. You can only edit the expiration date. | |
accepted | The customer accepted the quote. The quote generates an invoice, subscription, or subscription schedule. | N/A |
canceled | The quote expired or was canceled. You can no longer accept it. | N/A |
Finalize a draft quote 
Quotes are initially created as a draft
. In this status, you can edit the quote and make any required changes. You can finalize the quote when you’re ready to send it to your customer.
Finalizing the quote assigns a number
to it. The number consists of four parts:
- The prefix
QT
- The customer’s invoice prefix
- The quote sequence
- The revision sequence
For example, QT-68BB114-0001-1
is the first quote for a customer, and the quote is on the first revision. Quote number QT-68BB114-0001-2
is the same quote, but on the second revision. QT-68BB114-0002-1
is the second quote for the customer.
You can use the API to finalize a quote, as shown in the following example:
Quotes can transition from a draft
status to one of the following end statuses:
open
: The API endpoint POST /v1/quotes/:id/finalize emits aquote.
webhook.finalized canceled
: The API endpoint POST /v1/quotes/:id/cancel emits aquote.
webhook.canceled
Accept a quote 
After your customer agrees to the quote, you can mark the open
quote as accepted
. Accepted quotes automatically generate an invoice, subscription, or subscription schedule.
- Quotes with recurring prices: A subscription schedule is created if the effective date on the quote is in the future. Otherwise, a subscription is created. The first invoice on the subscription is in
draft
status withauto_
set toadvance true
. - Quotes without recurring prices: A
draft
invoice is created withauto_
set toadvance false
. You can modify the invoice before finalizing and sending it to your customer for payment.
Cancel a quote 
If your customer rejects the quote or you no longer want it to be valid, you can cancel the quote. To do so, mark the draft
or open
quote as canceled
, or wait for these quotes to automatically cancel when they reach the expiration date. You can’t accept canceled quotes.
Download a quote PDF 
Use the PDF method to download a quote PDF:
Instead of returning data in JSON format, the PDF method returns a stream of data that represents the byte sequences of the incoming data. The byte stream is read in chunks or segments as the data streams in, allowing you to start processing incoming data before the entire data load completes. This method is especially useful for handling large data or real-time data processing.

The generated quote PDF