This instance couldn't reach its API specification on the last attempt, so this page shows the copy fetched before that. Anything added or changed since then is missing here, and the reference updates itself as soon as the specification is readable again. Last fetched 2026-11-12 05:58 UTC.
Example body for a merchant on its own provider contract:
```
{
"isEnabled": true,
"credentialSource": "Merchant",
"defaultCountryCode": "USA",
"fieldValues": [
{ "key": "TaxCalculation.ZipTax.ApiKey", "value": "…" },
{ "key": "TaxCalculation.ZipTax.ApiVersion", "value": "v60" }
]
}
```
For a provider the gateway holds the account for, send `"credentialSource": "Gateway"` and no field
values at all: the gateway's own credentials are resolved at lookup time and are never copied onto the
merchant. Omitting a secret keeps the value already stored, which is what a caller that read the binding
first will naturally send, because reads never return one. Optionally send
`If-Match: "<concurrencyStamp>"` for optimistic concurrency (409 on a stale stamp).
Signed in, you can send this request to your own sandbox merchant from the console
and read the answer.
Sign in to try it.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a MerchantTaxBinding. See the Request body section below for its fields.
Parameters
Name
In
Type
Description
idrequired
path
string (uuid)
The merchant id.
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
providerNamerequired
path
string
The provider to bind (authoritative; any provider on the body is ignored).
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
suppressNullsrequired
query
boolean
If true, omit properties with null values.
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
Request body
application/json, required
Field
Type
Description
providerNamerequired
string
Which tax provider this entry binds the merchant to, by the provider's registered name.
Compared case-insensitively. A null or blank provider is treated as no binding at all, so an
incompletely boarded row cannot silently become a live selection.
Required: When IsEnabled is true.nullablemax length 64
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
isEnabledrequired
boolean
Master enable flag for this provider on this merchant. When `false` or null, the selector
must not return this binding even though the row exists.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
Whose provider account the lookups are billed to. Null reads as
`Gateway`.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
Gateway
The gateway's own provider account. The binding stores no credential of its own: the values are filled in at read time from the host-scoped provider settings, and the merchant surfaces never carry them. This is what a null credentialSource reads as, which is the safe default: a half-completed row cannot accidentally claim to hold the merchant's own contract.
Merchant
The merchant's own provider account. The binding carries the credentials, with every secret value held as ciphertext and stripped on any read that leaves the server.
The provider-declared configuration values for this merchant, keyed by the setting names the
provider declares.
<b>Secret values are stored encrypted</b> and are stripped, not decrypted, on every read that
leaves the server: the admin UI and the API both see null and re-send a secret only when the
operator changes it. Only the server-side call to the provider ever uses the plaintext.
Empty for a `Gateway` binding, whose values are filled in at
read time from the host-scoped provider settings instead. A gateway-sourced row that carried
values would be a copy of the gateway's key living on a merchant document.
Conditional: When FieldValues is not null.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
Fields of each TaxBindingFieldValue:
Field
Type
Description
keyrequired
string
The provider setting name this value belongs to, matching a setting field definition the provider's
contributor declares. Compared case-insensitively.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
valuerequired
string
The configured value. Ciphertext at rest whenever `isSecret` is `true`, and
`null` on every read that leaves the server.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
isSecretrequired
boolean
Whether `value` is credential material, and so held encrypted and stripped on read.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
isConfiguredrequired
boolean
Whether a secret value is stored, set on reads so an operator can tell a configured secret from an
empty one without the value ever being sent.nullable
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
This body has no documented fields.
defaultCountryCoderequired
string
The country code to use for a lookup that does not name one. Null falls back to the
gateway-wide `TaxCalculation.DefaultCountryCode` setting.nullablemax length 3
Values:Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names.
This request body has no documented fields.
Responses
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.