🛠 How to track substrate in inventory

Substrate — the mix of rice hulls, coconut fiber, peat or vermiculite in which seedlings are grown — is bought with an invoice, stored at the nursery and used up little by little, bag by bag. In upCampo it is tracked like any other input: it enters through inventory, has a balance, has an average cost and goes out when it is used.

What changes is the outflow. Crop protection products and fertilizers leave inventory inside a work order, which says which field received the application — that is how the cost reaches the field. Substrate has no such destination: it is used at the nursery, the seedbed, the seedling shed. Opening a work order for every bag used would be unworkable day to day, and it would also force you to pick a field that isn't true.

That is why substrate tracking is generic: its own storage location, inflow through the invoice, outflow with no field and no order. The path described here works the same for any material consumed with no area destination — nursery sand and vermiculite, PPE, cleaning supplies, packaging, wire, general-purpose screws.

The path, in four steps

  1. A storage location of its own, just for substrate.
  2. Product registration, with the unit in which it is bought and used.
  3. Balance inflow, through the invoice or as an opening balance.
  4. Outflow, by one of two paths: outbound movement or requisition.

1️⃣ Create a storage location just for substrate

Menu: Inventory > Storage Location

Register a location with a name the nursery staff will recognize — Substrate, Nursery, Nursery - Substrate. Separating it isn't mandatory, but it is what makes tracking work: the balance is kept apart from the crop protection warehouse, checking is quick and whoever runs the nursery looks only at what is theirs.

There is a technical reason too: in upCampo the average cost is calculated per product and per location, not per product alone. Substrate stored together with everything else goes into the same average for the whole location; in its own location, the average cost shown is the substrate's and nothing else.

💡 Check Controls balance on the location record if you want the system to block outflows when there isn't enough balance. With this option on, any withdrawal that would leave the balance negative is rejected with the message "The balance will become negative".

2️⃣ Register substrate as a product

Menu: Inventory > Product & Service

Without a registered product there is no inflow, no balance and no outflow — the record supports everything else. Each different substrate is a different product: if the nursery uses one for trays and another for bags, that's two records, and each will have its own balance and cost.

Before creating it, check whether there is a product class that fits — something like Nursery inputs or Materials. The class groups the product in reports and generates the code abbreviation.

⚠️ The unit is the decision that isn't easy to undo. Choose the same unit in which the substrate is bought and delivered to the nursery — bag, kilogram, liter or cubic meter. The product's whole life is counted in it: the invoice inflow, the balance, the outflow and the unit cost. Buying in cubic meters and handing out bags, with the product registered in cubic meters, means converting in your head every time someone takes material.
💡 If the substrate has an expiration date or you need to know which shipment each tray came from, enable lot tracking on the product record. Inflows and outflows will then ask for the lot.

3️⃣ Enter the balance

Menu: Inventory > Movement

Inflow is always through Movement, and the header's Type changes with the situation:

SituationType to use
A purchase invoice arrived Inbound with invoice — enter the supplier, the number and the date. If you have the access key, the invoice can be imported and the items come filled in.
The substrate is already at the nursery and you are starting to track it now Standalone inbound — it asks for no supplier or invoice number: just a description of what is being entered, the product, the quantity and the value.

In either case, what raises the balance is the item. On each line, the field Type - 'this cost GOES TO:' must be set to To inventory, and the Storage Location must be the substrate's.

⚠️ Only "To inventory" changes the balance. The other options in that field — To a field, To a fleet, To an allocation, To an entity and Standalone — send the cost to another destination and don't even show the storage location field. An item entered with one of them goes into the document, but does not go into the nursery balance. It is the most common mistake when learning this screen.
💡 To adjust a balance that already existed, without an invoice, the other path is the Inventory count: you enter what you counted and the system applies the difference.

4️⃣ Outflow: two paths

This is the question behind most support requests. With no field and no work order, there are two ways to take substrate out of inventory, and both have the same effect on the balance. What changes is how much is recorded about who asked for it and why.

Outbound movementRequisition
Where it isInventory > MovementInventory > Requisition
When to useBulk consumption, entered by the storekeeper: the month's usage, a large withdrawal all at once.Over-the-counter handout, item by item, with a record of who asked.
Records the requesterNoYes — Requester, Department and Priority
Cost centerOn the item, through the cost destinationOn the document header
Document has a statusNoYes — Open or Finalized

Path A — Outbound movement

Menu: Inventory > Movement

Choose the Type Standalone outbound — the outflow that issues no invoice, which is the case for internal consumption. The header asks for little: a date and a description that explains the entry ("Substrate used at the nursery — September").

On the item, the field is now called Type - 'this cost COMES FROM:'. Keep it on To inventory and choose the substrate location: that combination is what lowers the balance. Enter the product and the quantity.

📝 Tax fields such as CFOP and CST appear on the standalone outbound item, but they are not required to save — they are mandatory only for the outbound invoice, issued on the NFE Transmission screen.

Path B — Requisition

Menu: Inventory > Requisition

The requisition is the internal request: the nursery worker asks, the storekeeper hands it out, and there is a record of who asked for what and when. For substrate, set the header's Type to Inventory write-off — with this type the screen hides the maintenance work order and activity fields, which have nothing to do with this case.

Fill in the Description (required), the Requester, the Department and, if the farm tracks expenses that way, the Cost Center. Save the header and add the item with Type set to Inventory outflow — the screen then asks for the storage location and shows the Inventory balance next to it, before you promise what you don't have.

⚠️ The balance drops when the item is saved, not when the requisition is finalized. The Send to Purchasing or Finalize button closes the document; the inventory withdrawal already happened the moment the product line was saved. An item entered by mistake is corrected by deleting or editing the line, which returns the balance.

💰 Where the substrate cost shows up

It's worth saying clearly, because it's the next question: since there is no field on the outflow, the substrate cost does not go into the cost per field for that season — that number comes from work orders, which are allocated by each field's area.

What is recorded is the consumption: the quantity that went out, the value at the location's average cost and the date. This shows up in the inventory history and in the movement reports. To follow nursery spending that way, the path is the cost center — entered on the requisition header — and the separate storage location itself, which already isolates what belongs to the nursery.


📊 Reports and dashboards

EST.01.01 (formerly 012) - Local X Estoque (Saldo atual): how much substrate is still at the nursery
EST.02.05 (formerly 12.3l) - Histórico por Local de Estoque: every inflow and outflow at the location, in the order they happened
EST.02.02 (formerly 011.D) - Movimentações: history of product inflows and outflows
EST.01.06 (formerly 012.C) - Estoque abaixo do nível mínimo: warns when substrate is running out, if the product has a minimum level registered
✅ Result: substrate stops being the material that comes in on an invoice and disappears:
  • Nursery balance you can check at any time, without counting bags in the shed
  • Substrate average cost isolated from the rest of the storeroom
  • Consumption recorded with a date — and, through the requisition, with the name of who asked
  • No made-up work orders, and no field chosen for lack of an option

❓ Frequently asked questions

Do I need to create a work order to take substrate out of inventory?

No. The work order exists to take cost to a field, and substrate is consumed at the nursery, with no defined area. The outflow is done directly, through a Standalone outbound on the Movement screen or through a Requisition with an item of type "Inventory outflow". Both lower the balance the same way.

What's the difference between taking it out through Movement and through Requisition?

For the balance, none: both remove the same quantity from the same location. The difference is the record. The standalone outbound Movement is an entry made by the storekeeper, good for bulk consumption. The Requisition keeps who asked, from which department, with what priority and under which cost center, and the document has an Open or Finalized status. Farms with a busy nursery usually prefer the requisition.

I entered the outflow and the balance didn't change. What was missing?

It's almost always the item type. In Movement, the field Type - 'this cost COMES FROM:' must be set to To inventory, with the storage location selected — with the other options (Standalone, To a fleet, To an entity, To a field, To an allocation) the screen doesn't even show the location field, and the item doesn't change the balance. In Requisition, the item type must be Inventory outflow; "Request to purchase" doesn't withdraw anything, because it is a purchase request.

Do I really need a storage location just for substrate?

It isn't mandatory, but it's recommended. In upCampo the average cost is calculated per product and per storage location, so a dedicated location keeps the substrate cost clean, separates the nursery balance from the crop protection warehouse and keeps the balance report readable for whoever looks after the seedlings.

How do I enter substrate that is already at the nursery, without an invoice?

Through a Standalone inbound on the Movement screen: it asks for no supplier or invoice number, just the description, the product, the quantity and the value. The other path is the Inventory count, where you enter the counted balance and the system applies the difference — it's the best choice when you are adjusting several products at once.

Does the substrate cost go into the field cost?

No. The cost per field comes from work orders, allocated by each field's area, and the substrate outflow doesn't go through any order. Consumption is recorded in the inventory history, with quantity, value and date, and can be followed by cost center and by the nursery's storage location.

Is this only for substrate?

No. It applies to any material the farm consumes with no area destination: nursery sand and vermiculite, PPE, cleaning supplies, packaging, wire, general-purpose screws. The product and storage location names change; the path is the same — a dedicated location, a registered product, inflow through Movement and outflow through an outbound movement or a requisition.