For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Dev Portal
DocsAPI ReferenceLearnCommunityChangelog
DocsAPI ReferenceLearnCommunityChangelog
    • About Our APIs
  • REST
    • Overview
      • Overview
      • Storefront
      • Management
        • Overview
          • Addresses
          • Authentication
          • Channels
          • Company
          • Invoice Management
          • Orders
          • Payment
          • Quotes
            • GETList Quotes
            • POSTCreate Quote
            • GETList B2B Quote Custom Shipping Methods
            • POSTSend Quote Email
            • GETList Quote Extra Fields Configs
            • GETGet Quote Details
            • PUTUpdate Quote
            • DELDelete Quote
            • POSTGenerate Cart and Checkout URL for Quote
            • POSTAssign Quote to BigCommerce Order
            • POSTExport Quote PDF
            • PUTSelect Shipping Rate for Quote
            • DELRemove Selected Shipping Rate from Quote
            • GETGet Available Shipping Rates for Quote
          • Sales Staff
          • Shopping List
          • Super Admin
          • Users
  • GraphQL
    • Overview
  • MCP
    • Overview
Dev Portal
LogoLogo
RESTB2BManagementQuotes

Create Quote

POST
https://api-b2b.bigcommerce.com/api/v3/io/rfq
POST
/api/v3/io/rfq
$curl -X POST https://api-b2b.bigcommerce.com/api/v3/io/rfq \
> -H "X-Auth-Token: <apiKey>" \
> -H "Content-Type: application/json" \
> -d '{
> "productList": [
> {
> "options": [],
> "sku": "SAN-PL",
> "basePrice": 25,
> "discount": 20,
> "offeredPrice": 20,
> "quantity": 50,
> "productId": 54321,
> "variantId": 12345,
> "imageUrl": "https://mybcstore.com/sansiveria.jpg",
> "orderQuantityMaximum": 0,
> "orderQuantityMinimum": 0,
> "productName": "Sansiveria Plant"
> },
> {
> "options": [
> {
> "optionId": 1234,
> "optionName": "Color",
> "optionLabel": "Ocean",
> "optionValue": 98765
> }
> ],
> "sku": "CER-POT-2-GR",
> "basePrice": 55,
> "discount": 10,
> "offeredPrice": 49.5,
> "quantity": 10,
> "imageUrl": "https://mybcstore.com/ocean-planter.jpg",
> "productId": 63261,
> "variantId": 54321,
> "productName": "The Planter by Rustic Roots"
> }
> ],
> "totalAmount": 1495,
> "allowCheckout": true,
> "bcCustomerId": 98765,
> "channelId": 1,
> "companyId": 11111111,
> "contactInfo": {
> "name": "Marie Curie",
> "email": "mcurie@greatbuysinc.com",
> "companyName": "Great Buys Incorporated",
> "phoneNumber": "512-200-1234"
> },
> "currency": {
> "token": "$",
> "location": "left",
> "currencyCode": "USD",
> "decimalToken": ".",
> "decimalPlaces": 2,
> "thousandsToken": ","
> },
> "discount": 0,
> "displayDiscount": false,
> "expiredAt": "05/07/2025",
> "extraFields": {
> "fieldName": "I want a sales representative to call me at the provided phone number.",
> "fieldValue": "Yes"
> },
> "grandTotal": 1495,
> "legalTerms": "Thank you for the opportunity to provide this quote! Please note the following:\n - Quotes are valid for 30 days unless otherwise stated.\n - Pricing is subject to change at any time.\n - Please note, the shipping and tax quoted are estimates only. Final shipping and tax will be calculated during checkout and may be billed post sale.\n - Due to fluctuating shipping rates, LTL shipping calculations are only estimates. Final LTL rates will be determined by quote upon shipment and may be billed post sale. Also, if a lift gate is required an additional fee will apply if not included in this quote.\n - Please contact your Technical Sales Representative, call 877-567-3598, or email sales.rep@mybcstore.com for assistance.",
> "message": "Hello Marie! I have submitted the quote you requested. Please review the notes and terms, and don'\''t hesitate to reach out with any questions.",
> "notes": "Use the in-quote messaging system to contact us about products, pricing, or other quote information.",
> "quoteTitle": "Plant and Planter Bulk Order",
> "referenceNumber": "03302025-0001",
> "shippingAddress": {
> "address": "512 Bluebonnet Lane",
> "apartment": "Building 100",
> "city": "Austin",
> "state": "Texas",
> "zipCode": "78704",
> "country": "United States"
> },
> "subtotal": 1495,
> "userEmail": "hero@mybcstore.com"
>}'
1{
2 "code": 200,
3 "message": "SUCCESS",
4 "data": {
5 "quoteId": 123456,
6 "quoteUrl": "https://mybcstore.com/quote/?id=195&date=1622618606"
7 }
8}
Creates a new sales quote and automatically submits it to the assigned buyer. While the B2B Edition control panel allows you to save a new quote as a draft without sending it to the buyer, quotes created with this endpoint are automatically visible in a Company user's Buyer Portal. However, you can give the `allowCheckout` a value of `false` to prevent the buyer from purchasing it immediately upon submission. ### Custom Products While you can create custom products from within a quote while creating or editing it in your B2B Edition control panel, you cannot create a custom product with this endpoint. Create a custom product while [creating or editing](https://support.bigcommerce.com/s/article/B2B-Edition-Quotes) a quote in the B2B Edition control panel, or by using the [Create a Product](/developer/api-reference/rest/admin/catalog/products/create-product) endpoint in the Catalog API. Obtain your newly-created product’s ID and add it to the `productId` field of the Create a Quote request body to include it in the quote. ### Minimum Required Fields In order to create a sales quote, the request body must include the following fields. Fields marked with an asterisk are only required under specific conditions. * `grandTotal` * `discount` * `subtotal` * `userEmail` * `expiredAt` * `contactInfo` * `name` * `email` * `companyId`* * `productList` * `sku` * `productId` * `basePrice` * `discount` * `offeredPrice` * `quantity` * `extraFields`* * `fieldName`* * `fieldValue`* * `channelId`* The `companyId` field is only required if you are linking a quote to an existing Company account. The `companyName` and `email` fields under `contactInfo` cannot be used to link a quote to a particular Company account or user. The optional `bcCustomerId` field links a quote to an existing registered non-company customer account. If both `companyId` and `bcCustomerId` are provided, `companyId` takes precedence. If neither is provided, the quote is created as a guest quote. The `contactInfo` object is display-only metadata. Customer association is determined solely by `bcCustomerId` and `companyId`; `contactInfo.email` and `userEmail` are not used to look up or validate the customer record. The `extraFields` array is only required if you have created Quote extra fields which are marked as required. To learn more about extra fields, see B2B Edition Settings (Help Center). The `channelId` field is required if you have multiple storefront channels. If you only have a single storefront, then you do not need to include it.
Was this page helpful?
Previous

List Quotes

Next

List B2B Quote Custom Shipping Methods

Built with

Creates a new sales quote and automatically submits it to the assigned buyer.

While the B2B Edition control panel allows you to save a new quote as a draft without sending it to the buyer, quotes created with this endpoint are automatically visible in a Company user’s Buyer Portal. However, you can give the allowCheckout a value of false to prevent the buyer from purchasing it immediately upon submission.

Custom Products

While you can create custom products from within a quote while creating or editing it in your B2B Edition control panel, you cannot create a custom product with this endpoint.

Create a custom product while creating or editing a quote in the B2B Edition control panel, or by using the Create a Product endpoint in the Catalog API. Obtain your newly-created product’s ID and add it to the productId field of the Create a Quote request body to include it in the quote.

Minimum Required Fields

In order to create a sales quote, the request body must include the following fields. Fields marked with an asterisk are only required under specific conditions.

  • grandTotal
  • discount
  • subtotal
  • userEmail
  • expiredAt
  • contactInfo
    • name
    • email
  • companyId*
  • productList
    • sku
    • productId
    • basePrice
    • discount
    • offeredPrice
    • quantity
  • extraFields*
    • fieldName*
    • fieldValue*
  • channelId*

The companyId field is only required if you are linking a quote to an existing Company account. The companyName and email fields under contactInfo cannot be used to link a quote to a particular Company account or user.

The optional bcCustomerId field links a quote to an existing registered non-company customer account. If both companyId and bcCustomerId are provided, companyId takes precedence. If neither is provided, the quote is created as a guest quote.

The contactInfo object is display-only metadata. Customer association is determined solely by bcCustomerId and companyId; contactInfo.email and userEmail are not used to look up or validate the customer record.

The extraFields array is only required if you have created Quote extra fields which are marked as required. To learn more about extra fields, see B2B Edition Settings (Help Center).

The channelId field is required if you have multiple storefront channels. If you only have a single storefront, then you do not need to include it.

Authentication

X-Auth-Tokenstring
| Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts). | For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).
X-Store-Hashstring
| Header | Argument | Description | |:-------|:---------|:------------| | `X-Store-Hash` | `store_hash` | The unique store hash associated with a BigCommerce store that has B2B Edition enabled. |

Request

This endpoint expects an object.
productListlist of objectsRequired
totalAmountdoubleRequired
The total price of the quote after any discounts.
allowCheckoutbooleanOptional
Determines whether or not the buyer can take the quote to the checkout page. If left blank, the quote uses the checkout selection in your Quote settings.
bcCustomerIdintegerOptional>=1

The BigCommerce customer ID to link the quote to a registered non-company customer account. Ignored when companyId is also provided. Returns a 404 error if the customer ID does not exist.

channelIdintegerOptionalDefaults to 1

The storefront channel ID associated with the quote. This is required if your store has multiple storefront channels. Use 1 for your store’s default storefront channel.

companyIdintegerOptional
The unique identifier for the Company account associated with the quote. This field is required when creating a quote for a Company account. If the company ID does not exist, the API returns a 404 error.
contactInfoobjectOptional
currencyobjectOptional
discountdoubleOptional
The total value of discounts applied to the quote.
displayDiscountbooleanOptional
Determines if buyers can see quoted discount values in the Buyer Portal, or if they only see the quoted prices. If left blank, the quote uses the discount display selection in your Quote settings.
expiredAtstringOptional

The date when the buyer can no longer purchase the quote. Use ‘%m/%d/%Y’ format when entering the expiration date.

extraFieldsobjectOptional
grandTotaldoubleOptional
The quoted total after discounts, shipping, and tax are applied. If you are updating the line items or discounts on a quote, you must also update the grand total to reflect the new pricing.
legalTermsstringOptional

The quote’s terms and conditions. Use the newline character to separate each line of text. Omitting this field or leaving it blank does not add your store’s default terms and conditions to the quote. Instead, the quote will not display any terms.

messagestringOptional

A message sent to the buyer via the in-quote messaging system.

notesstringOptional

The quote’s buyer-facing notes. Use the newline character to separate each line of text.

quoteTitlestringOptional
The external title given to the quote.
referenceNumberstringOptional
An identifier for the quote that can be supplied by the sales rep or the buyer, such as a Purchase Order number.
shippingAddressobjectOptional
subtotaldoubleOptional
The quoted total after discounts and before shipping and tax. If you are updating the line items or discounts on a quote, you must also update the subtotal to reflect the new pricing.
userEmailstringOptionalformat: "email"

The email address of the quote’s sales rep. Any user email found within the B2B Edition System Users menu is considered a valid value for this field.

This field is optional. If left blank, it will default to the store owner’s email address as shown in the B2B Edition System Users menu.

Response

OK
codeanyDefaults to 200
messagestringDefaults to SUCCESS
dataobject

Errors

404
Not Found Error
422
Unprocessable Entity Error
HeaderArgumentDescription
X-Auth-Tokenaccess_tokenFor more about API accounts that generate access_tokens, see our Guide to API Accounts.

For example requests and more information about authenticating BigCommerce APIs, see Authentication and Example Requests.

For more about BigCommerce OAuth scopes, see our Guide to API Accounts.

For a list of API status codes, see API Status Codes.

HeaderArgumentDescription
X-Store-Hashstore_hashThe unique store hash associated with a BigCommerce store that has B2B Edition enabled.