- You operate multiple physical stores
- You sell across different markets (countries)
- You manage multiple sales channels (Online / Marketplace / Wholesale)
- Prices, costs, tax rates, or stock differ per store
One product in one specific store (or market / channel)
When to use store-level data
Use this dataset if:- Prices vary by store
- Unit cost differs by warehouse or region
- Stock is managed per store
- Tax rates vary by country
- Some products are active in certain stores only
Data schema
You may include additional attributes as separate columns (CSV / XLSX upload only — the JSON API rejects unknown fields).
Matching logic
item_idmust match the Products datasetstore_idmust match a store defined in Stores management
- Exact match
- Composite keys (item_id + store_id)
- Custom identifiers
Load by CSV or by API
Store-level data can be loaded two ways:- CSV / XLSX upload — via the Datasets page, following the format requirements below.
- Public API — push product-store records programmatically (
POST /v1/product_store/bulkfor JSON records,POST /v1/imports/product_storefor CSV import), one record per product-store combination. The upsert key is(item_id, store_id);store_idis required on product-store payloads — product-level records are managed via the Products endpoints instead. See the API changelog for details.
- Required fields in API payloads:
item_id,sku,store_id,current_price. Note thatskuis required in API payloads even though it is not a CSV column, and the CSVpricecolumn is namedcurrent_pricein the API. stockis namedstock_on_handin the API.- API-only optional fields:
store_name,country_code.
Price interpretation logic
Retailgrid applies the following logic:-
If
regular_priceexists andprice<regular_price→ product is considered on promotion -
Margin is calculated as:
-
If
tax_rateis provided, gross/net calculations are supported
Store / market / channel flexibility
store_id can represent:
- Physical store
- Country
- Warehouse
- Online shop
- Marketplace (Amazon, Zalando, etc.)
- B2B vs B2C channel
Currency handling
If multiple stores use different currencies:- Currency must be provided
- FX conversion rules must be configured
Keep price and cost in the same currency per row.
Time handling
This dataset is typically a current snapshot, not time-series. Ifprice_effective_date is provided:
- Future price simulations become possible
- Scheduled price changes can be modeled
Data format requirements
Supported formats:- CSV (recommended)
- XLSX
- UTF-8
- Dot (.) as decimal separator
- One row = one product × one store
- Do not duplicate identical product-store combinations
- Use consistent store_id formatting
Validation rules
Upload will fail if:item_idis missingstore_idis missingpriceis missing or non-numeric- Matching with Products dataset fails
Example row
How Retailgrid uses store-level data
This dataset powers:Margin analysis per store
- Store-level profitability
- Margin leakage detection
Local price optimization
- Dynamic pricing by store
- Market-based pricing
Assortment strategy
- Store-specific availability
- Stock-based pricing decisions
Promotion strategy
- Local promo activation
- Regional discount benchmarking
Advanced recommendations
For best results:- Always provide
unit_costfor margin optimization - Keep store identifiers consistent
- Provide stock for AI-driven replenishment signals
- Include tax_rate for cross-country operations

