Create and send a quote
Learn how to create, send, and accept a quote.
Note
You can use quotes in a sandbox. To finalise, download, or accept quotes in live mode for one-off invoices through the API or Dashboard, you must upgrade to Invoicing Plus. See which plan is right for you.
A quote is a way to show prospective or existing customers the costs for a set of products and services. Quotes show the cost of either a one-off invoice or subscription. When a customer accepts the quote, Stripe automatically creates all relevant invoices and subscriptions. Many sales workflows use this common tool.
Create a customerServer-side
To create a quote, pass in a line item for each product or service. Attach a Customer object to the quote to represent the customer. After you create the customer, store the id
in your database so you can use it later. In the next step, you’ll use the customer to create a quote.
Create a quoteServer-side
To create a quote, pass in the Customer and Line items. You can use prices to model the offerings that your business provides. Learn how to set up your product catalogue to use prices with quotes.
You can add each offering from your business to the quote as a line item by specifying the price and quantity. For example, if you were to create a quote for a monthly software licence that comes with a one-off consultation fee to install the software, the quote would contain two line items:
- The first line item represents five licenses of the 100 USD per month per license cost of the software.
- The second line item represents the one-time 1000 USD consultation fee.
A newly created quote has a draft
status. You can modify draft quotes by adding or removing line items.
Send a quoteServer-side
When you’re ready to send the quote to your customer, you can move it to an open
state by finalising the quote. Because the quote is for a specific customer, you must attach a Customer object
to it before it can transition to the new state.
After you finalize a quote, you can download the PDF, which contains an overview of the quote. Attach it to an email and send it to your customer.
You can also set a header, footer and description on your quote, which the PDF displays. You can specify the default settings for the header
, footer
and description
in the Quote template. Remember to keep the quote in an open
state while your customer reviews it.
Mark a quote as acceptedServer-side
After the customer agrees to the quote, move it to the accepted
state, which automatically creates an invoice or subscription (depending on whether you’ve added line items with a recurring price). When you use a quote for one-off payments, Stripe creates an invoice in the draft
state. You can make modifications to your invoice before sending it to your customer.
OptionalConvert a quote to a subscriptionServer-side
To create a subscription using a quote, you need to add at least one line item with a recurring price. This ensures that the quote creates a subscription when it enters an accept
state. If the recurring parameter on a quote isn’t null
, then Stripe creates a subscription or subscription schedule after your customer accepts it.
To customise the subscription, you can specify its configuration using subscription_data. For example, you might want the subscription to have a trial period. Settrial_period_days to specify how many days the trial should last.
You can collect your customer’s payment details ahead of time. If your customer doesn’t have a payment_method on file and you plan to automatically charge them, set the quote’s collection_method to charge_
.
Stripe creates an active
subscription with the first invoice in a draft
state set to auto_
. We automatically finalize the invoice after 1 hour and the subscription status updates accordingly.
Create a subscription schedule from a quote
If you want your subscription to start in the future, create a subscription schedule. For example, you might want the subscription to start on the first day of the following month. Set the effective_date to specify when the subscription schedule starts: