Mosce ERP · Help Center
Operations

Products

Product catalog: SKU, price, mandatory cost, sales and purchase taxes, variants, lots, serial numbers and the link to inventory.

Summary: the Products catalog feeds invoices, quotes, orders, POS and purchases. Here you define the SKU, sale price, cost, whether it pays ITBIS, its category and whether it is a physical product (with stock) or a service.

Reading time: ~6 min

When to use this

Read this article if you need to:

  • Register a physical product you sell and want to track in inventory.
  • Register a service (does not handle stock) so you can invoice it.
  • Adjust the price, cost or profit margin of an existing product.
  • Associate a product with a category to group reports and margins.

Before you start

  • You need the products:create permission to create and products:update to edit.
  • If you are going to classify the product, first create the category in Categories.
  • If you handle multiple warehouses, be clear about which will be the product's default warehouse.

Step by step

Create a product

  1. Enter the module. In the side bar press Operations → Products. (screenshot: product catalog)
  2. Press "New product" in the header. A form opens with four sections: Basic information, Categorization, Prices and Inventory.
  3. Basic information.
    • Product name (required).
    • SKU (required) - unique internal code. It is unique per company, so it cannot be repeated.
    • Barcode (optional) - for scanning at POS. It is also unique.
    • Internal code (optional) - additional reference, with no uniqueness restriction.
    • Description - text that appears on the invoice.
    • Image - upload a file (max 5 MB) or paste a URL if file storage is not available.
    • Active - if you turn it off, the product stops appearing on invoices and POS but the history is kept.
  4. Categorization.
    • Category - select the category it belongs to (can be left empty).
    • Type: Product (physical, carries stock) or Service (does not carry stock, generates no inventory movement).
  5. Prices.
    • Unit price (required) - sale price with no special formatting; it is stored in cents (RD$ 100.00 = 10000).
    • Cost price (required) - acquisition cost. It is the basis for computing the margin and is preloaded when creating purchase orders. If you leave it empty, the form will not let you save - this applies both when creating and when editing, so a product can never be left without a cost (it used to be optional, which caused purchases to show a cost of 0).
    • Profit margin (%) - profit margin over cost. It is linked to the sale price: see below. If you leave it empty, the system uses the tenant's default margin configured in Settings.
    • Sales tax - the ITBIS rate (or another) applied when you sell the product. It is chosen from the configured rate catalog; "Exempt" for products with no tax.
    • Purchase tax - the rate preloaded when you add the product to a purchase order. It is independent from the sales tax because many products receive a different ITBIS treatment when bought than when sold.
  6. Inventory.
    • Unit of measure - free text (unit, box, kg, hour).
  7. Press "Create". The product becomes available immediately on invoices, POS and quotes.

Margin and sale price are linked

In the Prices section, the margin and the sale price stay consistent automatically:

  • If you change the margin, the sale price is recomputed: price = cost × (1 + margin/100).
  • If you change the sale price, the margin is recomputed in reverse to show the real margin: margin = (price − cost) / cost × 100.

The cost does NOT enter this link: editing it by hand recomputes neither the price nor the margin, because cost is governed by purchases (weighted-average cost). To understand the full model of costs, margins and prices - including why a percentage like "525%" can be correct - read Costs, margins and prices.

Edit a product

  1. In the list press the pencil icon on the product row, or click the row to enter the detail and then Edit.
  2. Change the fields and press Update.

Cost remains mandatory when editing. The Cost price cannot be left empty when updating a product, just as when creating it. If you clear it, the form will not let you save. This prevents a product from losing its cost and ending up showing a margin or cost of 0 in purchases, orders and sales to Special Regime customers (where the price is computed from cost).

Search and export

  • Search - use the top bar; filter by name or SKU.
  • Export CSV - press Export CSV to download the whole catalog. Requires the products:export permission.

Advanced tracking: variants, lots and serial numbers

For products that need it, the record includes three tracking options that are enabled independently. When you enable any of them, the purchase-receipt flows and the reports start asking for the corresponding information.

Track by lot

For products with an expiration date (food, medicine, chemicals), enable "Track by lot". From then on, when receiving merchandise you are asked for the lot number (required) and the expiration date (optional) for each line. With that information, Mosce ERP builds the Stock nearing expiration report and a Lot traceability that shows the full life cycle of the lot: when it came in, where it is, how much moved, when it was sold or adjusted.

The system accepts free lot numbers printed by the supplier. If the same lot number arrives in a second receipt, the existing row is reused to preserve the history.

If the same lot number is received more than once with different expiration dates, the system keeps the date of the first receipt in the lot's record (that is the auditable historical date). Each new receipt saves its own date separately, and that is the one reported to DGII on that receipt's voucher through the <FechaVencimientoItem> field; but the lot's historical record is not overwritten.

Track by serial number

For products controlled unit by unit (electronics, vehicles, equipment with IMEI / VIN / MAC), enable "Track by serial number". Each receipt will require a list of serial numbers per line (one for each unit received; the list's count must match the received quantity). The system validates the count and rejects duplicates.

Each unit carries a state that updates on its own: Available on receipt, Sold when sold, Returned when the receipt is voided (there are also Reserved and Lost). Transitions are fixed to avoid inconsistencies - for example, a unit cannot go from Sold to Available without passing through Returned. The Serial-number traceability page lets you search a unit by its number and see its current state and full history.

Handle variants

For products sold in different presentations (size, color, flavor, presentation), enable "Handle variants". A Variants button appears in the product detail that opens the management page: there you create each variant with a required name (for example "Size M / Red") and an optional SKU. The system prevents duplicate names within the same product and duplicate SKUs within the whole business.

When receiving merchandise for a product with variants, a Variant selector (required) appears populated with the active variants. You can deactivate a variant you no longer sell: it stops appearing in the receipt and sale selectors, but it is not deleted - it is kept for history, because it may be referenced by previous purchases.

Initial stock and inventory

The product form does not set the initial stock. To load stock go to Inventory → Warehouses and record an inflow movement or an adjustment with the initial count. As long as a physical product has no stock, the invoices that consume it will end up with a negative available quantity.

Sales history of the product

In each product's detail you will find a Sales history view: the list of every time that product has been sold, so you can see at a glance to whom, when, how much and at what price. It is a different view from the stock movements kardex (which records any stock change: inflows, outflows, adjustments, transfers). The sales history focuses only on the product's sale lines.

Availability: the sales history per product is available from the STARTER plan onward. On the Free plan this view does not appear.

Each row of the history shows:

  • Sale date.
  • Order number, with a link to open the full order.
  • Customer it was sold to.
  • Quantity sold on that line.
  • Unit price at which it was sold.
  • Discount applied to the line.
  • Line ITBIS.
  • Line total.
  • Cost and margin at the time of the sale (the line margin: line total minus cost times quantity).

You can filter by customer and by date range to answer specific questions: "how much of this product have I sold to this customer?", "what price did it go out at last month?". The view is paginated, so a product with a lot of movement is navigated by pages without loading everything at once.

Seeing this view requires the orders read permission (orders:read), the same one needed to look at orders: whoever can view orders can view the product's sales history.

Delete a product

Press the trash icon on the row. Just as with customers, it is a logical deletion: the product is hidden but past documents that reference it keep working.

Expected result

  • The product appears on invoices, quotes, orders and POS when searched by name, SKU or barcode.
  • The profit margin is computed automatically over the recorded cost.
  • If it is of type Product, inventory starts moving with each purchase and sale. If it is a Service, no stock is deducted.

Common errors

ErrorCauseSolution
"The SKU already exists"Another product of the same tenant already uses that SKU.Change the SKU or reactivate the existing product.
"The barcode already exists"Same case but with the barcode field.First check whether the product is already created by scanning it.
The product does not appear when invoicingIt is inactive or deleted.Edit it and turn on the Active switch.
ITBIS is not computedThe product has Exempt selected as its sales tax, or there is no rate configured in Administration → Fiscal.Choose the correct rate in Sales tax and review the rate configuration.
I cannot save the productThe Cost price field is empty (it is now required).Enter the acquisition cost; if you do not know it yet, put an estimate and adjust it later.
I cannot upload an imageThe storage service is not yet active on your plan.The system automatically switches to a URL field - paste a public link to the image.