Update a product
Needs a token with the write:products scope. Authentication
Try in Playground sends a real request to app.helvetly.com with a token you paste. It stays in this browser tab only (session storage) and goes to no one else.
Changes only the fields sent; null or blank clears an optional field. Changing vat_category away from S resets vat_rate to 0; the derived net and gross prices follow. Existing invoices keep their copied lines. 422 validation_failed with details.fields. Safe to retry.
bearerAuthAuthorizationBearer <token>A personal API token, hvt_…, with scopes such as read:* or write:invoices
id*stringThe item's id.
application/json- body
Fields of a catalogue item. name and unit_price are required on create; on update only the fields sent change and null or blank clears an optional field. Unknown fields are refused (400). unit_price_net and unit_price_gross are derived.
type?stringDefault service on create.
"product""service"name?stringlength <= 200description?|length <= 1000sku?|Letters, digits and . _ / -; unique among the workspace's active items, case-insensitive (422 on sku otherwise).
length <= 64gtin?|Barcode number; products only, not services.
length <= 14unit?|"hour""day""piece""month""km""flat"nullprice_basis?stringWhether unit_price is entered without or with VAT. Default net.
"net""gross"unit_price?MoneyAn exact amount in major units with two decimals, as a string ("1234.50").
^-?\d+\.\d{2}$currency?stringISO 4217 code with two decimals, e.g. CHF. Default is the workspace currency.
vat_category?stringUNTDID 5305 code, e.g. S (standard), Z (zero-rated), E (exempt), O (outside scope). Changing from S resets vat_rate to 0; changing to S applies the workspace default rate unless vat_rate is sent.
vat_rate?PercentA percentage, up to two decimals, as a string ("8.1").
^-?\d+(\.\d{1,2})?$OK
application/json- response
data*curl -X PATCH 'https://app.helvetly.com/api/v1/products/string' \ -H 'Content-Type: application/json' \ -d '{ "type": "service", "name": "Consulting", "description": "Hourly rate", "unit": "hour", "price_basis": "net", "unit_price": "180.00", "currency": "CHF", "vat_category": "S", "vat_rate": "8.10"}'{ "data": { "id": "string", "type": "product", "name": "string", "description": "string", "sku": "string", "gtin": "string", "unit": "string", "price_basis": "string", "unit_price": "1234.50", "unit_price_net": "1234.50", "unit_price_gross": "1234.50", "currency": "string", "vat_category": "string", "vat_rate": "string", "is_archived": true, "archived_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }}