Using the Inventory / WMS API

API Inventory WMS OAuth MCP Shopify integration

With the Inventory / WMS API, you can read and adjust a business account's stock per location (warehouse, store back yard, sales floor). If a location is mapped to a Shopify location, stock adjustments made through the API are automatically mirrored to Shopify as well.

Required scopes

  • store.inventory.read — read stock, locations, and movement history
  • store.inventory.write — adjust stock

Request the scopes at app registration and obtain the business owner's consent. For the authentication flow, see the API authentication guide.

Endpoints

  • GET /api/v1/inventory — list stock (filter by locationId / productId / lowStock=true)
  • GET /api/v1/inventory/{locationId}/{productId} — stock detail
  • GET /api/v1/inventory/locations — list locations
  • POST /api/v1/inventory/adjust — adjust stock
  • GET /api/v1/inventory/movements — stock movement history

Reading stock

The stock list returns one row per location × product. Adding lowStock=true filters to only the rows that have fallen below the reorder point (minimum stock level).

GET /api/v1/inventory?organizationId={orgId}&lowStock=true
Authorization: Bearer {access_token}
{
  "count": 2,
  "stock": [
    {
      "locationId": "loc-001",
      "locationName": "Main store back yard",
      "productId": "prd-001",
      "productName": "Organic mango juice",
      "sku": "MNG-001",
      "quantity": 3,
      "availableQuantity": 3,
      "minStockLevel": 10,
      "isLowStock": true
    }
  ]
}

Adjusting stock

Specify a signed change in quantity and a reason. A positive number is a receipt (stock in); a negative number is an issue or disposal. The adjustment is recorded in the movement history, retaining the operator name and reason.

POST /api/v1/inventory/adjust?organizationId={orgId}
Authorization: Bearer {access_token}
Content-Type: application/json

{
  "locationId": "loc-001",
  "productId": "prd-001",
  "quantityChange": -3,
  "reason": "Damaged, disposed"
}

If the target stock row does not exist, 404 is returned. A stock row is created the first time a product is registered to a location through receiving or a stocktake.

Automatic mirroring when Shopify is connected

If the business account is connected to Shopify and the target location is mapped to a Shopify location, stock adjustments made through the API are automatically mirrored to Shopify as well. No additional API call is needed. The reverse direction (stock changes on the Shopify side) is also reflected into ReceiptRoller via Webhook.

Retrieving movement history

You can retrieve the history of receipts, transfers, stocktakes, and adjustments (including those originating from Shopify sync), newest first.

GET /api/v1/inventory/movements?organizationId={orgId}&productId=prd-001
Authorization: Bearer {access_token}

Using it from MCP tools

From an AI agent such as ChatGPT or Claude, you can use the same features via the MCP server (https://mcp.receiptroller.io).

  • wms_get_stock — read stock (supports the lowStock filter)
  • wms_list_locations — list locations
  • wms_adjust_stock — adjust stock
  • wms_list_movements — movement history

Product (pim_*) and order (oms_*) tools are also provided on the same MCP server. For how to connect to MCP, see AI agent integration (MCP).

Related pages

Published: 2026-06-10 Updated: 2026-07-05
このトピックについて
開発者API
機能の詳細を見る
Tags
API (22) OAuth (15) Android (10) iOS (9) Webhook (6) Troubleshooting (5) api (5) App registration (4) POS Integration (4) Reference (4)
Related articles