---
title: "Create quote version"
method: POST
path: "/assistedSales/v1/quotes"
tags: ["AppResellerQuoteVersion"]
---

# Create quote version

`POST /assistedSales/v1/quotes`

## Request

- Base URL: `https://marketplace.appdirect.com/api`
- URL: `https://marketplace.appdirect.com/api/assistedSales/v1/quotes`
- Auth: none declared
- TypeScript: <https://skmtc.dev/appdirect/apis/companies/docs/assistedSales/v1/quotes/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates a quote version from a quote source

Required: Accept-Language header with Locale format. For example: en-US

## Request body

- QuoteVersionCreationRequest
  - `name` string: The name of the quote version
  - `createdBy` User, required
    - `id` string: User ID
    - `email` string: User email address
    - `firstName` string: User first name
    - `lastName` string: User last name
    - `company` object: User company
      - `id` string: Company ID
      - `name` string: Company name
      - `isReseller` boolean: Indicate if the company is reseller
  - `source` QuoteVersionSource, required
    - `id` string, required: The source ID
    - `type` 'OPPORTUNITY' | 'QUOTE_V2' | 'QUOTE_V1', required: The source type of the quote version

## Response `200`

Success

- QuoteVersion: The body of a quote version
  - `id` string: The ID of a quote version
  - `displayId` string: The display ID of a quote version in the format: 'Q + two_digits_random_number + five_digits_counter_value'. For example: 'Q3201230'
  - `name` string: The name of the quote version
  - `createdOn` number: The creation date of the quote version in UNIX Epoch milliseconds
  - `createdBy` User
    - `id` string: User ID
    - `email` string: User email address
    - `firstName` string: User first name
    - `lastName` string: User last name
    - `company` object: User company
      - `id` string: Company ID
      - `name` string: Company name
      - `isReseller` boolean: Indicate if the company is reseller
  - `status` string: The status of the quote version
  - `ownerUser` User
    - `id` string: User ID
    - `email` string: User email address
    - `firstName` string: User first name
    - `lastName` string: User last name
    - `company` object: User company
      - `id` string: Company ID
      - `name` string: Company name
      - `isReseller` boolean: Indicate if the company is reseller
  - `customerUser` User
    - `id` string: User ID
    - `email` string: User email address
    - `firstName` string: User first name
    - `lastName` string: User last name
    - `company` object: User company
      - `id` string: Company ID
      - `name` string: Company name
      - `isReseller` boolean: Indicate if the company is reseller
  - `currency` 'USD' | 'CAD' | 'EUR' | 'JPY' | 'GBP' | 'KRW' | 'CHF' | 'SEK' | 'SGD' | 'MYR' | 'AUD' | 'MXN' | 'INR' | 'BRL' | 'DKK' | 'NZD' | 'NOK' | 'ZAR' | 'PHP' | 'CNY' | 'SAR' | 'GTQ' | 'IDR' | 'ARS' | 'COP' | 'PEN': Supported currencies for the system
  - `pricingTotals` PricingTotals: Details about the taxes, subtotals, totals and recurring totals
    - `amountDueBeforeTax` string: The amount due before taxes
    - `amountDueAfterTax` string: The amount due after taxes
    - `taxSummary` TaxDetail[]: Details of a specific type of tax applied to a charged cost
      - `description` string: Description of the tax
      - `taxAmount` string: The tax amount
    - `recurringTotals` QuoteVersionTotalRecurring[]: The recurring total charges
      - `billingCycle` BillingCycle: The billing cycle
        - `period` 'ONE_TIME' | 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'SIX_MONTHS' | 'YEARLY' | 'TWO_YEARS' | 'THREE_YEARS': The pricing period. The billing frequency for the pricing plan.
        - `dayOfMonth` integer: Day of the month on which invoicing should be triggered
      - `totalSalePrice` string: The total sale price
      - `nextInvoiceDate` string: The next invoice date in the format YYYY-MM-DD
  - `items` Item[]: List of items
    - `id` string: Item ID
    - `parentItemId` string: The parent product's ID, which is only relevant and required for add-on products
    - `product` OpportunityProduct
      - `id` string: Product ID
      - `name` string: Product name
      - `type` string: Product type
      - `logo` string: Product logo URL
    - `pricingPlan` PricingPlan
      - `id` string: Pricing plan ID
      - `name` string: Pricing plan name
    - `pricing` OpportunityPricing[]: The cost and flat rates for each quantifiable unit
      - `costId` string: The cost ID
      - `costTypeCategory` 'RECURRING' | 'ONE_TIME', required: Category of cost
      - `costType` 'RECURRING_FLAT' | 'ONE_TIME_FLAT' | 'INCLUDED' | 'SETUP_PER_UNIT' | 'RECURRING_PER_UNIT' | 'ONE_TIME_PER_UNIT' | 'SETUP_FEE' | 'CONTRACT_FEE' | 'DISCOUNT_PER_UNIT' | 'DISCOUNT_FLAT' | 'METERED_USAGE', required: Type of cost
      - `frequency` 'ONE_TIME' | 'DAILY' | 'MONTHLY' | 'QUARTERLY' | 'SIX_MONTHS' | 'YEARLY' | 'TWO_YEARS' | 'THREE_YEARS': The pricing period. The billing frequency for the pricing plan.
      - `pricingStrategy` 'FREE' | 'FLAT' | 'UNIT' | 'VOLUME' | 'TIERED' | 'UNLIMITED' | 'CUSTOM', required: Pricing strategy
      - `priceRanges` PriceRangeItem[]: Range of units for which the price is valid
        - `min` string: Minimum number of units for the price range
        - `max` string: Maximum number of units for the price range
      - `description` string: Description of each pricing line
      - `unit` string: Unit
      - `quantity` string: Quantity
      - `salePrice` string, required: Sale price
      - `wholesalePrice` string, required: Wholesale price
      - `totalSalePrice` string, required: Total sale price
  - `quoteSource` QuoteVersionSource
    - `id` string, required: The source ID
    - `type` 'OPPORTUNITY' | 'QUOTE_V2' | 'QUOTE_V1', required: The source type of the quote version
  - `availableActions` string[]: The actions available for the quote version

## Other responses

- `401`: Unauthorized
- `404`: Not found

## Changes

- **2026-11-06** `1fc240f06971`: 6 breaking, 22 info
  - added the new required request property `createdBy`
  - added the new required request property `source`
  - the request's body type changed from no type to `object`
  - the response's body type changed from no type to `object` for status `200`
  - …24 more

[Operation history](https://skmtc.dev/appdirect/apis/companies/changes/assistedSales/v1/quotes/post.md)

---

[API](https://skmtc.dev/appdirect/apis/companies.md) - [All operations](https://skmtc.dev/appdirect/apis/companies/llms.txt) - [OpenAPI document](https://skmtc.dev/appdirect/apis/companies/revisions/1fc240f06971?raw)
