> 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 Available Currencies

GET https://api-b2b.bigcommerce.com/api/v2/stores/currencies

Returns a list of the currencies currently enabled on a BigCommerce store. If the `channelId` parameter is provided, the response will also include a list of currencies currently enabled for the associated storefront channel.

**Note:** This endpoint is available with or without a Bearer Token. To use the endpoint without a token, the `storeHash` parameter is required.

Equivalent Storefront GraphQL API Query: `currencies`. For more information, see the [GraphQL Playground](https://api-b2b.bigcommerce.com/graphql/playground).

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/b2b/storefront/store-settings/get-stores-currencies

## Authentication

- `Authorization` header (bearer token, required) — ### Authentication header | Header | Argument | Description | | :-------------- | :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Authorization` | `Bearer {{B2B_JWT_TOKEN}}` | You can obtain this token using the steps described in the [REST Storefront API](/developer/docs/b2b-edition/getting-started/authentication#rest-storefront-api) section\[...] |

## Request

### Query parameters

- `channelId` (string, optional) — The ID for a specific storefront channel. Including this parameter adds a list of channel-specific currencies to the response.
- `storeHash` (string, optional) — The unique store hash for the BigCommerce store. If a Bearer Token is provided with the request, the store's information is pulled using the token, and including the parameter will have no effect. If the Bearer Token is omitted this parameter is required to complete the request.

## Response

### 200

OK

- `code` (integer, optional, default: 200) — HTTP response code for the request.
- `message` (string, optional, default: SUCCESS) — Message indicating the status of the request.
- `data` (StoresCurrenciesGetResponsesContentApplicationJsonSchemaData, optional) — Data associated with the response.

## Errors

### 400 Bad Request Error

Bad Request This response is returned if neither the Bearer Token nor the `storeHash` parameter is provided.

- `code` (integer, optional, default: 400) — HTTP response code for the request.
- `message` (string, optional, default: bad request) — Message indicating the status of the request.

## Types

### StoresCurrenciesGetResponsesContentApplicationJsonSchemaData

Data associated with the response.

- `currencies` (list of StoresCurrenciesGetResponsesContentApplicationJsonSchemaDataCurrenciesItems, optional)
- `channelCurrencies` (StoresCurrenciesGetResponsesContentApplicationJsonSchemaDataChannelCurrencies, optional) — The list of currencies enabled on a specific channel. If the `channelId` parameter is **not** provided, this will return an empty object `{}`.
- `entered_inclusive_tax` (boolean, optional) — Indicates whether product prices were provided inclusive of sales tax. For more information, see [Tax Overview (Help Center)](https://support.bigcommerce.com/s/article/Tax-Overview).

### StoresCurrenciesGetResponsesContentApplicationJsonSchemaDataCurrenciesItems

- `id` (double, optional) — The unique ID for the currency within the BigCommerce store.
- `is_default` (boolean, optional) — Indicates whether the currency is set as the default for the store.
- `country_iso2` (string, optional) — The two-character ISO country code for the currency.
- `last_updated` (string, optional) — The date and time of the most recent update to the currency's settings.
- `default_for_country_codes` (list of string, optional) — The list of two-character ISO country codes for which the currency is the default.
- `currency_code` (string, optional) — The three-letter code corresponding to the currency.
- `currency_exchange_rate` (string, optional) — The exchange rate between your store’s default currency and the selected currency.
- `name` (string, optional) — The display name of the currency as shown on the storefront.
- `token` (string, optional) — The currency symbol.
- `auto_update` (boolean, optional) — Indicates whether the exchange rate is set to automatically update. The store's default currency will always return `false`.
- `token_location` (enum, optional) — Determines whether the currency symbol is added to the left or the right of pricing.
  - Allowed values: `left`, `right`
- `decimal_token` (string, optional) — The character used to separate decimal values in pricing.
- `thousands_token` (string, optional) — The character used to separate the hundredths and thousandths places in pricing.
- `decimal_places` (double, optional) — The number of digits to display after the decimal.
- `enabled` (boolean, optional) — Indicates whether the currency is currently visible on the storefront.
- `is_transactional` (boolean, optional) — Indicates whether the currency is transacting (`true`) or display (`false`). For more information see [Managing Currencies (Help Center)](https://support.bigcommerce.com/s/article/Managing-Currencies).

### StoresCurrenciesGetResponsesContentApplicationJsonSchemaDataChannelCurrencies

The list of currencies enabled on a specific channel. If the `channelId` parameter is **not** provided, this will return an empty object `{}`.

## Examples

### With Channel ID

**Response**

```json
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "currencies": [
      {
        "id": 2,
        "is_default": true,
        "country_iso2": "US",
        "last_updated": "Tue, 14 Feb 2023 21:02:15 +0000",
        "default_for_country_codes": [
          "US",
          "CA",
          "GB"
        ],
        "currency_code": "USD",
        "currency_exchange_rate": "1.3540000",
        "name": "US Dollar",
        "token": "$",
        "auto_update": true,
        "token_location": "left",
        "decimal_token": ".",
        "thousands_token": ",",
        "decimal_places": 2,
        "enabled": true,
        "is_transactional": true
      }
    ],
    "channelCurrencies": {
      "channel_id": 123456,
      "default_currency": "USD",
      "enabled_currencies": [
        "USD",
        "GBP",
        "IQD"
      ]
    },
    "entered_inclusive_tax": true
  }
}
```

**SDK Code**

```python With Channel ID
import requests

url = "https://api-b2b.bigcommerce.com/api/v2/stores/currencies"

querystring = {"channelId":"123456","storeHash":"abc123"}

headers = {"Authorization": "Bearer <token>"}

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

print(response.json())
```

```javascript With Channel ID
const url = 'https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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

```go With Channel ID
package main

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

func main() {

	url := "https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123"

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

	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby With Channel ID
require 'uri'
require 'net/http'

url = URI("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

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

```java With Channel ID
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp With Channel ID
using RestSharp;

var client = new RestClient("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift With Channel ID
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")! 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()
```

### Without Channel ID

**Response**

```json
{
  "code": 200,
  "message": "SUCCESS",
  "data": {
    "currencies": [
      {
        "id": 2,
        "is_default": true,
        "country_iso2": "US",
        "last_updated": "Tue, 14 Feb 2023 21:02:15 +0000",
        "default_for_country_codes": [
          "US",
          "CA",
          "GB"
        ],
        "currency_code": "USD",
        "currency_exchange_rate": "1.3540000",
        "name": "US Dollar",
        "token": "$",
        "auto_update": true,
        "token_location": "left",
        "decimal_token": ".",
        "thousands_token": ",",
        "decimal_places": 2,
        "enabled": true,
        "is_transactional": true
      }
    ],
    "channelCurrencies": {},
    "entered_inclusive_tax": true
  }
}
```

**SDK Code**

```python Without Channel ID
import requests

url = "https://api-b2b.bigcommerce.com/api/v2/stores/currencies"

querystring = {"channelId":"123456","storeHash":"abc123"}

headers = {"Authorization": "Bearer <token>"}

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

print(response.json())
```

```javascript Without Channel ID
const url = 'https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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

```go Without Channel ID
package main

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

func main() {

	url := "https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123"

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

	req.Header.Add("Authorization", "Bearer <token>")

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

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

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

}
```

```ruby Without Channel ID
require 'uri'
require 'net/http'

url = URI("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

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

```java Without Channel ID
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp Without Channel ID
using RestSharp;

var client = new RestClient("https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Without Channel ID
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api-b2b.bigcommerce.com/api/v2/stores/currencies?channelId=123456&storeHash=abc123")! 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()
```