Stripe Quotes API

A Quote is a way to model prices that you'd like to provide to a customer. Once accepted, it will automatically create an invoice, subscription or subscription schedule.

OpenAPI Specification

stripe-quotes-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Stripe Accounts Account Quotes API
  description: This is an object representing a Stripe account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to make live charges or receive payouts.
  contact:
    email: dev-platform@stripe.com
    name: Stripe Dev Platform Team
    url: https://stripe.com
  termsOfService: https://stripe.com/us/terms/
  version: '2023-10-16'
  x-stripeSpecFilename: spec3
servers:
- url: https://api.stripe.com/
security:
- basicAuth: []
- bearerAuth: []
tags:
- name: Quotes
paths:
  /v1/quotes:
    get:
      description: <p>Returns a list of your quotes.</p>
      operationId: GetQuotes
      parameters:
      - description: The ID of the customer whose quotes will be retrieved.
        in: query
        name: customer
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
        in: query
        name: ending_before
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - description: Specifies which fields in the response should be expanded.
        explode: true
        in: query
        name: expand
        required: false
        schema:
          items:
            maxLength: 5000
            type: string
          type: array
        style: deepObject
      - description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
        in: query
        name: limit
        required: false
        schema:
          type: integer
        style: form
      - description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
        in: query
        name: starting_after
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - description: The status of the quote.
        in: query
        name: status
        required: false
        schema:
          enum:
          - accepted
          - canceled
          - draft
          - open
          type: string
          x-stripeBypassValidation: true
        style: form
      - description: Provides a list of quotes that are associated with the specified test clock. The response will not include quotes with test clocks if this and the customer parameter is not set.
        in: query
        name: test_clock
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetQuotesRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                - data
                $ref: '#/components/schemas/QuotesResourceQuoteList'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
    post:
      description: <p>A quote models prices and services for a customer. Default options for <code>header</code>, <code>description</code>, <code>footer</code>, and <code>expires_at</code> can be set in the dashboard via the <a href="https://dashboard.stripe.com/settings/billing/quote">quote template</a>.</p>
      operationId: PostQuotes
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              application_fee_amount:
                explode: true
                style: deepObject
              application_fee_percent:
                explode: true
                style: deepObject
              automatic_tax:
                explode: true
                style: deepObject
              default_tax_rates:
                explode: true
                style: deepObject
              description:
                explode: true
                style: deepObject
              discounts:
                explode: true
                style: deepObject
              expand:
                explode: true
                style: deepObject
              footer:
                explode: true
                style: deepObject
              from_quote:
                explode: true
                style: deepObject
              header:
                explode: true
                style: deepObject
              invoice_settings:
                explode: true
                style: deepObject
              line_items:
                explode: true
                style: deepObject
              metadata:
                explode: true
                style: deepObject
              on_behalf_of:
                explode: true
                style: deepObject
              subscription_data:
                explode: true
                style: deepObject
              transfer_data:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostQuotesRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}:
    get:
      description: <p>Retrieves the quote with the given ID.</p>
      operationId: GetQuotesQuote
      parameters:
      - description: Specifies which fields in the response should be expanded.
        explode: true
        in: query
        name: expand
        required: false
        schema:
          items:
            maxLength: 5000
            type: string
          type: array
        style: deepObject
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetQuotesQuoteRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
    post:
      description: <p>A quote models prices and services for a customer.</p>
      operationId: PostQuotesQuote
      parameters:
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              application_fee_amount:
                explode: true
                style: deepObject
              application_fee_percent:
                explode: true
                style: deepObject
              automatic_tax:
                explode: true
                style: deepObject
              default_tax_rates:
                explode: true
                style: deepObject
              description:
                explode: true
                style: deepObject
              discounts:
                explode: true
                style: deepObject
              expand:
                explode: true
                style: deepObject
              footer:
                explode: true
                style: deepObject
              header:
                explode: true
                style: deepObject
              invoice_settings:
                explode: true
                style: deepObject
              line_items:
                explode: true
                style: deepObject
              metadata:
                explode: true
                style: deepObject
              on_behalf_of:
                explode: true
                style: deepObject
              subscription_data:
                explode: true
                style: deepObject
              transfer_data:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostQuotesQuoteRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/accept:
    post:
      description: <p>Accepts the specified quote.</p>
      operationId: PostQuotesQuoteAccept
      parameters:
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              expand:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostQuotesQuoteAcceptRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/cancel:
    post:
      description: <p>Cancels the quote.</p>
      operationId: PostQuotesQuoteCancel
      parameters:
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              expand:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostQuotesQuoteCancelRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/computed_upfront_line_items:
    get:
      description: <p>When retrieving a quote, there is an includable <a href="https://stripe.com/docs/api/quotes/object#quote_object-computed-upfront-line_items"><strong>computed.upfront.line_items</strong></a> property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of upfront line items.</p>
      operationId: GetQuotesQuoteComputedUpfrontLineItems
      parameters:
      - description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
        in: query
        name: ending_before
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - description: Specifies which fields in the response should be expanded.
        explode: true
        in: query
        name: expand
        required: false
        schema:
          items:
            maxLength: 5000
            type: string
          type: array
        style: deepObject
      - description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
        in: query
        name: limit
        required: false
        schema:
          type: integer
        style: form
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      - description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
        in: query
        name: starting_after
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetQuotesQuoteComputedUpfrontLineItemsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                - data
                $ref: '#/components/schemas/QuotesResourceListLineItems'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/finalize:
    post:
      description: <p>Finalizes the quote.</p>
      operationId: PostQuotesQuoteFinalize
      parameters:
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding:
              expand:
                explode: true
                style: deepObject
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/PostQuotesQuoteFinalizeRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/line_items:
    get:
      description: <p>When retrieving a quote, there is an includable <strong>line_items</strong> property containing the first handful of those items. There is also a URL where you can retrieve the full (paginated) list of line items.</p>
      operationId: GetQuotesQuoteLineItems
      parameters:
      - description: A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
        in: query
        name: ending_before
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      - description: Specifies which fields in the response should be expanded.
        explode: true
        in: query
        name: expand
        required: false
        schema:
          items:
            maxLength: 5000
            type: string
          type: array
        style: deepObject
      - description: A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
        in: query
        name: limit
        required: false
        schema:
          type: integer
        style: form
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      - description: A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
        in: query
        name: starting_after
        required: false
        schema:
          maxLength: 5000
          type: string
        style: form
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetQuotesQuoteLineItemsRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                description: ''
                x-expandableFields:
                - data
                $ref: '#/components/schemas/QuotesResourceListLineItems'
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
  /v1/quotes/{quote}/pdf:
    get:
      description: <p>Download the PDF for a finalized quote</p>
      operationId: GetQuotesQuotePdf
      parameters:
      - description: Specifies which fields in the response should be expanded.
        explode: true
        in: query
        name: expand
        required: false
        schema:
          items:
            maxLength: 5000
            type: string
          type: array
        style: deepObject
      - in: path
        name: quote
        required: true
        schema:
          maxLength: 5000
          type: string
        style: simple
      requestBody:
        content:
          application/x-www-form-urlencoded:
            encoding: {}
            schema:
              additionalProperties: false
              $ref: '#/components/schemas/GetQuotesQuotePdfRequest'
        required: false
      responses:
        '200':
          content:
            application/pdf:
              schema:
                format: binary
                type: string
          description: Successful response.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
          description: Error response.
      tags:
      - Quotes
components:
  schemas:
    error:
      description: An error response from the Stripe API
      properties:
        error:
          $ref: '#/components/schemas/api_errors'
      required:
      - error
      type: object
    PostQuotesQuoteFinalizeRequest:
      type: object
      properties:
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
        expires_at:
          description: A future timestamp on which the quote will be canceled if in `open` or `draft` status. Measured in seconds since the Unix epoch.
          format: unix-time
          type: integer
    GetQuotesQuoteLineItemsRequest:
      type: object
      properties: {}
    GetQuotesQuoteComputedUpfrontLineItemsRequest:
      type: object
      properties: {}
    PostQuotesQuoteRequest:
      type: object
      properties:
        application_fee_amount:
          anyOf:
          - type: integer
          - enum:
            - ''
            type: string
          description: The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account. There cannot be any line items with recurring prices when using this field.
        application_fee_percent:
          anyOf:
          - type: number
          - enum:
            - ''
            type: string
          description: A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. There must be at least 1 line item with a recurring price to use this field.
        automatic_tax:
          description: Settings for automatic tax lookup for this quote and resulting invoices and subscriptions.
          properties:
            enabled:
              type: boolean
          required:
          - enabled
          title: automatic_tax_param
          type: object
        collection_method:
          description: Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`.
          enum:
          - charge_automatically
          - send_invoice
          type: string
        customer:
          description: The customer for which this quote belongs to. A customer is required before finalizing the quote. Once specified, it cannot be changed.
          maxLength: 5000
          type: string
        default_tax_rates:
          anyOf:
          - items:
              maxLength: 5000
              type: string
            type: array
          - enum:
            - ''
            type: string
          description: The tax rates that will apply to any line item that does not have `tax_rates` set.
        description:
          anyOf:
          - maxLength: 500
            type: string
          - enum:
            - ''
            type: string
          description: A description that will be displayed on the quote PDF.
        discounts:
          anyOf:
          - items:
              properties:
                coupon:
                  maxLength: 5000
                  type: string
                discount:
                  maxLength: 5000
                  type: string
              title: discounts_data_param
              type: object
            type: array
          - enum:
            - ''
            type: string
          description: The discounts applied to the quote. You can only set up to one discount.
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
        expires_at:
          description: A future timestamp on which the quote will be canceled if in `open` or `draft` status. Measured in seconds since the Unix epoch.
          format: unix-time
          type: integer
        footer:
          anyOf:
          - maxLength: 500
            type: string
          - enum:
            - ''
            type: string
          description: A footer that will be displayed on the quote PDF.
        header:
          anyOf:
          - maxLength: 50
            type: string
          - enum:
            - ''
            type: string
          description: A header that will be displayed on the quote PDF.
        invoice_settings:
          description: All invoices will be billed using the specified settings.
          properties:
            days_until_due:
              type: integer
          title: quote_param
          type: object
        line_items:
          description: A list of line items the customer is being quoted for. Each line item includes information about the product, the quantity, and the resulting cost.
          items:
            properties:
              id:
                maxLength: 5000
                type: string
              price:
                maxLength: 5000
                type: string
              price_data:
                properties:
                  currency:
                    type: string
                  product:
                    maxLength: 5000
                    type: string
                  recurring:
                    properties:
                      interval:
                        enum:
                        - day
                        - month
                        - week
                        - year
                        type: string
                      interval_count:
                        type: integer
                    required:
                    - interval
                    title: recurring_adhoc
                    type: object
                  tax_behavior:
                    enum:
                    - exclusive
                    - inclusive
                    - unspecified
                    type: string
                  unit_amount:
                    type: integer
                  unit_amount_decimal:
                    format: decimal
                    type: string
                required:
                - currency
                - product
                title: price_data
                type: object
              quantity:
                type: integer
              tax_rates:
                anyOf:
                - items:
                    maxLength: 5000
                    type: string
                  type: array
                - enum:
                  - ''
                  type: string
            title: line_item_update_params
            type: object
          type: array
        metadata:
          additionalProperties:
            type: string
          description: Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
          type: object
        on_behalf_of:
          anyOf:
          - type: string
          - enum:
            - ''
            type: string
          description: The account on behalf of which to charge.
        subscription_data:
          description: When creating a subscription or subscription schedule, the specified configuration data will be used. There must be at least one line item with a recurring price for a subscription or subscription schedule to be created. A subscription schedule is created if `subscription_data[effective_date]` is present and in the future, otherwise a subscription is created.
          properties:
            description:
              anyOf:
              - maxLength: 500
                type: string
              - enum:
                - ''
                type: string
            effective_date:
              anyOf:
              - enum:
                - current_period_end
                maxLength: 5000
                type: string
              - format: unix-time
                type: integer
              - enum:
                - ''
                type: string
            metadata:
              additionalProperties:
                type: string
              type: object
            trial_period_days:
              anyOf:
              - type: integer
              - enum:
                - ''
                type: string
          title: subscription_data_update_params
          type: object
        transfer_data:
          anyOf:
          - properties:
              amount:
                type: integer
              amount_percent:
                type: number
              destination:
                type: string
            required:
            - destination
            title: transfer_data_specs
            type: object
          - enum:
            - ''
            type: string
          description: The data with which to automatically create a Transfer for each of the invoices.
    GetQuotesQuoteRequest:
      type: object
      properties: {}
    PostQuotesQuoteAcceptRequest:
      type: object
      properties:
        expand:
          description: Specifies which fields in the response should be expanded.
          items:
            maxLength: 5000
            type: string
          type: array
    GetQuotesQuotePdfRequest:
      type: object
      properties: {}
    QuotesResourceQuoteList:
      type: object
      required:
      - data
      - has_more
      - object
      - url
      properties:
        data:
          items:
            $ref: '#/components/schemas/quote'
          type: array
        has_more:
          description: True if this list has another page of items after this one that can be fetched.
          type: boolean
        object:
          description: String representing the object's type. Objects of the same type share the same value. Always has the value `list`.
          enum:
          - list
          type: string
        url:
          description: The URL where this list can be accessed.
          maxLength: 5000
          pattern: ^/v1/quotes
          type: string
    PostQuotesRequest:
      type: object
      properties:
        application_fee_amount:
          anyOf:
          - type: integer
          - enum:
            - ''
            type: string
          description: The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account. There cannot be any line items with recurring prices when using this field.
        application_fee_percent:
          anyOf:
          - type: number
          - enum:
            - ''
            type: string
          description: A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. There must be at least 1 line item with a recurring price to use this field.
        automatic_tax:
          description: Settings for automatic tax lookup for this quote and resulting invoices and subscriptions.
          properties:
            enabled:
              type: boolean
          required:
          - enabled
          title: automatic_tax_param
          type: object
        collection_method:
          description: Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or at invoice finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`.
          enum:
          - charge_automatically
          - send_invoice
          type: string
        customer:
          description: The customer for which this quote belongs to. A customer is required before finalizing the quote. Once specified, it cannot be changed.
          maxLength: 5000
          type: string
        default_tax_rates:
          anyOf:
          - items:
              maxLength: 5000
              type: string
            type: array
          - enum:
          

# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stripe/refs/heads/main/openapi/stripe-quotes-api-openapi.yml