Skip to main content
Products are the items your shop sells, and every product belongs to exactly one shop. Each product record tracks not just the name and price, but also cost, stock level, barcode, and unit of measure. Whether you’re running a small bakery or a large electronics store, the product model gives you the flexibility to represent your catalog accurately.

Product Data Model

The table below covers every key field in the ProductOut schema returned by the API.

Categories

Custom categories are created per shop and let you organize products in a way that matches your own business logic. Categories support nesting via parent_id, so you can build hierarchies like Beverages → Cold Drinks → Juices.

Barcode Lookup

Mutasib supports two barcode lookup paths: one scoped to your shop, and one that queries the global OpenFood database.

Lookup Within Your Shop

Find a product in your shop’s catalog by scanning its barcode. This is the endpoint used by the POS screen when a cashier scans an item.
If the barcode matches a product in your shop, the full ProductOut object is returned. If no match is found, the API returns 404.

Global OpenFood Database

If a scanned barcode doesn’t exist in your shop yet, you can look it up in the OpenFood global database to pre-fill product details before creating a new record.
The country query parameter scopes the lookup; pass world to search the global OpenFood dataset. The response includes publicly available product metadata such as name, brand, and images sourced from OpenFood contributors worldwide.
The OpenFood lookup is read-only — it never creates a product in your shop automatically. You still need to call POST /api/v1/shops/{shop_id}/products/ with the returned data to add the item to your catalog.

API Endpoints