---
title: "Update a product"
method: PUT
path: "/{companyDomain}/products/{productId}"
---

# Update a product

`PUT /{companyDomain}/products/{productId}`

## Request

- Base URL: `https://public.billsby.com/api/v1/rest/core`
- URL: `https://public.billsby.com/api/v1/rest/core/{companyDomain}/products/{productId}`
- Auth: API key in header `ApiKey`
- TypeScript: <https://skmtc.dev/billsby/apis/billsby-api/docs/:companyDomain/products/:productId/put.ts> (a function with typed inputs; its response is checked against the schema)

Update product for your company

## Path parameters

- `companyDomain` string, required
- `productID` integer, required

## Request body

- object
  - `name` string: The name of the product you want to update
  - `visibility` integer: The type of visibility of each product; public, hidden and on-sale. Available values: 0, 1, 2, 3 (Public=0, Hidden=1, Internal=2, OffSale=3)
  - `billingCurrency` string: The currency you want to the product to be billed in. This must be an ISO3 currency code with maximum three characters. For example: GBP, USD, etc
  - `displayName` string: The display name of the product you want to create
  - `decription` string: A short description of the product
  - `isShippingAddressRequired` boolean: Do you need to collect a shipping address from your customers for this product; true or false
  - `isShippingAddressValidationRequired` boolean: Do you want to validate the shipping address using our tool; true or false
  - `isBillingAddressValidationRequired` boolean: Do you want to validate the billing address using our tool; true or false
  - `isAdditionalEmailRequired` boolean: Do you want to collect an additional email address from your customers at checkout; true or false
  - `isPhoneNumberRequired` boolean: Do you need to collect a phone number from your customers at checkout; true or flase
  - `is MarketingConsentRequired` boolean: Do you need to get marketing consent from your customers at checkout; true or false
  - `alertEmail` string: Set an email to be alerted when a customer signs up for this product
  - `orderedCustomFields` object: Add any custom fields you've created to your checkout flow for this product by adding the custom fields IDs
    - `customFieldID` integer: The ID of the custom field you want to add to checkout for this product. You'll find this custom field ID in the Billsby control panel.
  - `typeOfProduct` integer: The type of product you want to create; 1 is tiered
  - `productCountryLimitations` object: Set country limitations for your product
    - `isAnyCountryAllowed` boolean: Do you want to allow customers from any country to subscribe; true or false
    - `countrySettings` object

## Response `200`

200

- object
  - `productCountryLimitation` object
    - `isAnyCountryAllowed` boolean
    - `countrySettings` object[]
      - `countryIso3` string
      - `addressPermission` integer
  - `productId` integer
  - `name` string
  - `visibility` integer
  - `billingCurrency` string
  - `billingCurrencyTemplate` string
  - `displayName` string
  - `description` string
  - `typeOfProduct` integer
  - `hasPlans` boolean
  - `isShippingAddressRequired` boolean
  - `isShippingAddressValidationRequired` boolean
  - `isBillingAddressValidationRequired` boolean
  - `isAdditionalEmailRequired` boolean
  - `isPhoneNumberRequired` boolean
  - `isMarketingConsentRequired` boolean
  - `numberOfPlans` integer
  - `alertEmail` string

---

[API](https://skmtc.dev/billsby/apis/billsby-api.md) - [All operations](https://skmtc.dev/billsby/apis/billsby-api/llms.txt) - [OpenAPI document](https://skmtc.dev/billsby/apis/billsby-api/revisions/adcb2fd4c52f?raw)
