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

# Update store product inventory

> Sets or adjusts the on-hand quantity for the selected products, their reorder levels, or both. Every product a request names must resolve, or nothing is written.



## OpenAPI

````yaml /api/openapi.json post /v1/store-product-inventory
openapi: 3.0.0
info:
  title: Vori API
  description: ''
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.vori.com
    description: production
security: []
tags: []
paths:
  /v1/store-product-inventory:
    post:
      tags:
        - Inventory
      summary: Update store product inventory
      description: >-
        Sets or adjusts the on-hand quantity for the selected products, their
        reorder levels, or both. Every product a request names must resolve, or
        nothing is written.
      operationId: upsertStoreProductInventory
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertStoreProductInventoryRequest'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpsertStoreProductInventoryResponse'
        '400':
          description: ''
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/InvalidStoreProductsError'
                  - $ref: '#/components/schemas/MissingStoreProductSelectionError'
                  - $ref: '#/components/schemas/MultipleBannersSelectedError'
        '403':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsufficientPermissionsError'
      security:
        - bearer: []
components:
  schemas:
    UpsertStoreProductInventoryRequest:
      type: object
      properties:
        inventory:
          description: >-
            The change to make to the on-hand quantity. Omit it to update only
            the reorder levels.
          allOf:
            - $ref: '#/components/schemas/InventoryUpdate'
        max_stock:
          type: string
          nullable: true
          description: >-
            The most of this product the store wants on hand. Send null to clear
            it; omit it to leave it as it is.
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        min_par:
          type: string
          nullable: true
          description: >-
            The on-hand quantity at which the product should be reordered. Send
            null to clear it; omit it to leave it as it is.
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
        store_product_selection_criteria:
          description: Criteria used to select products whose inventory will be updated.
          allOf:
            - $ref: '#/components/schemas/StoreProductSelectionCriteria'
      description: >-
        The products to update, and the reorder levels or on-hand quantity to
        write to them.
    UpsertStoreProductInventoryResponse:
      type: object
      properties:
        updated_count:
          type: integer
          description: How many products the request updated.
      description: >-
        The outcome of an inventory update. The updated products are not
        returned.
      required:
        - updated_count
    InvalidStoreProductsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - invalid_store_products
      required:
        - error_code
    MissingStoreProductSelectionError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - missing_store_product_selection
      required:
        - error_code
    MultipleBannersSelectedError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - multiple_banners_selected
      required:
        - error_code
    InsufficientPermissionsError:
      type: object
      properties:
        error_code:
          type: string
          enum:
            - insufficient_permissions
        error_details:
          $ref: '#/components/schemas/InsufficientPermissionsErrorDetails'
      required:
        - error_code
        - error_details
    InventoryUpdate:
      type: object
      properties:
        reason_description:
          type: string
          nullable: true
          description: A note explaining the change.
        reason_type:
          description: Why the quantity changed.
          allOf:
            - $ref: '#/components/schemas/InventoryUpdateReasonType'
        type:
          description: >-
            Whether the value replaces (`set`) the on-hand quantity or moves
            (`adjustment`) it by that amount.
          allOf:
            - $ref: '#/components/schemas/InventoryUpdateType'
        value:
          type: string
          description: >-
            The quantity to set the on-hand to, or by which to adjust it.
            Negative values reduce it.
          example: '199.99'
          pattern: ^-?[0-9]+(\.[0-9]+)?$
      description: A change to a product's on-hand quantity.
      required:
        - type
        - value
    StoreProductSelectionCriteria:
      type: object
      properties:
        barcodes:
          maxItems: 1000
          description: >-
            Barcodes to select. A barcode carried by products in several stores
            selects all of them unless store_id is supplied.
          type: array
          items:
            type: string
        ids:
          maxItems: 1000
          description: Store product IDs to select.
          type: array
          items:
            type: string
            pattern: ^[0-9]+$
        store_id:
          type: string
          description: >-
            Restricts the selection to one store. Omit to select matching
            products across the whole banner.
          pattern: ^[0-9]+$
      description: Selects the store products a request applies to.
    InsufficientPermissionsErrorDetails:
      type: object
      properties:
        action:
          allOf:
            - $ref: '#/components/schemas/Action'
        resource:
          allOf:
            - $ref: '#/components/schemas/Resource'
      required:
        - action
        - resource
    InventoryUpdateReasonType:
      type: string
      enum:
        - shrink_damage
        - shrink_donation
        - shrink_other
        - shrink_spoilage
        - shrink_theft
    InventoryUpdateType:
      type: string
      enum:
        - adjustment
        - set
    Action:
      type: string
      enum:
        - '*'
        - cancel
        - check_in
        - create
        - delete
        - read
        - record_events
        - refund
        - restart
        - update
        - void
    Resource:
      type: string
      enum:
        - '*'
        - accounting_integration
        - agent_chats
        - api_clients
        - asynchronous_tasks
        - banners
        - blackhawk_transactions
        - capabilities
        - coupons
        - custom_quick_actions
        - datacap_transactions
        - departments
        - discounts
        - ditto_auth_tokens
        - edge_agents
        - electronic_shelf_labels
        - employees
        - files
        - food_modifiers
        - gift_cards
        - gl_code_mappings
        - house_accounts
        - inventory
        - inventory_sessions
        - invoices
        - item_modifiers
        - label_dimension_sets
        - label_sheet_profiles
        - label_stock_products
        - lanes
        - loyalty_bonuses
        - loyalty_campaigns
        - loyalty_rewards
        - notification_templates
        - offers
        - order_guides
        - pos_banner_configurations
        - pos_orders
        - pos_tills
        - price_tags
        - product_ranges
        - products
        - promotions
        - purchase_orders
        - receiving
        - reporting
        - revision_sessions
        - revisions
        - roles
        - shopper_tags
        - shoppers
        - store_product_inventory_counts
        - store_product_lots
        - store_product_rules
        - store_product_tag_templates
        - store_snap_incentive_program_coupons
        - store_vendor_merge_requests
        - store_vendor_product_merge_requests
        - store_vendor_products
        - store_vendors
        - stores
        - tag_printings
        - tag_template_presets
        - tag_templates
        - tax_rates
        - users
        - variable_weights
        - vendor_merge_requests
        - vendor_product_merge_requests
        - vendors
        - wallet_payments
        - wic_products
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````

## Related topics

- [Update a store product](/api-reference/store-products/update-a-store-product.md)
- [List store product inventory](/api-reference/inventory/list-store-product-inventory.md)
- [The store product inventory object](/api/store-product-inventory/object.md)
