---
title: "Create Quote"
method: POST
path: "/api/v1.1/quote/create"
tags: ["CRM Integration"]
---

# Create Quote

`POST /api/v1.1/quote/create`

## Request

- Base URL: `https://api.dealhub.io`
- URL: `https://api.dealhub.io/api/v1.1/quote/create`
- Auth: HTTP bearer

Creates a new quote in DealHub and returns a URL to redirect the user to. This is a client-side call that must be authenticated with the one-time access token obtained from the `/user/authenticate` endpoint. This version supports subscription renewals via the `repeatable_groups` parameter.

## Request body

- CreateQuoteRequest: A schema representing the data that can be sent to create or update an opportunity and its related quote.
  - `external_opportunity_name` string, required: CRM opportunity name.
  - `opportunity_owner` UserInformation
    - `external_user_id` string, required: CRM user ID (employee of the organization that integrates with DealHub).
    - `login` string: Login of the user. If a new user is created and login is not provided, the email will be used as the login.
    - `email` string, email, required: Primary email of the user.
    - `name` string, required: User's full name.
    - `position` string: The role of the user in the organization (job title).
    - `phone` string: User's phone number.
    - `mobile` string: User's mobile phone number.
    - `company` string: User's company name.
    - `street` string: Street name.
    - `city` string: City name.
    - `state` string: State name.
    - `country` string: Country name.
    - `postal_code` string: Postal code.
    - `user_manager_login` string: Login of the user's manager.
  - `external_quote_id` string: CRM quote ID.
  - `external_customer_id` string, required: CRM customer ID (buyer account).
  - `customer_name` string, required: CRM customer name.
  - `customer_shipping_address` Address
    - `street` string: Street name.
    - `city` string: City name.
    - `state` string: State name.
    - `country` string: Country name.
    - `postal_code` string: Postal code.
  - `customer_billing_address` Address
    - `street` string: Street name.
    - `city` string: City name.
    - `state` string: State name.
    - `country` string: Country name.
    - `postal_code` string: Postal code.
  - `customer_contacts` Contact[]: List of customer contacts.
    - `salutation` string: Salutation (e.g., Mr., Ms.).
    - `first_name` string, required: First name of the contact.
    - `last_name` string, required: Last name of the contact.
    - `title` string: Job title of the contact.
    - `email` string, email, required: Primary email of the contact.
    - `phone` string: Phone number of the contact.
    - `account_name` string: Name of the contact's company.
    - `mailing_address` string: Postal address of the contact person.
    - `primary_contact` boolean: Flag indicating if this is the primary contact.
  - `geo_code` string, required: Geographic code.
  - `currency` string, required: The currency ISO code. This is immutable once an opportunity/quote is created.
  - `custom_fields` CustomField[]: A list of custom fields, where each object contains a key/value pair. This parameter supports the following data types: * `Numeric`: A single numeric value. An empty value will be treated as `0`. * `Text`: The value is captured and presented to the user exactly as received. The `value` field must be an array with a single string. * `Text list`: Can contain one or more values. This can be used in two modes: * Single-select: Only one value can be chosen from the list. * Multi-select: Multiple values from the list can be selected. * `UTC`: A date and time value. The format must be `yyyy-mm-dd`. An empty value will be treated as `NULL`.
    - `name` string, required: The name of the custom field, which must be pre-configured in the DealHub version.
    - `value` union, required: The value of the custom field. The format depends on the field type configured in DealHub: * `Text`: Must be sent as an array containing a single string, for example, `["renewal_opportunity"]`. Sending a plain string will not be accepted. * `Text list`: An array of one or more string values. * `Numeric`: A single numeric value. * `UTC`: A date string in `yyyy-mm-dd` format.
      - string[]
      - number
      - string[]
  - `repeatable_groups` object[]: Used for subscription renewals. The system will attempt to render this data into the playbook; items that cannot be rendered will be ignored without error.
    - `group_id` string, required
    - `questions` object[], required
  - `dealhub_user_id` string, required: ID of the user in the DealHub system (as returned from the Authentication request).
  - `external_opportunity_id` string, required: CRM opportunity ID.
  - `version_id` string: For admin use only. DealHub version ID. If not specified, the system will use the active version.

## Response `200`

Request accepted.

- RedirectResponse
  - `url` string, uri: The URL to which the user's browser should be redirected.
  - `errors` string[]

## Other responses

- `400`: Bad Request.
- `403`: Unauthenticated. The one-time access token is missing, invalid, or expired.

---

[API](https://skmtc.dev/dealhub/apis/crm-api.md) - [All operations](https://skmtc.dev/dealhub/apis/crm-api/llms.txt) - [OpenAPI document](https://skmtc.dev/dealhub/apis/crm-api/revisions/b9e9ae2a98b5?raw)
