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

# Update Connection

PUT https://api.bigcommerce.com/stores/{store_hash}/v3/tax/providers/{provider_id}/connection
Content-Type: application/json

Set authentication information associated with a merchant's account on the tax provider's infrastructure:
- [HTTP Basic Authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication) (developer.mozilla.org) credentials
- (optional) Tax provider profile used in customized endpoint urls for tax provider calls. This is only available for tax providers that support this feature.

The configured `username`, `password`, and `profile` (if available) are used to authenticate each API request to the Tax Provider from the associated store. 
The tax provider's `profile` will be included in the URL for [Tax Provider API](/developer/api-reference/rest/integrations/tax-provider) endpoints. 

> #### Note
> * This operation will be logged in [Store Logs](https://support.bigcommerce.com/s/article/Using-Store-Logs) under **Staff Actions**.
> * Requires **write** permissions on the **Information and Settings** [scope](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes).

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/integrations/tax-provider/tax-provider-connection/update-tax-provider-connection

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Information & Settings | modify | `store_v2_information` | | Information & Settings | read-only | `store_v2_information_read_only` | ### Authentication header | 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#api-accounts). | ### Further reading 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).

## Request

### Path parameters

- `provider_id` (string, required) — The Tax Providerʼs `provider_id` provided by BigCommerce after the provider [shares their provider details](/developer/docs/integrations/tax-providers#sharing-provider-details-with-bigcommerce).
- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

### Body (application/json)

This endpoint expects an object.

- `username` (string, optional) — Public identifying information representing a unique account on the tax provider's infrastructure. Should not contain any personal identifying information (e.g. a personal email address).
- `password` (string, optional)
- `profile` (string, optional) — Optional field that allows merchants to customize Tax Provider API endpoint URLs. Only available for supporting providers.

## Response

### 200

OK

- `data` (ResponseConnectionData, optional)

## Errors

### 404 Not Found Error

Provider does not exist

- `any`

### 422 Unprocessable Entity Error

Unprocessable Entity, will include a specific error message referencing the issue.

- `any`

## Types

### ResponseConnectionData

- `username` (string, optional) — Identifies a unique account on the external tax provider infrastructure. May be used to reconcile the two platforms.
- `configured` (boolean, optional) — Describes whether the stored credentials are considered complete and configured, ready to be used for Tax Provider API requests. Merchants may enable any **configured** tax provider for storefront tax quotation.
- `profile` (string, optional) — When supported by the tax provider configuration, the profile value is used to generate a unique Tax Provider API request URL for this connection. If not set, this value will be blank. Please ensure merchants set this value if using dynamic request URLs, blank values cannot generate valid URLs.
- `target` (ResponseConnectionDataTarget, optional) — The countries and subdivisions in which this tax provider connection is active.

### ResponseConnectionDataTarget

The countries and subdivisions in which this tax provider connection is active.

- `country_codes` (list of string, optional) — The list of country codes where the tax provider connection is active. ISO 3166-1 alpha-2.
- `subdivision_codes` (list of string, optional) — The list of subdivision codes where the tax provider connection is active. ISO 3166-2.

## Examples

**Request**

```json
{
  "username": "MyTaxProviderAccount",
  "password": "h6eSgKLN72q7jYTW",
  "profile": "test-profile"
}
```

**Response**

```json
{
  "data": {
    "username": "MyUpdatedTaxProviderAccount",
    "configured": true
  }
}
```

**SDK Code**

```python Update connection
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection"

payload = {
    "username": "MyTaxProviderAccount",
    "password": "h6eSgKLN72q7jYTW",
    "profile": "test-profile"
}
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript Update connection
const url = 'https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection';
const options = {
  method: 'PUT',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '{"username":"MyTaxProviderAccount","password":"h6eSgKLN72q7jYTW","profile":"test-profile"}'
};

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

```go Update connection
package main

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

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection"

	payload := strings.NewReader("{\n  \"username\": \"MyTaxProviderAccount\",\n  \"password\": \"h6eSgKLN72q7jYTW\",\n  \"profile\": \"test-profile\"\n}")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

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

url = URI("https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection")

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

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"username\": \"MyTaxProviderAccount\",\n  \"password\": \"h6eSgKLN72q7jYTW\",\n  \"profile\": \"test-profile\"\n}"

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

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

HttpResponse<String> response = Unirest.put("https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"username\": \"MyTaxProviderAccount\",\n  \"password\": \"h6eSgKLN72q7jYTW\",\n  \"profile\": \"test-profile\"\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection', [
  'body' => '{
  "username": "MyTaxProviderAccount",
  "password": "h6eSgKLN72q7jYTW",
  "profile": "test-profile"
}',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

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

```csharp Update connection
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"username\": \"MyTaxProviderAccount\",\n  \"password\": \"h6eSgKLN72q7jYTW\",\n  \"profile\": \"test-profile\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Update connection
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "username": "MyTaxProviderAccount",
  "password": "h6eSgKLN72q7jYTW",
  "profile": "test-profile"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v3/tax/providers/provider_id/connection")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```