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 #
| Namespace | For | Who can use it |
|---|---|---|
/wp-json/wc-simultilocation/v1/ | The store: locations, stock, availability, prices, transfers, franchises | Users who can manage WooCommerce (administrators and shop managers) |
/wp-json/simultilocation/v1/ | Public, read-only: the locations list for storefront pickers, and calendar feeds | Anyone |
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 #
| Method | Endpoint | What it does |
|---|---|---|
| GET, POST | /locations | List 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}/products | The products offered at a location, with their units |
| GET, PUT | /locations/{id}/staff | Who works at a location |
| GET, POST | /locations/{id}/rates | A location’s price rules |
| PATCH, DELETE | /rates/{id} | Change or delete a price rule |
| GET | /availability, /availability/search | Availability at a location, or for a route and dates |
| GET | /pricing/quote | A price at a location |
Stock and transfers #
| Method | Endpoint | What it does |
|---|---|---|
| GET, PUT | /stock/products/{id} | A product’s stock at each location |
| GET | /stock/positions | Units on hand and on the way at each location, and where each serial-numbered unit is |
| GET | /stock/timeline | A product day by day at each location (what Stock by location shows) |
| GET | /stock/alerts | Open shortage, late transfer, overdue and stock level alerts |
| POST | /stock/alerts/{id}/acknowledge | Acknowledge an alert |
| GET, POST | /transfers | List or plan transfers |
| POST | /transfers/instant | Move units now |
| GET | /transfers/suggestions | Suggested transfers |
| GET, PATCH | /transfers/{id} | Read or change a planned transfer |
| POST | /transfers/{id}/dispatch, /receive, /cancel | Dispatch, receive or cancel |
| POST | /transfers/{id}/dispatch/scan, /receive/scan | Dispatch or receive by scanning serial codes (codes[]) |
| GET | /moves | The stock journal, filtered by product_id, location_id, serial_id, booking_id, transfer_id, kind, date_from and date_to |
Franchises #
| Method | Endpoint | What it does |
|---|---|---|
| GET, POST | /franchises | List or create franchises |
| GET, PATCH, DELETE | /franchises/{id} | Read, change or delete a franchise |
| GET, PUT | /franchises/{id}/users | Owners and accountants |
| POST, DELETE | /franchises/{id}/locations/{location} | Hand a location to the franchise, or back to the brand |
| POST | /locations/{id}/copy-range | Copy another location’s range of products (without units) |
| GET | /franchises/{id}/settlement | The settlement for a period, as JSON or format=csv |
Public #
| Method | Endpoint | What it does |
|---|---|---|
| GET | /simultilocation/v1/locations | Active locations with their address, today’s hours, delivery area and link, for your own picker |
| GET | /simultilocation/v1/locations/resolve | The location that serves a place typed by a customer (limited to 30 requests a minute per visitor) |
| GET | /simultilocation/v1/ical/location/{id}/{token}.ics | A 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.
