> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamlinedpayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update product

> Updates an existing product. Can also be used to archive/unarchive by setting archived to true/false.



## OpenAPI

````yaml /api-reference/openapi.yaml patch /products/{id}
openapi: 3.0.3
info:
  title: Streamlined API
  description: >
    Access customers, customer applications, customer groups, products, payouts,
    invoices, transactions, and deposit links programmatically through this API,
    and receive webhooks when deposit links change. All requests must be
    authenticated with an API key.
  version: 1.6.0
  license:
    name: Proprietary
    url: https://streamlinedpayments.com/terms
servers:
  - url: https://api.staging.streamlinedpayments.com/api/v1
    description: Sandbox
  - url: https://api.streamlinedpayments.com/api/v1
    description: Production
security:
  - AppIdAuth: []
    ApiKeyAuth: []
tags:
  - name: Customers
    description: Create, update and delete the businesses you sell to.
  - name: Customer applications
    description: >-
      List the applications your customers submit, and approve them. Approving
      can also set net terms and export the customer to Shopify. See [Approve
      customer applications](/guides/customer-applications).
  - name: Customer groups
    description: >-
      Organize customers into groups and manage who's in each one. A group can
      be linked to a Shopify B2B company.
  - name: Customer files
    description: Upload and manage files attached to a customer.
  - name: Customer addresses
    description: Manage a customer's addresses and choose their default billing address.
  - name: Orders
    description: Create orders, add and remove line items, and schedule them.
  - name: Invoices
    description: Create invoices from orders, then list, look up and update them.
  - name: Transactions
    description: List transactions and look one up.
  - name: Payouts
    description: List payouts, including pending ones, and look one up.
  - name: Products
    description: >-
      Create and update the products and services you sell, import them in bulk,
      and merge duplicates.
  - name: Deposit links
    description: Collect money from a customer before an invoice exists.
  - name: Webhooks
    description: >-
      Register HTTPS endpoints to receive events when something changes. See
      [Webhooks](/guides/webhooks) for signatures, retries and delivery
      guarantees.
paths:
  /products/{id}:
    patch:
      tags:
        - Products
      summary: Update product
      description: >-
        Updates an existing product. Can also be used to archive/unarchive by
        setting archived to true/false.
      operationId: updateProduct
      parameters:
        - name: id
          in: path
          description: The ID of the product to update
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                product:
                  type: object
                  properties:
                    name:
                      type: string
                      description: Name of the product
                    description:
                      type: string
                      description: Description of the product
                    sku:
                      type: string
                      description: Stock keeping unit
                    default_unit_price:
                      type: integer
                      description: Default unit price in cents
                    unit:
                      type: string
                      enum:
                        - each
                        - hour
                        - day
                        - week
                        - month
                        - lb
                        - kg
                        - ft
                        - m
                        - sqft
                        - sqm
                      description: Unit of measurement
                    currency:
                      type: string
                      enum:
                        - USD
                        - CAD
                        - EUR
                        - GBP
                        - AUD
                      description: Currency
                    archived:
                      type: boolean
                      description: Set to true to archive, false to unarchive
                    quickbooks_item_id:
                      type: integer
                      nullable: true
                      description: >
                        The QuickBooks item to map this product to. A positive
                        integer, or null

                        to clear an existing mapping.


                        The id is not checked against QuickBooks when you send
                        it. An id that

                        does not exist there, or one belonging to a QuickBooks
                        category rather

                        than an item, is accepted here and rejected by
                        QuickBooks later, when an

                        invoice carrying this product is exported.


                        This does not update `quickbooks_synced_at`.
      responses:
        '200':
          description: Product updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Product not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Product not found
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
components:
  schemas:
    ProductDetail:
      type: object
      properties:
        product:
          $ref: '#/components/schemas/ProductSummary'
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
    ProductSummary:
      type: object
      properties:
        id:
          type: integer
        uuid:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        sku:
          type: string
        default_unit_price:
          type: integer
          description: Price in cents
        unit:
          type: string
          enum:
            - each
            - hour
            - day
            - week
            - month
            - lb
            - kg
            - ft
            - m
            - sqft
            - sqm
        currency:
          type: string
          enum:
            - USD
            - CAD
            - EUR
            - GBP
            - AUD
        usage_count:
          type: integer
        last_used_at:
          type: string
          format: date-time
        archived:
          type: boolean
        quickbooks_item_id:
          type: integer
          nullable: true
          description: >
            The QuickBooks item this product is mapped to, or null when it is
            not mapped.


            Invoice line items for a mapped product are exported to QuickBooks
            against this

            item. Unmapped products fall back to the default line item
            configured on the

            QuickBooks connection.
        quickbooks_synced_at:
          type: string
          format: date-time
          nullable: true
          description: >
            When the QuickBooks mapping was last applied, or null if it never
            has been.


            Only `PATCH /products/bulk_update` with `mappings` sets this, along
            with mapping

            the product from the Streamlined app. Writing `quickbooks_item_id`
            through create

            or update does not change it.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  responses:
    Unauthorized:
      description: Authentication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            AuthenticationRequired:
              value:
                error: Authentication required
                message: >-
                  API endpoint requires authentication. Please provide valid
                  X-App-Id and X-Api-Key headers.
            InvalidCredentials:
              value:
                error: Invalid credentials
                message: >-
                  The provided API credentials are invalid. Please check your
                  X-App-Id and X-Api-Key values.
  securitySchemes:
    AppIdAuth:
      type: apiKey
      in: header
      name: X-App-Id
      description: App ID for authentication
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: API Key for authentication

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.