---
updatedAt: 2026-06-30T16:05:21.000Z
agentTools:
  projectIndex: https://docs.pelcro.com/llms.txt
---

# Update product

Update an existing product.

## Overview

Update an existing product. All fields are optional — only provided fields are changed. Unlike creation, `address_required` and `name` are not required.

## Tax code

`tax_code` accepts an AvaTax tax code. See the <a href="https://taxcode.avatax.avalara.com/" target="_blank">AvaTax Tax Code Search</a> for valid codes.

## Image upload

The `image` field accepts a file upload (not a URL). Use `multipart/form-data` content type when uploading an image.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "core-api",
    "version": "1.88"
  },
  "servers": [
    {
      "url": "https://www.pelcro.com/api/v1/core"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "x-bearer-format": "bearer"
      },
      "sec1": {
        "type": "apiKey",
        "in": "query",
        "name": "site_id"
      }
    }
  },
  "security": [
    {
      "sec0": [],
      "sec1": []
    }
  ],
  "paths": {
    "/products/{id}": {
      "put": {
        "summary": "Update product",
        "description": "Update an existing product.",
        "operationId": "api-core-update-product",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Product ID."
          },
          {
            "name": "site_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The unique identifier of the site associated with your account."
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "default": "Bearer eyJ***"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Product name displayed on the site.",
                    "minLength": 3,
                    "maxLength": 250
                  },
                  "address_required": {
                    "type": "boolean",
                    "description": "Whether a shipping address is required when subscribing to plans under this product."
                  },
                  "description": {
                    "type": "string",
                    "description": "Customer-facing product description.",
                    "maxLength": 1500
                  },
                  "name_internal": {
                    "type": "string",
                    "description": "Internal reference name (not visible to customers).",
                    "minLength": 3,
                    "maxLength": 250
                  },
                  "language": {
                    "type": "string",
                    "enum": [
                      "en_US",
                      "fr_CA",
                      "it_IT",
                      "ko_KR",
                      "es_ES"
                    ],
                    "description": "Product language locale."
                  },
                  "countries": {
                    "type": "array",
                    "description": "Array of ISO country codes to restrict the product to.",
                    "items": {
                      "type": "string"
                    }
                  },
                  "statement_descriptor": {
                    "type": "string",
                    "description": "Text that appears on customer bank statements. Letters, numbers, and spaces only.",
                    "maxLength": 22
                  },
                  "image": {
                    "type": "string",
                    "format": "binary",
                    "description": "Product image file upload."
                  },
                  "is_hidden": {
                    "type": "boolean",
                    "description": "Whether the product is hidden from public display."
                  },
                  "is_imported": {
                    "type": "boolean",
                    "description": "Whether the product was imported from an external system."
                  },
                  "tax_code": {
                    "type": "string",
                    "description": "AvaTax tax code for the product. See https://taxcode.avatax.avalara.com/ for valid codes."
                  },
                  "old_provider_id": {
                    "type": "string",
                    "description": "External product ID from a previous provider. Must match import_unique_id if both are set.",
                    "maxLength": 191
                  },
                  "import_unique_id": {
                    "type": "string",
                    "description": "Unique import identifier. Must match old_provider_id if both are set. Unique per account.",
                    "maxLength": 191
                  },
                  "revenue_recognition_strategy": {
                    "type": "string",
                    "enum": [
                      "creation",
                      "payment"
                    ],
                    "description": "Revenue recognition strategy. Only applies to accounts using Pelcro's Billing Engine (https://docs.pelcro.com/docs/our-billing-engine). Accepts: creation (recognize on creation) or payment (recognize on payment)."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n    \"data\": {\n        \"id\": 2070,\n        \"active\": true,\n        \"address_required\": 1,\n        \"description\": null,\n        \"entitlements\": null,\n        \"is_hidden\": true,\n        \"is_imported\": true,\n        \"language\": null,\n        \"name\": \"Premium Access\",\n        \"name_internal\": null,\n        \"package_dimensions\": null,\n        \"shippable\": null,\n        \"statement_descriptor\": null,\n        \"unit_label\": null,\n        \"countries\": null,\n        \"image\": null,\n        \"old_provider_id\": \"test\",\n        \"import_unique_id\": \"test\",\n        \"revenue_recognition_strategy\": null,\n        \"plans\": []\n    }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "integer",
                          "example": 2070
                        },
                        "active": {
                          "type": "boolean",
                          "example": true
                        },
                        "address_required": {
                          "type": "integer",
                          "example": 1
                        },
                        "description": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "entitlements": {
                          "type": "object",
                          "nullable": true,
                          "example": null
                        },
                        "is_hidden": {
                          "type": "boolean",
                          "nullable": true,
                          "example": true
                        },
                        "is_imported": {
                          "type": "boolean",
                          "nullable": true,
                          "example": true
                        },
                        "language": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "name": {
                          "type": "string",
                          "example": "Premium Access"
                        },
                        "name_internal": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "package_dimensions": {
                          "type": "object",
                          "nullable": true,
                          "example": null
                        },
                        "shippable": {
                          "type": "boolean",
                          "nullable": true,
                          "example": null
                        },
                        "statement_descriptor": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "unit_label": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "countries": {
                          "type": "array",
                          "nullable": true,
                          "example": null
                        },
                        "image": {
                          "type": "string",
                          "nullable": true,
                          "example": null
                        },
                        "old_provider_id": {
                          "type": "string",
                          "nullable": true,
                          "example": "test"
                        },
                        "import_unique_id": {
                          "type": "string",
                          "nullable": true,
                          "example": "test"
                        },
                        "revenue_recognition_strategy": {
                          "type": "integer",
                          "nullable": true,
                          "example": null
                        },
                        "plans": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          },
                          "description": "Associated pricing plans."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"error\": {\n    \"status\": 400,\n    \"message\": \"Invalid request, please try again.\"\n  }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "integer",
                          "example": 400
                        },
                        "message": {
                          "type": "string",
                          "example": "Invalid request, please try again."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"error\": \"Unauthenticated.\"\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string",
                      "example": "Unauthenticated."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found.",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"error\": {\n    \"status\": 404,\n    \"message\": \"Not found.\"\n  }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "integer",
                          "example": 404
                        },
                        "message": {
                          "type": "string",
                          "example": "Not found."
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```

# Sibling pages

* [List products](https://docs.pelcro.com/reference/api-core-list-products.md)
* [Create product](https://docs.pelcro.com/reference/api-core-create-product.md)
* [Get product](https://docs.pelcro.com/reference/api-core-get-product.md)
* [Update product (legacy)](https://docs.pelcro.com/reference/api-core-update-product-legacy.md)
* [Delete product](https://docs.pelcro.com/reference/api-core-delete-product.md)