{"title":"Receive stock from a supplier","slug":"receive-stock-from-a-supplier","url":"https://support.storeconnect.com/articles/receive-stock-from-a-supplier","url_markdown":"https://support.storeconnect.com/articles/receive-stock-from-a-supplier.md","subtitle":null,"summary":"Set a reorder point on a stock level, then record incoming supplier stock as a manual stock adjustment that captures unit cost and links back to the supplier. Use this to run replenishment and keep inventory valuation accurate.","type":"Help_Documentation","video_url":"","keywords":"receive stock, goods receipt, replenishment, reorder, reorder point, minimum stock reorder level, out of stock level, manual stock adjustment, unit cost, inventory valuation, value variance, supplier, purchase order, restock, stock on hand, back office, short delivery, damaged stock, damaged on arrival, write off stock, shrinkage, stock loss, supplier return, RMA, when to reorder, stock arrived damaged, GRN, goods received note, goods in, goods inwards, delivery note, booking in stock, three way match","last_modified":"2026-09-16T07:15:50+0000","body_markdown":"Replenishment has two halves: knowing when to reorder, and recording what arrives. StoreConnect handles the first with a reorder point on each stock level, and the second with a manual stock adjustment that captures the unit cost and the supplier it came from.\n\nUse this process when you buy stock in from suppliers and want your inventory counts and cost valuation to stay accurate.\n\n:::note\nStoreConnect has no supplier purchase order object. Where you see **Purchase Order** in StoreConnect, it refers to a business customer's own PO number captured at checkout, which is the opposite direction of trade. If you raise formal purchase orders to your suppliers, do that in your accounting or ERP system, and use the process below to record the stock when it arrives.\n:::\n\n## Before you start\n\n-   Create stock locations and stock levels for the products you are receiving. See [Stock locations](stock-locations).\n-   Link each product to its supplier, so the receipt can reference real terms. See [Product suppliers](product-suppliers).\n\n## Set a reorder point\n\nEach **Stock Level** record carries two thresholds. They do different jobs, and neither one blocks a sale on its own.\n\n| Field | API name | What it does |\n|-------|----------|--------------|\n| **Minimum Stock Reorder Level** | `s_c__Minimum_Stock_Reorder_Level__c` | The quantity you want to keep on hand at all times. It flags that a product needs restocking and has no effect on whether the product can be sold. |\n| **Out of Stock Level** | `s_c__Out_Of_Stock_Level__c` | The **Available to Sell** figure at which the store treats the product as out of stock. Setting it to `5` shows the product as out of stock once **Available to Sell** reaches 5. |\n\nUse them together to stop selling before you hit zero. Set **Out of Stock Level** to the point at which you want the storefront to stop taking orders, and **Minimum Stock Reorder Level** above it, so the reorder flag is raised while you can still sell.\n\n:::warning\n**Out of Stock Level does not reserve units.** It decides when the product stops being purchasable, not how many units the storefront may sell. While **Available to Sell** is still above the threshold, a single order can take every unit, including the ones below it. With **Available to Sell** at `20` and **Out of Stock Level** at `5`, one customer ordering 20 succeeds and leaves you at zero.\n\nTreat the threshold as a cut-off, not as stock held back for another channel. If you need units genuinely ring-fenced for walk-in trade, hold them at a separate **Stock Location** with **Online Fulfillment Options** set to `Do not fulfill online orders`. The storefront ignores those stock levels entirely when it works out what is available. See [Stock locations](stock-locations).\n:::\n\nTo set the thresholds:\n\n1.  Open the **Stock Level** record for the product and location, or open the **Stock Management** component and click the inventory icon on the stock level row to open the **Inventory Details** side panel.\n2.  Enter the **Minimum Stock Reorder Level**.\n3.  Enter the **Out of Stock Level** if you want selling to stop above zero.\n4.  Click **Save**.\n\nThe **Inventory Details** side panel also shows **Count on Hand**, **Last Inventory Count**, and **Last Inventory Date** as read-only reference values, and you can move between stock level rows without closing it.\n\n:::note\n**A negative Out of Stock Level has no effect.** The field accepts a negative number, but the storefront treats a product as out of stock as soon as its total **Available to Sell** reaches zero, whatever the threshold says. You cannot use a negative value to permit a small amount of overselling. To keep selling past zero, select **Backorderable (sell if out of stock)?** on the stock level instead. See [Backorders](backorders).\n:::\n\n### Example: a product with a two-week lead time\n\nA product sells around 20 units a week and its supplier takes two weeks to deliver:\n\n-   **Minimum Stock Reorder Level** — `40`, so the product flags for reorder with roughly the lead time still in cover.\n-   **Out of Stock Level** — `5`, so the storefront stops taking orders while five units are still on the shelf rather than running to zero.\n\n### Build the reorder list\n\nA reorder list is every stock level that has fallen to its threshold. Salesforce reports cannot compare one field against another in a filter, so add a formula field first and filter on that.\n\n1.  In Salesforce Setup, open **Object Manager** and select **Stock Level**.\n2.  Create a field of type **Formula**, named `Needs Reorder`, returning **Checkbox**.\n3.  Enter the formula:\n\n    ```\n    s_c__Available_To_Sell__c \u003c= s_c__Minimum_Stock_Reorder_Level__c\n    ```\n\n4.  Save, then add the field to the **Stock Level** page layout so staff can see it on the record.\n5.  Go to the **Reports** tab and click **New Report**.\n6.  Choose a report type covering Stock Level and its Product. StoreConnect ships no packaged report types, so create a custom one in Setup under **Report Types** if none exists yet.\n7.  Filter on **Needs Reorder** equals `True`.\n8.  Group rows by **Product**, and add **Available to Sell**, **Count on Hand**, and **Minimum Stock Reorder Level** as columns.\n9.  Save and run the report.\n\nWatch the blank thresholds. A blank **Minimum Stock Reorder Level** compares as zero, so for those stock levels the formula reduces to **Available to Sell** at or below zero, and the product flags for reorder only once it has already run out. On the report it looks identical to a product comfortably in stock, right up to the point it becomes unsellable.\n\nTo keep those rows out of the list and handle them as a setup task instead, exclude blanks in the formula:\n\n```\nAND(\n  NOT(ISBLANK(s_c__Minimum_Stock_Reorder_Level__c)),\n  s_c__Available_To_Sell__c \u003c= s_c__Minimum_Stock_Reorder_Level__c\n)\n```\n\nThen report separately on stock levels where the threshold is blank, so the products nobody has set a threshold for are visible as a list of their own.\n\nTo get one list per supplier, build the equivalent report over **Supplier Accounts** grouped by **Account**, since the supplier lives on the Product Supplier record rather than on the stock level. Run the reorder report to see what needs buying, and the supplier report to see who to buy it from.\n\n## Record what arrives\n\nA **Manual Stock Adjustment** (`s_c__Manual_Stock_Adjustment__c`) groups many product quantity changes for one stock location into a single record, with a supplier reference and a cost per line. That makes it the right record for a goods receipt.\n\n:::warning\n**Saving one does not change your stock levels.** StoreConnect records the adjustment and its items; it does not apply them. Nothing in the platform acts on the **Status** field, so setting it to complete marks the paperwork done and moves no stock.\n\nApplying a receipt to stock is **your own automation**, normally a record-triggered Flow on the adjustment that writes to **Change Quantity** on each affected Stock Level. Decide what yours should be before you start receiving against these records, or you will accumulate accurate paperwork and untouched stock levels.\n:::\n\n:::note\nDo not confuse it with **Stock Adjustment** (`s_c__Stock_Adjustment__c`), which is the automatic history log of every quantity change. That log is written for you and should never be edited. See [Manage stock levels](managing-stock-levels).\n:::\n\n1.  Go to the **Manual Stock Adjustments** list.\n2.  Click **New**.\n3.  Set **Stock Location** to the location receiving the stock.\n4.  Set **Supplier** to the supplier Account the stock came from.\n5.  Set **Effective Date** to the date the stock arrived.\n6.  Enter the supplier's invoice or consignment number in **Reference**, and anything the receiving team needs to know in **Notes**.\n7.  Click **Save**.\n8.  In the **Manual Stock Adjustment Items** related list, add one item per product:\n    -   **Product** — the product received.\n    -   **Quantity** — the number of units received, as a relative change.\n    -   **Unit Cost** — the cost price per unit for this receipt. When POS creates the item it takes this from the product's **Cost Price** (`Product2.s_c__Cost_Price__c`), so keep that field current if you receive stock at POS.\n9.  Set **Status** to record where the receipt has got to, and **Committed By** to whoever checked it in. Both are for your own reporting and automation. Neither is read by StoreConnect.\n\nThe adjustment and its items now hold what arrived, at what cost, from which supplier. Your Flow is what turns that into a stock movement, by writing to **Change Quantity** on each Stock Level. Until it runs, the stock levels are unchanged and the **Stock Adjustment** history log has nothing new in it.\n\n### What the cost fields give you\n\nEach item can carry the valuation around the receipt, so the adjustment doubles as a costing record. These are plain fields, not formulas, and only the POS receiving path fills them in.\n\n| Field | API name | What it records |\n|-------|----------|-----------------|\n| **Unit Cost** | `s_c__Unit_Cost__c` | The cost price of the product when the item was created. |\n| **Stock On Hand** | `s_c__Stock_On_Hand__c` | The available stock on hand before this adjustment was applied. |\n| **Value On Hand** | `s_c__Value_On_Hand__c` | The total value of the product, at cost, before the adjustment. |\n| **Unit Variance** | `s_c__Unit_Variance__c` | The change in unit count after the adjustment. |\n| **Value Variance** | `s_c__Value_Variance__c` | The change in monetary value after the adjustment. |\n\nThe header record has **Total Variance Value** (`s_c__Total_Variance_Value__c`) for the value of the whole receipt.\n\n:::warning\n**An adjustment you create in Salesforce leaves every one of these blank.** They are populated only when POS creates the item, so a hand-built or Data Loader receipt has no valuation on it at all, and a report over them silently omits those rows.\n\nIf you receive stock in Salesforce and want the costing, your Flow has to write these fields as well as moving the stock. **Unit Cost** is the one that matters most: without it there is no record of what the receipt cost.\n:::\n\nWhere **Unit Cost** is populated and the **Supplier** is on the header, a report over manual stock adjustment items shows what stock was valued at over time, by supplier. That is the figure to check the blended **Landed Cost** against. See [Product suppliers](product-suppliers).\n\n:::note\nCost flows in one direction only: from the product's **Cost Price** onto the receipt, and only on the POS path. Receiving stock does not update the supplier's **Purchase Price** or **Landed Cost**, and nothing writes back to the **Supplier Account** record at all. Keep **Cost Price** accurate if you receive at POS, since that is where the receipt's valuation comes from.\n:::\n\n### Handle a short or damaged delivery\n\nDeliveries arrive short, broken, or wrong. Because **Quantity** on a manual stock adjustment item is a relative change, record what you can actually sell, not what the paperwork claims.\n\n-   **Short delivery** — enter the quantity that physically arrived. If the invoice says 50 and 48 arrived, enter `48` and note the shortfall in **Notes**. Chase the missing units as a separate receipt when they turn up.\n-   **Damaged on arrival, and you are sending it back** — leave the damaged units out of the receipt entirely. They never became sellable stock, so counting them in and out again just adds two entries that cancel.\n-   **Damaged on arrival, and you are keeping it** — receive the full quantity, then write off the damaged units separately so the loss is visible as a loss rather than hidden in a short receipt.\n\nPut the supplier's reference on the adjustment either way. When you later query why a supplier's landed cost is climbing, the shortfalls and damage recorded against their receipts are the evidence.\n\n### Write off damaged or missing stock\n\nStock is damaged in the warehouse, breaks in handling, and goes missing. That is a stock correction rather than a receipt, so use **Change Quantity** on the Stock Level record with a negative number, and record the reason.\n\nUse a stocktake instead when you have physically counted and want the counted figure to become the new baseline. See [Manage stock levels](managing-stock-levels) for a comparison of the correction methods, and [Record a stocktake](record-a-stocktake) for counts.\n\nKeeping write-offs separate from receipts is what makes shrinkage measurable. If damage is absorbed into short receipts, it looks like a supplier problem when it may be a handling problem.\n\n### Return goods to a supplier\n\nStoreConnect has no supplier return or RMA record. Handle a return in two parts:\n\n1.  Remove the units from sellable stock, using a negative **Change Quantity** on the Stock Level or a manual stock adjustment against the supplier.\n2.  Contact the supplier to arrange the return, and track the credit in your accounting system. Supplier contact details are on the supplier Account, and POS staff can reach them through the supplier list. See [Add a supplier list to POS](add-a-supplier-list).\n\n### Receive stock at POS\n\nPOS can reach stock adjustments directly, so receiving does not have to happen in Salesforce. Two POS actions are relevant:\n\n| Action | What it opens |\n|--------|---------------|\n| `nav:stock_adjustments` | The stock adjustments screen |\n| `nav:suppliers` | The suppliers list, for contacting the supplier about a short or damaged delivery |\n\nAdd both to a POS layout used by receiving staff, so a delivery can be checked in and queried from the same screen. See [POS layouts](pos-layouts) and [Add a supplier list to POS](add-a-supplier-list).\n\n## Moving stock you already own\n\nA manual stock adjustment records stock entering or leaving your business. Moving existing stock between your own locations is a different record. Use a stock transfer instead, so the stock is not counted twice. See [Transfer stock](creating-stock-transfers).\n\nOnce the adjustment is saved, the receipt is on file with its supplier, reference, and unit cost, and its items record what arrived. The stock itself moves when your own automation runs and writes to **Change Quantity**, so check the new **Count on Hand** on the Stock Level records before you treat the delivery as booked in."}