Data Sources
Upload sales files. Every row is validated before anything is written.
Import sales data
One row per order line. CSV (UTF-8) or Excel .xlsx; dates as YYYY-MM-DD.
Drag a file here, or
File format and validation rules
- Required columns:
order_id, order_date, store_id, channel, product_sku, product_name, category, quantity, unit_price, unit_cost, status - Optional:
line_number, discount_amount, customer_id, customer_segment, customer_region, store_name, store_region - channel: in_store, online, marketplace · status: completed, cancelled, returned.
- Money uses plain numbers with at most 2 decimals; discount_amount is an absolute amount per line.
- If any line of an order is invalid, the whole order is rejected — orders are never imported partially.
- When adding, orders that already exist are never overwritten and the same file twice is refused.
- When replacing, a file with no valid orders is refused and your existing data stays as it was.
- Excel formulas and macros are never executed; .xlsm files are not accepted.
Import history
Every attempt is recorded, including rejected and failed imports.
Demo dataset: run python -m app.cli seed in backend/ to load the synthetic sample (Jan 2025 – Jun 2026).