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

# Update Item Availability

> Use the POS availability API to update menu item stock levels by PLU code, mark items as out of stock, and sync inventory between systems in real time.

Update the availability status and inventory count for menu items in a store. Items are matched by their PLU (Price Look-Up) code.

## Request

```bash theme={null}
curl -X POST https://api.storekit.com/pos/availability \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "storeId": "550e8400-e29b-41d4-a716-446655440000",
    "items": [
      {
        "plu": "BURGER-001",
        "isAvailable": true,
        "inventory": 50
      },
      {
        "plu": "FRIES-001",
        "isAvailable": false
      }
    ]
  }'
```

## Request Body

<ParamField body="storeId" type="string" required>
  The external store ID (UUID format). This is the ID you assigned to the store when setting up your integration.
</ParamField>

<ParamField body="items" type="array" required>
  An array of items to update. Must contain at least one item.

  <Expandable title="Item properties">
    <ParamField body="plu" type="string" required>
      The PLU code of the menu item. Must match the PLU configured in the storekit dashboard.
    </ParamField>

    <ParamField body="isAvailable" type="boolean" required>
      Whether the item is currently available for ordering.
    </ParamField>

    <ParamField body="inventory" type="integer">
      The current inventory count. Must be 0 or greater. When inventory reaches 0, consider setting `isAvailable` to `false`.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<CodeGroup>
  ```json Success (200) theme={null}
  "ok"
  ```

  ```json Store Not Found (404) theme={null}
  {
    "statusCode": 404,
    "error": "Not Found",
    "message": "Not Found"
  }
  ```

  ```json No Active Menu (404) theme={null}
  {
    "statusCode": 404,
    "error": "Not Found",
    "message": "No active menu found for this venue"
  }
  ```

  ```json Invalid Payload (400) theme={null}
  {
    "statusCode": 400,
    "error": "Bad Request",
    "message": "\"storeId\" must be a valid GUID"
  }
  ```
</CodeGroup>

## Behavior

* Items are matched by PLU within the store's active menu
* If an item's PLU is not found, it is silently skipped (no error returned)
* Availability changes take effect immediately
* Menu cache is automatically invalidated after updates

## Example: Mark Items as Sold Out

```bash theme={null}
curl -X POST https://api.storekit.com/pos/availability \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "storeId": "550e8400-e29b-41d4-a716-446655440000",
    "items": [
      {
        "plu": "SPECIAL-001",
        "isAvailable": false,
        "inventory": 0
      }
    ]
  }'
```

## Example: Restock Items

```bash theme={null}
curl -X POST https://api.storekit.com/pos/availability \
  -H "x-api-key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "storeId": "550e8400-e29b-41d4-a716-446655440000",
    "items": [
      {
        "plu": "SPECIAL-001",
        "isAvailable": true,
        "inventory": 25
      },
      {
        "plu": "DESSERT-001",
        "isAvailable": true,
        "inventory": 10
      }
    ]
  }'
```


## Related topics

- [Stream Stock & Availability](/docs/guides/integrations/pos/stream/stock-and-availability.md)
- [Availability & Snoozing](/docs/guides/menu/availability-snoozing.md)
- [Lightspeed Stock & Availability](/docs/guides/integrations/pos/lightspeed/stock-and-availability.md)
- [PointOne Troubleshooting](/docs/guides/integrations/pos/pointone/troubleshooting.md)
- [Stream](/docs/guides/integrations/pos/stream/overview.md)


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