Using the Inventory / WMS API
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 historystore.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 detailGET /api/v1/inventory/locations— list locationsPOST /api/v1/inventory/adjust— adjust stockGET /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 locationswms_adjust_stock— adjust stockwms_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
-
Using the Store Information APIA guide to the REST API for fetching and updating a store's basic information (store name, store type, contact details, and address). Lets you implement a store information editing screen from token-authenticated clients such as staff apps.
-
PosTransactionDto specification — field reference for transaction dataA complete field reference for PosTransactionDto, the canonical model for the transaction data ReceiptRoller handles. For each category — identifiers, dates, amounts, line items, payments, staff, status, and CRM linkage — it summarizes the field names, types, meanings, and how each POS vendor populates them. A reference for developers and external-system integrators. Also referenced from the Smaregi and Square mapping articles.
-
Purchase and receipt data integrationExplains the structure of the purchase and receipt data ReceiptRoller handles, how to retrieve it, related scopes, Webhooks, and common use cases.
-
Using the Business Hours APIA guide to ReceiptRoller's Business Hours API (/api/v1/stores/{storeId}/business-hours). Covers retrieving and updating per-day business hours, registering special business days (temporary closures and hour changes), configuring a store's workable hours (the upper bound for shift creation), and determining whether the store is currently open.
-
Using the Orders / OMS APIA guide to CRUD operations on the orders under a business account using ReceiptRoller's Orders / OMS API (/api/v1/orders). Covers creating, updating, transitioning status (confirm, process, cancel), and deleting orders, plus the flow for Android / iOS apps and server integrations.