# InvoiceProductUpdateDto

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Input DTO for updating an invoice product.

## Fields
- `name` (string) required: (nullable, max length 200)
- `description` (string): Conditional: When Description is not empty. Max length: 1000. (nullable)
- `productCode` (string): Optional SKU or product code. Stored trimmed, with its letter case kept. Unique within the  biller, compared case-insensitively: a code another of the biller's products already holds is  rejected with a validation error naming this field. Leave it empty (or send whitespace, which  is stored as no code) for a product without a code; any number of those may exist. Conditional: When ProductCode is not empty. Max length: 50. (nullable)
- `imageBlobName` (string): Bare blob filename of the product image, as returned by the hosted-page image upload endpoint  (`POST /api/hostedpaymentpages/images/upload`). Omit or send null to leave the product  without an image; an empty string also clears it. Never a URL, a path, or inline image data. (nullable)
- `defaultPrice` (number(double)): (min 0)
- `taxCategoryId` (string(uuid)): Superseded by `defaultTaxRateId`; retained for compatibility, not read. Accepted  and stored as sent, and never applied to a line item. (nullable)
- `defaultTaxRateId` (string(uuid)): Optional. The id of one of the biller's active tax rates, applied to an invoice line when this  product is picked. Must belong to the same biller as the product; a rate that does not exist,  belongs to another biller, or has been deactivated is rejected with a validation error naming  this field. Omit or send null for no default. (nullable)
- `isActive` (boolean): (nullable)
- `sortOrder` (integer(int32)): (nullable)
- `currency` (string): Conditional: When Currency is not empty. Max length: 3. (nullable)
- `pricingModel` ([PricingModel](https://devportal.demo.winkpg.io/docs/api/models/PricingModel.md)): (nullable)
  Values:
  - `Fixed`: A single fixed price per unit.
  - `Tiered`: Price varies by quantity tier (e.g., 1-10 = $5, 11-50 = $4).
  - `UsageBased`: Price determined by metered usage (e.g., per GB, per API call).
  - `Custom`: Custom pricing negotiated per deal or contract.
- `allowCustomPrice` (boolean): (nullable)
- `productType` ([ProductType](https://devportal.demo.winkpg.io/docs/api/models/ProductType.md)): (nullable)
  Values:
  - `Physical`: Physical goods that are shipped or delivered.
  - `Service`: Professional or managed services billed by time or engagement.
  - `Digital`: Digital goods such as software licenses, downloads, or subscriptions.
  - `Fee`: Flat fees such as setup charges, late fees, or surcharges.
  - `Discount`: Discount line items that reduce the invoice total.
- `isTaxable` (boolean): (nullable)
- `taxCode` (string): Conditional: When TaxCode is not empty. Max length: 50. (nullable)
- `unitOfMeasure` (string): Conditional: When UnitOfMeasure is not empty. Max length: 50. (nullable)
- `commodityCode` (string): Commodity code snapshotted onto an invoice line when this product is applied, and sent as enhanced  (Level 3) card data. At most 25 characters. (nullable, max length 25)
- `allowFractionalQuantity` (boolean): (nullable)
- `minimumQuantity` (number(double)): Conditional: When MinimumQuantity is not null. Must be >= 0. (nullable)
- `maximumQuantity` (number(double)): Conditional: When MaximumQuantity is not null. Must be >= 0. (nullable)
- `requiresShipping` (boolean): (nullable)
- `weight` (number(double)): (nullable, greater than 0, max 999999.9999)
- `weightUnit` ([ShippingWeightUnit](https://devportal.demo.winkpg.io/docs/api/models/ShippingWeightUnit.md)): Required: When Weight is not null. (nullable)
  Values:
  - `Gram`: Grams.
  - `Kilogram`: Kilograms.
  - `Ounce`: Ounces (avoirdupois).
  - `Pound`: Pounds (avoirdupois).
- `length` (number(double)): (nullable, greater than 0, max 99999.9999)
- `width` (number(double)): (nullable, greater than 0, max 99999.9999)
- `height` (number(double)): (nullable, greater than 0, max 99999.9999)
- `dimensionUnit` ([ShippingDimensionUnit](https://devportal.demo.winkpg.io/docs/api/models/ShippingDimensionUnit.md)): Required: When Length is not null or Width is not null or Height is not null. (nullable)
  Values:
  - `Centimeter`: Centimetres.
  - `Inch`: Inches.
- `revenueAccount` (string): Conditional: When RevenueAccount is not empty. Max length: 100. (nullable)
- `deferredRevenue` (boolean): (nullable)
- `recognitionRuleId` (string(uuid)): (nullable)
- `tags` (array<[EntityTag](https://devportal.demo.winkpg.io/docs/api/models/EntityTag.md)>): (nullable)
  Fields of each item:
  - `name` (string): (nullable, min length 0, max length 50)
  - `value` (string): (nullable, min length 0, max length 150)
- `concurrencyStamp` (string): (nullable)

## See also

- [All documentation](https://devportal.demo.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
