> This page is for Developer.

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

# Quotes

B2B Edition sales quotes allow you to build tailored orders on behalf of your B2B buyers, B2C customers, and guest shoppers while also incorporating your business's terms and conditions.

With sales quotes, you can make customizations that are not available for buyers on your storefront, such as:

* Custom line item pricing and discounts, which can be optionally hidden from the recipient
* Offering custom products, catalog-only items, or items that are currently out of stock for typical checkouts
* Unique shipping methods for orders that require special considerations, such as LTL Freight
* Expiration dates to ensure the quote is purchased in a given time period

The Quotes API provides a variety of endpoints for managing the different steps of the backend quoting process. You can create and update sales quotes, add shipping methods, generate cart and checkout URLs, and retrieve detailed information.

The Quotes API is also known as *Request for Quote*, and endpoint URLs are formatted as `/rfq` instead of `/quotes`.

## Custom Shipping

B2B Edition supports the ability to supply custom shipping methods and rates on sales quotes. This is helpful for adding accurate shipping costs to quotes with shipping dimensions or destinations that may not be supported in your standard checkout.

Custom shipping can be enabled from **Settings > Quotes** in your B2B Edition control panel. This is required for the following endpoints:

* [Get All B2B Quote Custom Shipping Methods](/developer/api-reference/rest/b2b/management/quotes/get-rfq-quote-id-custom-shipping)
* [Select a Shipping Rate for a Quote](/developer/api-reference/rest/b2b/management/quotes/rfq-quote-id-select-shipping-rate) (if you are adding a custom shipping rate)
* [Remove Selected Shipping Rate from a Quote](/developer/api-reference/rest/b2b/management/quotes/rfq-quote-id-delete-shipping-rate) (if you are removing a custom shipping rate)

See [B2B Edition Settings (Help Center)](https://support.bigcommerce.com/s/article/B2B-Edition-Settings) to learn more about enabling and configuring custom shipping methods.

## Custom Items

Non-purchasable products are added to sales quotes as *custom items*.

A custom item is a one-time line item which uses the SKU and pricing of the selected product, but not the product's ID. Note that the missing product ID can cause downstream issues if you have an external integration which uses the ID to sync information and events.

Custom items can be added to a quote via the [Create a Quote](/developer/api-reference/rest/b2b/management/quotes/post-rfq) and [Update a Quote](/developer/api-reference/rest/b2b/management/quotes/put-rfq-quote-id) endpoints. In order to use custom items, your store must meet the following prerequisites:

* Your store must use the Buyer Portal experience.
* You must enable custom items from **Settings > Quotes** in your B2B Edition control panel.
* Custom shipping must also be enabled in order to add shipping methods and rates to the quote.

To learn more about custom items and their considerations, see [Order Management and Sales Representative Functions (Help Center)](https://support.bigcommerce.com/s/article/B2B-Edition-Sales-Representative-Functions). For information on enabling custom items, see [B2B Edition Settings (Help Center)](https://support.bigcommerce.com/s/article/B2B-Edition-Settings).

## Quote Statuses

Sales quotes have seven different statuses corresponding to the different parts of a quote's life cycle.

Each status is assigned a numeric ID, which appears in the `status` field of the response body when using the [Get All Quotes](/developer/api-reference/rest/b2b/management/quotes/get-rfq) and [Get Quote Details](/developer/api-reference/rest/b2b/management/quotes/get-rfq-quote-id) endpoints. You can also use a quote's `status` as a parameter of the [Get All Quotes](/developer/api-reference/rest/b2b/management/quotes/get-rfq) endpoint in order to filter for quotes in a specific status.

See the table below for information on each quote status, as well as its corresponding `status` code.

| Status Name         | Description                                                                                   | Status ID |
| ------------------- | --------------------------------------------------------------------------------------------- | --------- |
| New                 | The quote was created from the Buyer Portal and has not been processed yet.                   | 0         |
| In Process          | The quote was created by a member of your staff and submitted back to the buyer.              | 2         |
| Updated by customer | The buyer sent a message from the quote.                                                      | 3         |
| Ordered             | The quote was purchased from the storefront or manually converted into an order.              | 4         |
| Expired             | The quote was not purchased before its expiration date.                                       | 5         |
| Archived            | The quote is hidden from the Quotes area of the Buyer Portal and cannot be purchased.         | 6         |
| Draft               | The quote was started by a member of your staff, but has not yet been submitted to the buyer. | 7         |

## Archiving a quote

To archive a quote programmatically, send a `PUT` request to [Update a Quote](/developer/api-reference/rest/b2b/management/quotes/put-rfq-quote-id) with a body of `{"status": "archived"}`. Archiving is idempotent: sending the same request for a quote that is already archived returns a `200` response without re-archiving.