> 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.

# List Quotes

GET https://api-b2b.bigcommerce.com/api/v3/io/rfq

Retrieves basic information for all sales quotes in your store. Use the parameters to narrow your results, such as filtering by a date range or quotes from a specific Company account.

More detailed information, such as line items and shipping details, can be retrieved with the [Get Quote Details](#get-quote-details) endpoint.

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/b2b/management/quotes/get-rfq

## Authentication

- `X-Auth-Token` header (required) — | 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-Hash` header (required) — | Header | Argument | Description | |:-------|:---------|:------------| | `X-Store-Hash` | `store_hash` | The unique store hash associated with a BigCommerce store that has B2B Edition enabled. |

## Request

### Query parameters

- `offset` (integer, optional, default: 0) — The number of results to skip before returning the first result. If left blank, this defaults to `0`.
- `limit` (integer, optional, default: 10) — Determines the number of records to return per page. If left blank, this defaults to `10`.
- `sortBy` (enum, optional, default: updatedAt) — Sorts results by Company name (`company`), quote status (`status`), sales rep name (`salesRep`), creation date (`createdAt`), expiration date (`expiredAt`), or last updated date (`updatedAt`). It defaults to the last updated date if no parameter is provided.
  - Allowed values: `company`, `status`, `salesRep`, `createdAt`, `expiredAt`, `updatedAt`
- `orderBy` (enum, optional, default: desc) — Establish a descending or ascending order of results. The order defaults to descending if the parameter is not included.
  - Allowed values: `asc`, `desc`
- `q` (string, optional) — Enter quote information to return partial and exact matches. Accepted information fields include quote number, quote title, Company name, assigned sales rep, and Company user first and last name.
- `quoteNumber` (string, optional) — Enter a full or partial quote number to retrieve relevant quotes.
- `company` (string, optional) — Enter a full or partial Company name to retrieve relevant quotes.
- `salesRep` (string, optional) — The name of the sales rep assigned to the quote.
- `status` (enum, optional) — The backend status of the sales quote. Note that these are not the same as buyer-facing quote status. See [Quote Statuses](#quote-statuses) for more information.
  - Allowed values: `0`, `2`, `3`, `4`, `5`, `6`, `7`
- `quoteTitle` (string, optional) — The external title given to the quote.
- `createdBy` (string, optional) — The name of the sales rep or buyer who created the quote.
- `maxCreated` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes created before that time.
- `minCreated` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes created after that time.
- `maxModified` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes modified before that time.
- `minModified` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes modified after that time.
- `maxExpired` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes that expired before that time.
- `minExpired` (integer, optional) — Enter a [Unix timestamp](https://www.unixtimestamp.com/) to retrieve all quotes that expired after that time.
- `channelIds[]` (list of integer, optional, default: 1) — Enter one or more storefront channel IDs to retrieve quotes assigned to the storefront(s). Use 1 for your store’s default storefront channel. Separate channel IDs with a comma.

## Response

### 200

OK A 200 response has a body with information on all quotes based on the provided parameters. If there are no quotes that correspond to the provided parameter values, the endpoint still returns a 200 response, but the `data` array is empty.

- `code` (integer, optional, default: 200)
- `data` (list of quoteData_GET_ALL, optional)
- `meta` (RfqGetResponsesContentApplicationJsonSchemaMeta, optional)

## Errors

### 400 Bad Request Error

Bad Requests Error The 400 error occurs if the `channelIds` parameter is not formatted correctly. The parameter must be formatted as an array, and you must separate each channel ID value with a comma. An example of proper format is `?channelIds[]=1,12345678`.

- `code` (integer, optional, default: 400) — HTTP Response Code
- `data` (RfqGetResponsesContentApplicationJsonSchemaData, optional)
- `meta` (RfqGetResponsesContentApplicationJsonSchemaMeta, optional)

## Types

### quoteData_GET_ALL

- `quoteId` (integer, optional) — The internal numeric ID of the sales quote.
- `company` (string, optional) — The name of the Company account associated with the buyer on the quote. If the quote is for a B2C customer or guest shopper, this field is blank.
- `salesRep` (string, optional) — The sales rep user who last edited the quote.
- `updatedAt` (integer, optional) — The [Unix timestamp](https://www.unixtimestamp.com/) when the quote was last modified.
- `quoteNumber` (string, optional) — The quote identifier that is visible in the B2B Edition control panel and the Buyer Portal.
- `status` (enum, optional) — The numeric ID associated with the quote’s status. See [Quote Statuses](#quote-statuses) to learn about the statuses that correspond to each ID.
  - Allowed values: `0`, `2`, `3`, `4`, `5`, `6`, `7`
- `bcOrderId` (string, optional) — The BigCommerce order ID associated with the sales quote.
- `orderId` (string, optional) — The B2B Edition internal order ID. Note that this is different from the BigCommerce order ID returned in the `bcOrderId` field.
- `channelName` (string, optional) — The name of the storefront channel associated with the quote.
- `createdAt` (integer, optional) — The [Unix timestamp](https://www.unixtimestamp.com/) for when the sales quote was created. This is a read-only field.
- `expiredAt` (integer, optional) — The [Unix timestamp](https://www.unixtimestamp.com/) for when the sales quote expires. This is a read-only field.
- `createdBy` (string, optional) — The name of the sales rep or buyer who created the quote.
- `subtotal` (double, optional) — 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.
- `channelId` (integer, optional, default: 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.
- `quoteTitle` (string, optional) — The external title given to the quote.
- `referenceNumber` (string, optional) — An identifier for the quote that can be supplied by the sales rep or the buyer, such as a Purchase Order number.
- `currency` (QuoteDataGetAllCurrency, optional)
- `extraFields` (list of ExtraFieldsItems, optional) — Adds extra field information to the quote. This is required if your store has required quote extra fields. If you include the array in the request, you must include all of its fields.

### RfqGetResponsesContentApplicationJsonSchemaMeta

- `message` (string, optional, default: Bad Requests Error)

### RfqGetResponsesContentApplicationJsonSchemaData

- `channel_id_list` (list of list of string, optional)

### QuoteDataGetAllCurrency

- `token` (string, optional) — The currency symbol.
- `location` (enum, optional) — Determines whether the currency symbol is added to the left or the right of quote pricing.
  - Allowed values: `left`, `right`
- `currencyCode` (string, optional) — The three-letter code corresponding to the quote’s currency.
- `decimalToken` (string, optional) — The character used to separate decimal values in quote pricing.
- `decimalPlaces` (integer, optional) — The number of decimal places displayed in quote pricing. You can display a maximum of 4 decimal places.
- `thousandsToken` (string, optional) — The character used to separate the hundredths and thousandths places in quote pricing.
- `currencyExchangeRate` (double, optional) — Overrides the built-in exchange rate between your store’s default currency and the quote’s selected currency. If left blank, the exchange rate defined in your store’s settings is used.

### ExtraFieldsItems

- `fieldName` (string, optional) — The name of the quote extra field.
- `fieldValue` (string, optional) — The value of the quote extra field.

## Examples

**Response**

```json
{
  "code": 200,
  "data": [
    {
      "quoteId": 123456,
      "company": "Great Buys Incorporated",
      "salesRep": "Isaac Newton",
      "updatedAt": 1722619778,
      "quoteNumber": "QN101234",
      "status": 0,
      "bcOrderId": "195",
      "orderId": "112495",
      "channelName": "b2B Store",
      "createdAt": 1622619778,
      "expiredAt": 1722619778,
      "createdBy": "Marie Curie",
      "subtotal": 1495,
      "channelId": 1,
      "quoteTitle": "Plates - Custom Etching",
      "referenceNumber": "03302025-0001",
      "currency": {
        "token": "$",
        "location": "left",
        "currencyCode": "USD",
        "decimalToken": ".",
        "decimalPlaces": 2,
        "thousandsToken": ",",
        "currencyExchangeRate": 1.34
      },
      "extraFields": [
        {
          "fieldName": "I want a sales representative to call me at the provided phone number.",
          "fieldValue": "Yes"
        }
      ]
    }
  ],
  "meta": {
    "message": "Success",
    "pagination": {
      "limit": 10,
      "offset": 0,
      "totalCount": 250
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api-b2b.bigcommerce.com/api/v3/io/rfq"

querystring = {"channelIds[]":"[1]","company":"Great Buys Incorporated","createdBy":"Marie Curie","maxCreated":"1741376113","maxExpired":"1741376113","maxModified":"1741376113","minCreated":"1741376113","minExpired":"1741376113","minModified":"1741376113","q":"Marie Curie","quoteNumber":"QN000035","quoteTitle":"Plates - Custom Etching","salesRep":"Isaac Newton","status":"4"}

headers = {"X-Auth-Token": "<apiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4';
const options = {method: 'GET', headers: {'X-Auth-Token': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("X-Auth-Token", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-Auth-Token"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4")
  .header("X-Auth-Token", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4', [
  'headers' => [
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4");
var request = new RestRequest(Method.GET);
request.AddHeader("X-Auth-Token", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["X-Auth-Token": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-b2b.bigcommerce.com/api/v3/io/rfq?channelIds%5B%5D=%5B1%5D&company=Great+Buys+Incorporated&createdBy=Marie+Curie&maxCreated=1741376113&maxExpired=1741376113&maxModified=1741376113&minCreated=1741376113&minExpired=1741376113&minModified=1741376113&q=Marie+Curie&quoteNumber=QN000035&quoteTitle=Plates+-+Custom+Etching&salesRep=Isaac+Newton&status=4")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```