Skip to main content
PATCH
Update a Product

Partial updates

This endpoint only updates the fields you provide; omitted fields are left unchanged.

Authorizations

X-API-Key
string
header
required

Path Parameters

product_id
string
required

The product's Taxwire id (a prd_-prefixed ULID).

Body

application/json

The fields to change on a product.

A direct partial update: every field is optional, an omitted field is left unchanged, and the endpoint makes no idempotency or side-effect guarantees beyond writing what is sent. Only mutable fields listed here.

name
string | null

New product name. Non-blank; omit to leave unchanged.

Example:

"Organic Coffee Beans"

description
string | null

New description; null clears it. Omit to leave unchanged.

Example:

"12 oz bag of roasted coffee beans"

source_category
string | null

New source category; null clears it. Omit to leave unchanged. Not a tax code and never used in a calculation.

Example:

"Food & Beverage > Coffee"

tax_codes
string[] | null

Replace the assigned tax codes. [] clears the override so the company default applies; omit to leave unchanged.

Example:
source_updated_at
string<date-time> | null

New source-system watermark. Timezone-aware, an older value than current is rejected with 422. Not clearable; omit to leave unchanged.

Example:

"2026-09-14T19:58:12Z"

Response

Successful Response

A product in your Taxwire catalog and the tax codes assigned to it.

id
string
required

Taxwire's stable identifier for the product.

Example:

"prd_01J9Z8Q4E7K2M3N4P5R6S7T8U9"

source_id
string
required

Your identifier for the product in the system it came from (a SKU, a Stripe product id).

Examples:

"SKU-123"

"prd_2344536"

source
enum<string>
required

The system the product came from. taxwire for products you send directly to this API.

Available options:
business_central,
campfire,
maxio,
monetizenow,
netsuite,
quickbooks,
rillet,
salesbricks,
shopify,
stripe,
taxwire,
xero
Examples:

"taxwire"

"stripe"

source_account_id
string
required

The account the product belongs to within source, for sources that have more than one. __default__ when the source has a single account.

Example:

"acct_234234"

name
string
required

The product's name.

Example:

"Organic Coffee Beans"

resolved_tax_codes
string[]
required

The tax codes actually used for the product during a calculation: tax_codes when set, otherwise your organization default. Never empty.

Example:
created_at
string<date-time>
required

When Taxwire first stored the product.

Example:

"2026-09-14T20:00:00Z"

updated_at
string<date-time>
required

When the product was last changed in Taxwire. Equals created_at until the first change.

Example:

"2026-09-14T20:00:00Z"

description
string | null

The product's description, if any.

Example:

"12 oz bag of roasted coffee beans"

source_category
string | null

The product's category in the source system, kept for identification. Not a tax code and never used in a calculation.

Example:

"Food & Beverage > Coffee"

tax_codes
string[]

The tax codes you assigned to the product. Empty means no product-level assignment, so the organization default applies.

Example:
source_updated_at
string<date-time> | null

When the product last changed in the source system, as reported by the sender. Null when unknown.

Example:

"2026-09-14T19:58:12Z"