> For the complete documentation index, see [llms.txt](https://orbit-b2b.gitbook.io/orbit-b2b-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://orbit-b2b.gitbook.io/orbit-b2b-docs/quotes-rfq/request-flow.md).

# How a buyer requests a quote

This is what your customer sees from the moment they click **Request a Quote** to the moment they receive your reply.

## 1. The button on the product page

Logged-in B2B customers (per your eligibility rule) see a **Request a Quote** button below the Buy buttons. The label is editable per language under **Settings → Storefront Text → Quote**.

## 2. Click → modal opens

The button opens a modal **on the same product page** — no redirect, no checkout interruption. The modal shows:

* All variants of the current product as rows
* The buyer's contact info already filled in (name + email) for logged-in customers
* An optional message box
* Optional file attachment (PDF / JPG / PNG, max 2 MB)

## 3. Set quantities + target prices

The buyer enters a quantity on the variants they want to quote. Rows with quantity 0 are skipped.

For each row they can suggest a target price (optional). Leave it blank and the modal pre-fills the current catalog price as a starting point.

Other optional fields appear if enabled in Quote settings:

* Needed-by date
* PO number
* Tax / VAT ID

## 4. Submit

When the buyer clicks **Submit quote request**:

* The app validates email + at least one variant has quantity > 0
* It checks eligibility against the customer's Shopify tags (your rule from Quote settings)
* Auto-reject rules apply — too-low target price or too-low quantity gets a polite rejection message
* A new quote is created with status **Pending** in your Quotes inbox
* You receive a **New quote request** email
* Buyer is redirected to their quote detail page, status **Pending — Waiting for a reply**

## 5. Buyer waits for your reply

Logged-in buyers see all their quotes in the [B2B Customer Portal](/orbit-b2b-docs/b2b-customer-portal/my-quotes.md) at `/apps/orbit-boost-wholesale/portal/quotes`. An individual quote also opens directly at `/apps/orbit-boost-wholesale/quotes/<id>` (used by email deep links and buyers who aren't in the portal). Or they wait for the **Quote update** email and click the link.

While the quote is Pending, the buyer can only view — Accept / Decline / Send reply buttons appear only once you have replied with prices.

## Behind the scenes

* The block reads the customer's info from Liquid (`{{ customer }}`) so the modal pre-fills without any extra API call.
* For customers using Shopify's new customer accounts, the backend falls back to looking up the customer by email when the App Proxy doesn't pass an ID.
* Customer tags are validated again on the server so the frontend cannot bypass your B2B-only rule by editing the page.

## Next steps

* [How you reply with prices](/orbit-b2b-docs/quotes-rfq/reply-flow.md)
* [Payment terms — Net 30 / PDF invoice](/orbit-b2b-docs/quotes-rfq/payment-terms.md)


---

# 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://orbit-b2b.gitbook.io/orbit-b2b-docs/quotes-rfq/request-flow.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.
