Lightspeed Inventory Sync
How inventory counts syncs between Lightspeed and Ramp
Overview
This article describes how stock-on-hand data is exchanged between Lightspeed and Ramp.
Sync Behaviour
Lightspeed → Ramp
Ramp retrieves the on-hand inventory level for every product at each synced Outlet once per scheduled run. This is a full snapshot: each run overwrites Ramp's recorded stock level with whatever Lightspeed currently reports, rather than applying incremental changes.
Which Outlets are included is set up for you during implementation, based on which locations you want stocktaked. If you'd like to add a new location later, get in touch with us so we can update the configuration.
Ramp → Lightspeed
Once a stocktake is completed in Ramp, the counted quantities are sent back to Lightspeed. How this happens depends on the type of count:
- A full count of an Outlet is sent to Lightspeed as a stocktake. Completing it also zeroes any stocked product the count didn't cover, so Lightspeed's records end up matching exactly what was counted.
- A SKU group stocktake in Ramp (a partial count of specific products, in Lightspeed's terms) is sent as targeted adjustments instead, touching only the products that were counted and leaving everything else at the Outlet untouched.
Sync Frequency
Imports (Lightspeed → Ramp): Runs on its own independent schedule, set per account.
Exports (Ramp → Lightspeed): Immediately after a stocktake is completed in Ramp.
Data Mapping
Import (Lightspeed → Ramp)
| Lightspeed | Ramp | Notes |
| outlet_id | Place PlaceId | |
| product_id | SkuExternalRef | |
| current_inventory_level | Place CurrentCount | Negative values are treated as 0. |
Export - full count (Ramp → Lightspeed)
| Ramp | Lightspeed | Notes |
| Place | outlet_id | Resolved via PlaceExternalRef |
| SkuExternalRef | product_id | |
| Inventory AvailableCount | received | Sent as the counted (observed) figure |
Export - SKU group stocktake / partial count (Ramp → Lightspeed)
| Ramp | Lightspeed | Notes |
| Place | outlet_id | Resolved via PlaceExternalRef |
| SkuExternalRef | product_id | |
| Inventory AvailableCount minus Lightspeed's current level | quantity | Sent as a signed adjustment, not an absolute count |
Each adjustment also carries a gain or loss reason. These are created automatically in Lightspeed (Catalog → Adjustment reasons) if they don't already exist - named "RFID STOCKTAKE GAIN" / "RFID STOCKTAKE LOSS" by default, customisable per account.