> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.solvimon.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.solvimon.com/_mcp/server.

# create_quote

**Live server:** on `mcp.solvimon.com` only the draft actions are available, see [Access modes](/mcp-server/developing-for-solvimon#access-modes).

Builds a `DRAFT` quote in one call: the quote, its first version, the quote subscription and its schedule, plus discounts, commitments, add-ons, price overrides, entitlements, direct pricings and ramp steps.

Run it with `mode: validate` (the default) first: it resolves the owner and checks the customer, plan version, contact, dates and terms with zero writes. Call `mode: apply` once the rep has agreed the summary. Pass `quote_id` to finish a quote that failed or timed out part-way; a resume that would change the term, start date, owner or payment term is refused with the `write_quote` call that changes it.

| Parameter                                          | Required                          | Description                                                                                                                           |
| -------------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `customer_id`                                      | Yes                               | Customer the quote is for                                                                                                             |
| `pricing_plan_version_id`                          | Yes                               | An `ACTIVE` plan version                                                                                                              |
| `owner_user_id` or `owner_email`                   | No                                | The Solvimon user who owns the quote. A signed-in user who names nobody owns it.                                                      |
| `mode`                                             | No                                | `validate` (default) or `apply`                                                                                                       |
| `billing_period`                                   | When the version declares several | Never picked for you                                                                                                                  |
| `billing_currency`, `pricing_currency`             | No                                | `pricing_currency` defaults to the version's default, with a warning                                                                  |
| `initial_term`, `renewal_term`                     | No                                | `{type, value}`                                                                                                                       |
| `auto_renewal`                                     | No                                | `true` or `false`                                                                                                                     |
| `start_at`, `end_at`, `expires_at`                 | No                                | ISO 8601 dates. `start_at` is required with a ramp or an upgrade.                                                                     |
| `due_date_configuration`                           | No                                | The payment term, see [Payment terms](/mcp-server/tools/quote-features#payment-terms)                                                 |
| `discount`, `commitment`                           | No                                | Schedule shape: every element is a list item with an `ids` array                                                                      |
| `enabled_pricing_ids`                              | No                                | Add-on pricings to enable                                                                                                             |
| `overrides`                                        | No                                | Price overrides, see [Price overrides](/mcp-server/tools/quote-features#price-overrides)                                              |
| `entitlements`                                     | No                                | Negotiated feature values, see [Entitlement overrides](/mcp-server/tools/quote-features#entitlement-overrides)                        |
| `direct_pricings`                                  | No                                | Products the plan doesn't carry, see [Direct pricing](/mcp-server/tools/quote-features#direct-pricing)                                |
| `ramp`                                             | No                                | Later steps of a ramp, see [Ramps](/mcp-server/tools/quote-features#ramps)                                                            |
| `upgrade_from_subscription_id`                     | No                                | Quote an upgrade of a running subscription, see [Upgrade quotes](/mcp-server/tools/quote-features#upgrade-quotes)                     |
| `quote_template_id`                                | No                                | Template. One ACTIVE template is used automatically; with several, the call lists them so the rep chooses. `"none"` uses no template. |
| `name`, `contact_id`, `reference`, `custom_fields` | No                                | Quote name, contact, subscription reference, quote custom field values                                                                |

**`Validate a quote with a 20% discount`**

```json Validate a quote with a 20% discount
{
  "customer_id": "cust_AbD3DqausjOYiMNDZY11F",
  "pricing_plan_version_id": "ppve_Zt6yUw2QmK9nXr4VcHb37",
  "owner_email": "rep@acme.com",
  "billing_currency": "EUR",
  "initial_term": {"type": "MONTH", "value": 12},
  "discount": {"totals": [{"percentage": "20"}]},
  "mode": "validate"
}
```

The result tells the agent what to act on:

* `payment_term_default`: no payment term was passed, so Solvimon's default applies.
* `customer_incomplete`: a DRAFT customer misses legal details. Fill them with `write_customer`.
* `customer_has_active_subscription`: check whether this should be an upgrade quote.
* `apply` returns `approval`, Solvimon's evaluation of what finalizing would need. Both modes return `entitlements` and `available_in_addons`.

> **Note**
>
> `create_quote` stops at `DRAFT` on purpose. Finalizing, accepting, rejecting and converting to a subscription are separate steps for a human to decide, done with [`write_quote`](/mcp-server/tools/write-quote) or in Desk.