> For the complete documentation index, see [llms.txt](https://developer.emporix.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.emporix.io/frontend/commerce-examples/quote-process.md).

# Quotes

Very often customers want to negotiate the price regarding the products they want to buy. For such a process, it is important that an e-commerce platform supports a more sophisticated process. Requesting a quote is a common use case especially for B2B business model, but within the Emporix platform, the quotes for B2C customers are also supported.

Below you can see the general, simplified flow:

```mermaid
---
config:
  layout: fixed
  theme: neutral
  look: classic
---
flowchart LR
  A["`**Customer**<br><br>Browses products<br>and adds to cart`"]
  B["`**Customer**<br><br>Requests quote<br>from cart`"]
  C["`**Quote Created**<br><br>Status:<br>Creating`"]
  D["`**Employee**<br><br>Reviews and<br>approves quote`"]
  E["`**Quote Open**<br><br>Status:<br>Open`"]
  F["`**Customer**<br><br>Accepts<br>the quote`"]
  G["`**Order Created**<br><br>From the<br>accepted quote`"]

  A:::Class_04
  B:::Class_04
  C:::Class_05
  D:::Class_04
  E:::Class_05
  F:::Class_04
  G:::Class_05

  A --> B
  B --> C
  C --> D
  D --> E
  E --> F
  F --> G

  classDef Class_04 fill:#F2F6FA, stroke:#E86C07, rx:10px, ry:10px, stroke-width: 2px, height: 150px
  classDef Class_05 fill:#E8F4FD, stroke:#0066CC, rx:10px, ry:10px, stroke-width: 2px, height: 150px
```

Not only the customer is able to request quotes, but also the merchant's employee or a sales manager can generate a quote on behalf of the customer. This is described step by step in the 2nd demo scenario - [Employee creates quote on behalf of a customer](#employee-creates-quote-on-behalf-of-a-customer).

Roles included:

* B2B or B2C customer
* Merchant employee who needs to accept or decline a quote request

### A customer (B2B or B2C) requests a quote

This is a step-by-step description of the quoting process within the B2B Commerce Frontend and what to look for in detail.

{% stepper %}
{% step %}

#### Viewing and selecting products

The customer browses products by categories or use the search bar to find the product which they want to add to the cart.
{% endstep %}

{% step %}

#### Adding the product to cart

The customer chooses the product they want to order and adds it to cart.

The customer can change the quantity, for example to 3 before adding the product to cart.

**Result**: The summary screen is displayed:

<figure><img src="/files/tj5PsiXaniTDCgCSq4b8" alt="Shopping cart with quote request option"><figcaption><p>Shopping cart with quote request option</p></figcaption></figure>
{% endstep %}

{% step %}

#### Deciding on the quantity

Within the cart the customer can still change the quantity of the items. If they change it, the recalculation of the cart takes place.
{% endstep %}

{% step %}

#### Creating the quote

The customer chooses the **Request quote** button. They can provide custom quote reference name/number and additional comments that are relevant for merchants or approvers to process the quote.

<figure><img src="/files/CJzst5yWJ2VOt5aeF0EV" alt="Quote request form"><figcaption><p>Quote request form</p></figcaption></figure>

**Result**: The customer gets notification about a submitted request and the quote is already visible in their account.

To see the quote overview, the customer can go to the **Quotes** view and choose the quote they want to check.

<figure><img src="/files/jkIIr8IJJNmzWkaRP54j" alt="Quote details page"><figcaption><p>Quote details page</p></figcaption></figure>
{% endstep %}

{% step %}

#### Reviewing by employee

As an employee, open the Management Dashboard and go to **Quotes**, the quotes overview page is displayed.

* The created quote is displayed with the **Awaiting** status.
* The merchant employee is informed by email that a customer created a quote request. The corresponding sales representative or a customer service employee can then work on the quote request quickly.
  {% endstep %}

{% step %}

#### Opening the quote

Check the quote details, prices and discounts. Go to the **Approval** tab and choose **Approve quote** to accept the quote. You can add a comment from a merchant perspective if needed.

**Result**: The quote request from customer is accepted by the merchant and the quote status changes from **Creating** to **Open**.

<figure><img src="/files/eUlcIMRcGcNrrDDX1P0J" alt="Quote view in Management Dashboard with open status"><figcaption><p>Quote view in Management Dashboard with open status</p></figcaption></figure>

{% hint style="success" %}
It is possible to work on quotes in Management Dashboard and to update them anytime needed. For details on how to work with quotes in MD, see [Quotes](/ce/management-dashboard/quotes/quotes-view.md) documentation.
{% endhint %}
{% endstep %}

{% step %}

#### Accepting the quote by a customer

The customer goes to the **Quotes** view. The requested quote has the **Open** status as well.

The customer opens the details of the quote and can decide if they want to accept the quote, decline it, or request changes.

<figure><img src="/files/XTH1P0Stvie6005q1BHV" alt="Quote details page in customer account"><figcaption><p>Quote details page in customer account</p></figcaption></figure>

In case they request a change or decline the quote, they have to select a change or decline reason with an additional explanation.

<figure><img src="/files/adZ8HlaKP1HYSpOqSHp9" alt="Requesting changes in quote offer" width="300"><figcaption><p>Requesting changes in the quote offer</p></figcaption></figure>

In case the customer accepts the quote, the status of the quote is updated within the frontend and also in the Management Dashboard and an order is created.

* Frontend - customer account

  <figure><img src="/files/ZE8VHur7NpjroQye2wUQ" alt="Accepted quote view in customer account"><figcaption><p>Accepted quote view in customer account</p></figcaption></figure>
* Backend status - Management Dashboard

  <figure><img src="/files/MNOSD6fVn1q1NT9wXHt0" alt="Accepted quote view in Management Dashboard"><figcaption><p>Accepted quote view in Management Dashboard</p></figcaption></figure>

**Result** The accepted quote creates an order - the order link is visible in the details.

<figure><img src="/files/7JqQjqIx0mBg4Hcx3jBh" alt="Order created from accepted quote"><figcaption><p>Order created from accepted quote</p></figcaption></figure>
{% endstep %}
{% endstepper %}

### Employee creates quote on behalf of a customer

It is possible for you as an employee to create a quote on behalf of the customer in the Management Dashboard. For example, a customer calls a customer service department and asks for a specific quote.\
To create the quote on their behalf, you need to be logged in to the Management Dashboard as an employee and follow the steps described in the [Quotes - Creating a quote](/ce/management-dashboard/quotes/quotes-view.md#creating-a-quote) guide.

**Result**: After you follow the steps and click the **Create Quote** button at the end, the quote is created with the **Open** status and a notification is sent to the customer by email, including the PDF with quote details. The customer can accept or decline the quote as described under Customer requests.

{% hint style="info" %}
To learn more about API used in this use case see the [Quote Service](/api-references/api-guides/quotes.md) and for user guides check the [Quotes](/ce/management-dashboard/quotes.md) and the [Quote Management](/ce/core-commerce/quote-management.md) documentation.
{% endhint %}

### Quote Approval Process

For B2B scenarios, you can enable the internal approval process for accepting quotes on the customer's side. When the quote approval flow is applied, then only authorized customers can accept open quotes. The approval flow is based on customer group assignment.

* **Requester** – Cannot accept quotes independently. Always needs approval. If the quote total is within the company purchasing limit, a **Buyer** or **Admin** can approve; if it exceeds the limit, only an **Admin** can approve.
* **Buyer** – Can accept quotes within the company purchasing limit. If the quote exceeds the limit, approval from an **Admin** is required.
* **Admin** – Can accept any quote without additional approval.

#### Prerequisites

* Make sure the customers have the right permissions level:
  * Assign customers to the correct groups (*Admin*, *Buyer*, *Requester*).
  * Configure company **purchasing limits** under **Customer Management** → **Companies** → **Policies**.
* To enable the quote approval process, turn on the **Enable quote approval process** setting (`approval.enableQuoteApprovalProcess`) under **Settings** -> **System Preferences** in the Management Dashboard.

{% hint style="info" %}
Changes may take up to 30 minutes to apply because of system caching.
{% endhint %}

#### Approval flow

When quote approval is enabled, some quotes placed by Requestors or Buyers (depending on the company limits) require additional authorization from eligible customers. The flow below describes the path when approval from another person is required.

{% stepper %}
{% step %}

#### Quote generation

The customer or employee creates a quote request.
{% endstep %}

{% step %}

#### Setting price by an employee

The merchant employee establishes the pricing for the quote in the Management Dashboard.
{% endstep %}

{% step %}

#### Quote negotiations

The customer and employee engage in iterative negotiations until the quote reaches **Open** status.
{% endstep %}

{% step %}

#### Inquiring for quote approval

If the customer lacks permission to accept a quote (based on their customer group and the company purchasing limit), they can request approval from the authorized person by selecting **Inquire Approval**.

<figure><img src="/files/IeizPXavnR8NE0aoTwAJ" alt="Requesting quote approval"><figcaption><p>Requesting quote approval</p></figcaption></figure>
{% endstep %}

{% step %}

#### Approver selection

The customer picks the person to approve their quote from the approvers list. The quote remains in the **Pending** status.

<figure><img src="/files/ZoPxuh8KDN9fffOtDUfP" alt="Selecting approver person for the quote" width="300"><figcaption><p>Selecting approver person for the quote</p></figcaption></figure>
{% endstep %}

{% step %}

#### Quote acceptance by approver

The selected approver sees the quote in the **Approvals** view. They can decide if they accept or decline the quote.

<figure><img src="/files/aSAlt5voI1tqOkRkRIB3" alt="Quote pending approval"><figcaption><p>Quote pending approval</p></figcaption></figure>

<figure><img src="/files/8Cz6QrdfNPww8k2whUJ7" alt="Accepting the quote by eligible approver"><figcaption><p>Accepting the quote by eligible approver</p></figcaption></figure>
{% endstep %}

{% step %}

#### Order creation

The order is created after the customer or approver completes the acceptance.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
For more details, see [Approvals](/frontend/customer-account/dashboard-overview/approvals.md) in the customer account and the [Approvals](/ce/core-commerce/customer-management/approvals.md) overview in Core Commerce.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.emporix.io/frontend/commerce-examples/quote-process.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
