Test a merchant Avalara connection
Calls Avalara with the submitted credentials (an unsaved edit), falling back to the stored slot for any credential that is omitted or still masked, and reports what Avalara returned. The AvaTax ping answers HTTP 200 even for bad credentials, so only authenticated true in the ping body counts as a pass. When the credentials authenticate and a company code is present, the code is looked up in the account. Rejected credentials, a missing company code and an unreachable Avalara are all 200 responses with the verdict in the body. The host comes from environment alone; a sandbox environment (a sandbox twin) can only test sandbox. Nothing is saved. Requires the companies.update permission.
curl --request POST \
--url https://api.fluid.app/api/settings/avalara_account/test_connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"avalara_account": {
"environment": "sandbox",
"username": "accounting@dundermifflin.com",
"password": "Scr4nton-Paper-2026",
"company_code": "DUNDERMIFFLIN-SBX"
}
}
'import requests
url = "https://api.fluid.app/api/settings/avalara_account/test_connection"
payload = { "avalara_account": {
"environment": "sandbox",
"username": "accounting@dundermifflin.com",
"password": "Scr4nton-Paper-2026",
"company_code": "DUNDERMIFFLIN-SBX"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
avalara_account: {
environment: 'sandbox',
username: 'accounting@dundermifflin.com',
password: 'Scr4nton-Paper-2026',
company_code: 'DUNDERMIFFLIN-SBX'
}
})
};
fetch('https://api.fluid.app/api/settings/avalara_account/test_connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/settings/avalara_account/test_connection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'avalara_account' => [
'environment' => 'sandbox',
'username' => 'accounting@dundermifflin.com',
'password' => 'Scr4nton-Paper-2026',
'company_code' => 'DUNDERMIFFLIN-SBX'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/settings/avalara_account/test_connection"
payload := strings.NewReader("{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/settings/avalara_account/test_connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/avalara_account/test_connection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}"
response = http.request(request)
puts response.read_body{
"authenticated": true,
"environment": "sandbox",
"company_code": {
"checked": true,
"found": true
},
"message": "Authenticated with Avalara sandbox; company code verified.",
"status": 200,
"meta": {
"request_id": "c4f1b9e2-7a3d-4e8b-9f21-5d6a0b3e8c47",
"timestamp": "2026-09-14T15:32:08Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer token authentication
Body
The credential set to test. An omitted credential falls back to the stored slot for the environment.
Show child attributes
Show child attributes
Response
Success
true only when Avalara's ping reported authenticated true. false for rejected credentials and when Avalara could not be reached; the message says which.
The AvaTax environment that was called.
sandbox, production The outcome of the company code lookup.
Show child attributes
Show child attributes
A merchant-facing explanation of the outcome. Never contains credentials.
200 Show child attributes
Show child attributes
curl --request POST \
--url https://api.fluid.app/api/settings/avalara_account/test_connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"avalara_account": {
"environment": "sandbox",
"username": "accounting@dundermifflin.com",
"password": "Scr4nton-Paper-2026",
"company_code": "DUNDERMIFFLIN-SBX"
}
}
'import requests
url = "https://api.fluid.app/api/settings/avalara_account/test_connection"
payload = { "avalara_account": {
"environment": "sandbox",
"username": "accounting@dundermifflin.com",
"password": "Scr4nton-Paper-2026",
"company_code": "DUNDERMIFFLIN-SBX"
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
avalara_account: {
environment: 'sandbox',
username: 'accounting@dundermifflin.com',
password: 'Scr4nton-Paper-2026',
company_code: 'DUNDERMIFFLIN-SBX'
}
})
};
fetch('https://api.fluid.app/api/settings/avalara_account/test_connection', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/settings/avalara_account/test_connection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'avalara_account' => [
'environment' => 'sandbox',
'username' => 'accounting@dundermifflin.com',
'password' => 'Scr4nton-Paper-2026',
'company_code' => 'DUNDERMIFFLIN-SBX'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/settings/avalara_account/test_connection"
payload := strings.NewReader("{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/settings/avalara_account/test_connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/settings/avalara_account/test_connection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"avalara_account\": {\n \"environment\": \"sandbox\",\n \"username\": \"accounting@dundermifflin.com\",\n \"password\": \"Scr4nton-Paper-2026\",\n \"company_code\": \"DUNDERMIFFLIN-SBX\"\n }\n}"
response = http.request(request)
puts response.read_body{
"authenticated": true,
"environment": "sandbox",
"company_code": {
"checked": true,
"found": true
},
"message": "Authenticated with Avalara sandbox; company code verified.",
"status": 200,
"meta": {
"request_id": "c4f1b9e2-7a3d-4e8b-9f21-5d6a0b3e8c47",
"timestamp": "2026-09-14T15:32:08Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}