View Categories

Multi Location Inventory REST API

3 min read

Multi Location Inventory adds its own REST API next to the Rentals & Bookings API. Use it to connect a POS, a warehouse or scanner app, a channel manager or your own storefront. This page lists the endpoints and shows the ones you will use most.

Authentication and namespaces #

NamespaceForWho can use it
/wp-json/wc-simultilocation/v1/The store: locations, stock, availability, prices, transfers, franchisesUsers who can manage WooCommerce (administrators and shop managers)
/wp-json/simultilocation/v1/Public, read-only: the locations list for storefront pickers, and calendar feedsAnyone

For the store endpoints, use WooCommerce REST API keys (WooCommerce > Settings > Advanced > REST API) with HTTP Basic authentication over HTTPS, or a logged-in session with a REST nonce. There are no keys limited to one location or one franchise: location staff and franchise owners use the admin screens.

In the location, return_location, from and to parameters a location can be given by id, by code (TPA) or by web address name (tampa). Location ids inside a request body (locations, from_location_id, to_location_id) are numeric.

Stock by location for a product #

GET /wc-simultilocation/v1/stock/products/{id}

Returns the product’s stock at each location. For a variation, use the variation’s id.

curl -u ck_xxx:cs_xxx https://yourstore.com/wp-json/wc-simultilocation/v1/stock/products/143273
{
  "product_id": 143273,
  "kind": "sale",
  "mode": "selected",
  "manage_stock": true,
  "stock_total": 31,
  "locations": [
    { "id": 1,    "code": "ORL", "name": "Orlando",     "offered": true, "quantity": 10, "low_stock": 4, "available": 10 },
    { "id": 9174, "code": "TPA", "name": "Tampa",       "offered": true, "quantity": 2,  "low_stock": 5, "available": 2 },
    { "id": 9175, "code": "MIA", "name": "Miami Beach", "offered": true, "quantity": 19, "low_stock": 6, "available": 19 }
  ]
}

kind is rental or sale; mode is selected (each location has its own stock) or everywhere (one shared stock); stock_total is WooCommerce’s stock for the product.

PUT /wc-simultilocation/v1/stock/products/{id}

Changes the stock at one or more locations. Only the locations you name change. Each change is recorded in the stock journal as an adjustment.

curl -u ck_xxx:cs_xxx -X PUT -H "Content-Type: application/json" \
  -d '{"locations":[{"id":9174,"quantity":12,"low_stock":4},{"id":9175,"offered":false}]}' \
  https://yourstore.com/wp-json/wc-simultilocation/v1/stock/products/143273

Send "mode":"everywhere" to go back to one shared stock. A variable product’s parent is refused (see Multi Location Inventory Limitations and FAQ).

Availability and prices at a location #

GET /wc-simultilocation/v1/availability?product_id=99868&location=tampa&start=2026-10-07&end=2026-10-10&quantity=1

{ "product_id": 99868, "location": { "id": 9174, "code": "TPA", "slug": "tampa" },
  "start": "2026-10-07 00:00:00", "end": "2026-10-10 00:00:00",
  "requested": 1, "offered": true, "stock": "location", "available": 5, "ok": true }

Add return_location for a one-way rental.

GET /wc-simultilocation/v1/pricing/quote takes the same parameters and returns the total, the price lines (including the location’s price rule and any one-way fee) and which rule applied.

GET /wc-simultilocation/v1/availability/search lists what a route and dates can have, each with a quote.

All endpoints #

Locations and price rules #

MethodEndpointWhat it does
GET, POST/locationsList or create locations
GET, PATCH, DELETE/locations/{id}Read, change or delete a location. Delete is refused while it has stock or bookings to come.
GET, PUT/locations/{id}/productsThe products offered at a location, with their units
GET, PUT/locations/{id}/staffWho works at a location
GET, POST/locations/{id}/ratesA location’s price rules
PATCH, DELETE/rates/{id}Change or delete a price rule
GET/availability, /availability/searchAvailability at a location, or for a route and dates
GET/pricing/quoteA price at a location

Stock and transfers #

MethodEndpointWhat it does
GET, PUT/stock/products/{id}A product’s stock at each location
GET/stock/positionsUnits on hand and on the way at each location, and where each serial-numbered unit is
GET/stock/timelineA product day by day at each location (what Stock by location shows)
GET/stock/alertsOpen shortage, late transfer, overdue and stock level alerts
POST/stock/alerts/{id}/acknowledgeAcknowledge an alert
GET, POST/transfersList or plan transfers
POST/transfers/instantMove units now
GET/transfers/suggestionsSuggested transfers
GET, PATCH/transfers/{id}Read or change a planned transfer
POST/transfers/{id}/dispatch, /receive, /cancelDispatch, receive or cancel
POST/transfers/{id}/dispatch/scan, /receive/scanDispatch or receive by scanning serial codes (codes[])
GET/movesThe stock journal, filtered by product_id, location_id, serial_id, booking_id, transfer_id, kind, date_from and date_to

Franchises #

MethodEndpointWhat it does
GET, POST/franchisesList or create franchises
GET, PATCH, DELETE/franchises/{id}Read, change or delete a franchise
GET, PUT/franchises/{id}/usersOwners and accountants
POST, DELETE/franchises/{id}/locations/{location}Hand a location to the franchise, or back to the brand
POST/locations/{id}/copy-rangeCopy another location’s range of products (without units)
GET/franchises/{id}/settlementThe settlement for a period, as JSON or format=csv

Public #

MethodEndpointWhat it does
GET/simultilocation/v1/locationsActive locations with their address, today’s hours, delivery area and link, for your own picker
GET/simultilocation/v1/locations/resolveThe location that serves a place typed by a customer (limited to 30 requests a minute per visitor)
GET/simultilocation/v1/ical/location/{id}/{token}.icsA location’s staff calendar (the address comes from the location screen)

Rentals & Bookings endpoints #

The Rentals & Bookings REST API (wc-sibooking/v1) keeps working as before. Its availability and quotes answer for the whole shop; use the Multi Location Inventory endpoints above for a single location.