{% extends "base.html" %} {% import 'components/macros.html' as ui %} {% block title %}Bulk Import Products{% endblock %} {% block head_extra %} {% endblock %} {% block content %}

Bulk Import Products (CSV)

Upload a CSV file to add or restock products in bulk. The import runs through a progress page so large files can finish reliably.

Recovery reminder: if products are missing after an app update, upload your last downloaded inventory CSV here. After a successful import, open AI CSV Agent, regenerate the CSV, and download a fresh personal backup.
{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}

{{ message }}

{% endfor %} {% endif %} {% endwith %}
CSV format:
The first row must be headers. Required columns:
  • name - Product name (required)
  • price - Selling price as a number (required)
  • buying_price - Buying/cost price (optional, defaults to 0)
  • stock - Initial stock quantity (optional, defaults to 0)
  • barcode or product_code - Barcode/SKU/product code, including codes like P001 (optional)
  • product_id - Numeric custom shop product ID (optional)
  • fund_source - business, personal, or loans (optional)
  • item_type - product or service (optional)
Existing products are updated/restocked when the CSV matches by product_id, product_code, barcode, or name. Alternate headers also work, such as product, product_name, selling_price, unit_price, quantity, sku, product_sku, and cost_price. Currency text like KSh 1,200 is accepted.

Example:
name,price,buying_price,stock,barcode,product_id,fund_source,item_type
Shampoo,250,180,100,SHAM001,101,business,product
Conditioner,300,220,80,COND001,102,business,product

Regenerate / Download Inventory CSV
Back to Inventory
{% endblock %}