payinOPERATIONS MANUAL

Latest articles

Stripe Quotes: accepted is not paid—follow the invoice or subscription

Separate quote agreement from payment, distinguish one-time and recurring conversion, and handle draft review, finalization and expiry with an explicit billing handoff.

Published; sources checked:

Stripe Quotes acceptance and generated billing objects for eligible accounts. Excludes invoice webhook-delay diagnosis, schedule cancellation, paid-without-charge reconciliation, legal enforceability and live testing.

1. Acceptance starts billing; it does not finish payment

An accepted Stripe quote is a commercial handoff, not a payment receipt. Stripe says accepting an open quote creates an invoice, subscription or subscription schedule.[1] Your workflow therefore needs separate answers to “Did the customer agree?” and “What happened to billing?”

This distinction addresses a real public implementation problem: a project using Stripe Checkout reported that a customer accepted its own quote, closed the page and never paid.[3] That report concerns a custom quote workflow, not a defect in Stripe Quotes. Separately, a public project requested replacing its custom PDF with Stripe Quotes.[4] Together these are qualitative demand signals, not search-volume measurements.

2. Finish commercial review while the quote is draft

Stripe quotes start in draft, where they can be edited. Finalization assigns a quote number and moves the quote to open; at that point only the expiration date is editable.[1] Quote finalization is not invoice finalization: these are different objects with different transitions.[1][2]

Recommended review: confirm the customer, quantities, prices, recurring components, intended start date and commercial approval before finalizing. Preserve the quote identifier and the version presented to the customer. Do not use a finalized PDF as evidence that an invoice exists, or interpret an open quote as an unpaid invoice. If commercial terms change, resolve the replacement proposal before recording acceptance.

3. One-time conversion deliberately leaves a draft invoice

When the quote has no recurring prices, acceptance creates a draft invoice with auto_advance=false. Stripe explicitly allows that invoice to be modified before finalizing and sending it for payment.[1] A draft at this point is consequently not, by itself, evidence of a card decline or a broken webhook.

Assign a billing owner to review the generated invoice and decide when to finalize it. Invoice finalization makes it payable and changes its status to open; payment is a separate transition.[2] Recommended support wording is “Your quote was accepted; the invoice is being prepared,” when that matches the current records. Do not promise that acceptance automatically emails an invoice or collects money.

4. Recurring prices change the downstream object

A quote containing recurring prices follows the recurring branch, including a quote that combines recurring and one-off items. If its effective date is in the future, Stripe creates a subscription schedule; otherwise it creates a subscription. The first subscription invoice is draft with auto_advance=true.[1] That automation setting is not proof that payment has already succeeded.

Recommended handoff: record whether the result is an invoice, subscription or schedule, then follow that object rather than demanding an immediate one-time invoice in every case. For a future start, distinguish “accepted for a later start” from “service active now.” Your access policy should explicitly address that difference instead of inheriting a sales-status label.

5. Treat expiry as a terminal quote decision

Stripe lets you cancel a draft or open quote, and those quotes also cancel automatically when their expiration date is reached. A canceled quote cannot be accepted.[1] Do not create an imaginary separate Stripe quote status called expired; the documented state here is canceled.[1]

Before an acceptance action, check the current quote rather than an old screen or emailed PDF. If it has canceled, stop the acceptance path and arrange a newly reviewed proposal. Preserve why the earlier offer ended in your own records. Quote expiry is not a mechanism for reversing an invoice or canceling a subscription already created from an accepted quote.

6. Close the handoff with observable billing state

Stripe emits quote.accepted for the open-to-accepted transition.[1] Treat it as a reason to reconcile the generated billing object, not as a paid-order signal. Keep quote acceptance, invoice readiness, customer communication and payment evidence separate in your operational checklist.

For example, a one-time installation quote can be accepted while its invoice remains draft; a recurring service starting later can produce a schedule instead.[1] Both may be correct. Proposed validation cases should cover one-time acceptance, immediate recurring acceptance, future-start acceptance, expiry and a customer returning after acceptance. These are suggested checks, not tests performed for this guide.

The current guide directs one-time invoice quote users to Invoicing Plus.[1] Confirm account access and supported markets separately: the retrieved lifecycle documentation is not a country-by-country eligibility list. Sources were checked on September 23, 2026; official publication and update dates were not stated. This is documentation research, not live payment testing, legal advice or a claim about PayIn functionality.

Sources and dates

Official documentation supports behavior; community questions demonstrate qualitative demand only. Retrieved 2026-09-23; retrieval is not publication. Documentation research, not live-account testing, a PayIn feature claim or financial advice. Regional availability and account eligibility must be checked separately.

More guides

All guides