[{"data":1,"prerenderedAt":835},["ShallowReactive",2],{"doc:\u002Fv\u002F2026.3\u002Fcatalog\u002Finventory-movements":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"section":10,"version":11,"lastUpdated":12,"body":13,"_type":829,"_id":830,"_source":831,"_file":832,"_stem":833,"_extension":834},"\u002Fv\u002F2026.3\u002Fcatalog\u002Finventory-movements","catalog",false,"","Inventory movements and adjustments","Record stock adjustments, understand when invoices change stock, and audit every catalog movement from one workspace-wide ledger.","Catalog and inventory","2026.3","2026-07-12",{"type":14,"children":15,"toc":810},"root",[16,32,37,44,49,141,146,153,158,260,271,277,289,294,324,339,344,383,404,409,439,445,471,492,511,517,539,545,550,593,598,604,609,693,699,704,710,722,728,752,763,769,779,785],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21,24,30],{"type":22,"value":23},"text","Every change to a tracked product's stock is recorded as a ",{"type":17,"tag":25,"props":26,"children":27},"strong",{},[28],{"type":22,"value":29},"movement",{"type":22,"value":31},". Movements come from three places: manual adjustments you make, automatic deductions when you sell a product on an invoice, and the opening balance set when tracking is first turned on. Together they form a complete, tamper-resistant history of how stock reached its current level.",{"type":17,"tag":18,"props":33,"children":34},{},[35],{"type":22,"value":36},"This page covers how to make adjustments, exactly when invoices change stock, and how to read the workspace-wide movements ledger.",{"type":17,"tag":38,"props":39,"children":41},"h2",{"id":40},"record-a-manual-adjustment",[42],{"type":22,"value":43},"Record a manual adjustment",{"type":17,"tag":18,"props":45,"children":46},{},[47],{"type":22,"value":48},"Adjust stock whenever the physical count changes for a reason other than a sale — receiving a delivery, using supplies on a job, breakage, or a recount.",{"type":17,"tag":50,"props":51,"children":52},"ol",{},[53,73,85,124,136],{"type":17,"tag":54,"props":55,"children":56},"li",{},[57,59,64,66,71],{"type":22,"value":58},"Open the product in ",{"type":17,"tag":25,"props":60,"children":61},{},[62],{"type":22,"value":63},"Products Catalog",{"type":22,"value":65}," and go to its ",{"type":17,"tag":25,"props":67,"children":68},{},[69],{"type":22,"value":70},"Inventory",{"type":22,"value":72}," section.",{"type":17,"tag":54,"props":74,"children":75},{},[76,78,83],{"type":22,"value":77},"Choose ",{"type":17,"tag":25,"props":79,"children":80},{},[81],{"type":22,"value":82},"Adjust Stock \u002F Usage",{"type":22,"value":84},".",{"type":17,"tag":54,"props":86,"children":87},{},[88,90],{"type":22,"value":89},"Pick how the stock is changing:\n",{"type":17,"tag":91,"props":92,"children":93},"ul",{},[94,104,114],{"type":17,"tag":54,"props":95,"children":96},{},[97,102],{"type":17,"tag":25,"props":98,"children":99},{},[100],{"type":22,"value":101},"Add",{"type":22,"value":103}," — increase the level (for example, stock received).",{"type":17,"tag":54,"props":105,"children":106},{},[107,112],{"type":17,"tag":25,"props":108,"children":109},{},[110],{"type":22,"value":111},"Use",{"type":22,"value":113}," — decrease the level (for example, used on a job or wasted).",{"type":17,"tag":54,"props":115,"children":116},{},[117,122],{"type":17,"tag":25,"props":118,"children":119},{},[120],{"type":22,"value":121},"Set",{"type":22,"value":123}," — set the level to an exact number (for example, after a physical count).",{"type":17,"tag":54,"props":125,"children":126},{},[127,129,134],{"type":22,"value":128},"Enter the quantity, choose a ",{"type":17,"tag":25,"props":130,"children":131},{},[132],{"type":22,"value":133},"reason",{"type":22,"value":135},", and add an optional note.",{"type":17,"tag":54,"props":137,"children":138},{},[139],{"type":22,"value":140},"Save.",{"type":17,"tag":18,"props":142,"children":143},{},[144],{"type":22,"value":145},"The stock level updates immediately and the change is written to the ledger with your name, the time, and the reason.",{"type":17,"tag":147,"props":148,"children":150},"h3",{"id":149},"reason-categories",[151],{"type":22,"value":152},"Reason categories",{"type":17,"tag":18,"props":154,"children":155},{},[156],{"type":22,"value":157},"Choosing an accurate reason makes the history meaningful and your reports trustworthy. Available reasons include:",{"type":17,"tag":91,"props":159,"children":160},{},[161,171,181,191,201,230,240,250],{"type":17,"tag":54,"props":162,"children":163},{},[164,169],{"type":17,"tag":25,"props":165,"children":166},{},[167],{"type":22,"value":168},"Received",{"type":22,"value":170}," — stock arrived from a supplier.",{"type":17,"tag":54,"props":172,"children":173},{},[174,179],{"type":17,"tag":25,"props":175,"children":176},{},[177],{"type":22,"value":178},"Returned",{"type":22,"value":180}," — a customer return added stock back.",{"type":17,"tag":54,"props":182,"children":183},{},[184,189],{"type":17,"tag":25,"props":185,"children":186},{},[187],{"type":22,"value":188},"Used on job",{"type":22,"value":190}," — consumed while delivering work.",{"type":17,"tag":54,"props":192,"children":193},{},[194,199],{"type":17,"tag":25,"props":195,"children":196},{},[197],{"type":22,"value":198},"Used internally",{"type":22,"value":200}," — used by the business, not sold.",{"type":17,"tag":54,"props":202,"children":203},{},[204,209,211,216,217,222,223,228],{"type":17,"tag":25,"props":205,"children":206},{},[207],{"type":22,"value":208},"Spilled \u002F wasted",{"type":22,"value":210},", ",{"type":17,"tag":25,"props":212,"children":213},{},[214],{"type":22,"value":215},"Damaged",{"type":22,"value":210},{"type":17,"tag":25,"props":218,"children":219},{},[220],{"type":22,"value":221},"Expired",{"type":22,"value":210},{"type":17,"tag":25,"props":224,"children":225},{},[226],{"type":22,"value":227},"Mixed \u002F diluted",{"type":22,"value":229}," — loss reasons.",{"type":17,"tag":54,"props":231,"children":232},{},[233,238],{"type":17,"tag":25,"props":234,"children":235},{},[236],{"type":22,"value":237},"Counted",{"type":22,"value":239}," — a physical-count correction.",{"type":17,"tag":54,"props":241,"children":242},{},[243,248],{"type":17,"tag":25,"props":244,"children":245},{},[246],{"type":22,"value":247},"Manual correction",{"type":22,"value":249}," — a deliberate fix to the number.",{"type":17,"tag":54,"props":251,"children":252},{},[253,258],{"type":17,"tag":25,"props":254,"children":255},{},[256],{"type":22,"value":257},"Other",{"type":22,"value":259}," — anything that does not fit above.",{"type":17,"tag":18,"props":261,"children":262},{},[263,269],{"type":17,"tag":264,"props":265,"children":266},"em",{},[267],{"type":22,"value":268},"Invoice sale",{"type":22,"value":270}," is also a reason, but it is reserved for automatic deductions and is not selectable by hand.",{"type":17,"tag":38,"props":272,"children":274},{"id":273},"how-invoices-change-stock-automatically",[275],{"type":22,"value":276},"How invoices change stock automatically",{"type":17,"tag":18,"props":278,"children":279},{},[280,282,287],{"type":22,"value":281},"When you sell a tracked product on an invoice, Workspace369 adjusts stock for you — you do not need to record a separate \"Use\" movement. ",{"type":17,"tag":25,"props":283,"children":284},{},[285],{"type":22,"value":286},"You choose when that deduction happens:",{"type":22,"value":288}," the moment you issue the invoice, or the moment it is fully paid.",{"type":17,"tag":18,"props":290,"children":291},{},[292],{"type":22,"value":293},"Every workspace uses one of two timings:",{"type":17,"tag":91,"props":295,"children":296},{},[297,307],{"type":17,"tag":54,"props":298,"children":299},{},[300,305],{"type":17,"tag":25,"props":301,"children":302},{},[303],{"type":22,"value":304},"Deduct when issued",{"type":22,"value":306}," — stock is committed as soon as you create the invoice. Invoices have no draft state, so a new invoice is live the moment you bill it, and its tracked line items are deducted right then. Deleting the invoice adds the stock back.",{"type":17,"tag":54,"props":308,"children":309},{},[310,315,317,322],{"type":17,"tag":25,"props":311,"children":312},{},[313],{"type":22,"value":314},"Deduct when paid",{"type":22,"value":316}," — stock is committed only when the invoice is ",{"type":17,"tag":25,"props":318,"children":319},{},[320],{"type":22,"value":321},"fully paid",{"type":22,"value":323},". A partial payment leaves the invoice open and deducts nothing; the draw-down happens on the payment that settles the balance in full. If the invoice is later un-paid or deleted, the stock is added back.",{"type":17,"tag":18,"props":325,"children":326},{},[327,337],{"type":17,"tag":25,"props":328,"children":329},{},[330,332,336],{"type":22,"value":331},"The default is ",{"type":17,"tag":264,"props":333,"children":334},{},[335],{"type":22,"value":314},{"type":22,"value":84},{"type":22,"value":338}," This matches how Workspace369 has always behaved, so nothing changes for an existing workspace until someone opts in to issue-time deduction.",{"type":17,"tag":18,"props":340,"children":341},{},[342],{"type":22,"value":343},"Whichever timing is active, the first time an invoice reaches the point that commits stock, its line items are deducted once — never twice. The behavior is fully reversible, so stock always reflects reality:",{"type":17,"tag":91,"props":345,"children":346},{},[347,357,373],{"type":17,"tag":54,"props":348,"children":349},{},[350,355],{"type":17,"tag":25,"props":351,"children":352},{},[353],{"type":22,"value":354},"A committed invoice is deleted",{"type":22,"value":356}," — its stock is added back.",{"type":17,"tag":54,"props":358,"children":359},{},[360,365,367,371],{"type":17,"tag":25,"props":361,"children":362},{},[363],{"type":22,"value":364},"A paid invoice is marked unpaid",{"type":22,"value":366}," (in ",{"type":17,"tag":264,"props":368,"children":369},{},[370],{"type":22,"value":314},{"type":22,"value":372}," mode) — the deducted stock is added back.",{"type":17,"tag":54,"props":374,"children":375},{},[376,381],{"type":17,"tag":25,"props":377,"children":378},{},[379],{"type":22,"value":380},"A committed invoice is edited",{"type":22,"value":382}," (quantities change while it stays committed) — only the difference is applied.",{"type":17,"tag":18,"props":384,"children":385},{},[386,388,393,395,402],{"type":22,"value":387},"Deductions cover both the products on the invoice ",{"type":17,"tag":25,"props":389,"children":390},{},[391],{"type":22,"value":392},"and",{"type":22,"value":394}," any ",{"type":17,"tag":396,"props":397,"children":399},"a",{"href":398},"\u002Fv\u002F2026.3\u002Fcatalog\u002Finventory-tracking\u002F#track-supplies-used-by-a-service",[400],{"type":22,"value":401},"service supply recipes",{"type":22,"value":403}," — selling a service that consumes supplies draws down those supplies automatically. The process is idempotent: a background retry or a repeated action will not deduct the same stock twice.",{"type":17,"tag":18,"props":405,"children":406},{},[407],{"type":22,"value":408},"Before stock is committed, adding a tracked product shows a preview of the inventory impact — how much will be consumed and whether it would take stock low or negative — but nothing is deducted until the invoice reaches its committing point.",{"type":17,"tag":410,"props":411,"children":412},"blockquote",{},[413],{"type":17,"tag":18,"props":414,"children":415},{},[416,418,424,426,431,433,437],{"type":22,"value":417},"Not sure whether an invoice deducted stock? Open the ",{"type":17,"tag":396,"props":419,"children":421},{"href":420},"#audit-every-movement",[422],{"type":22,"value":423},"movements ledger",{"type":22,"value":425}," and filter by ",{"type":17,"tag":25,"props":427,"children":428},{},[429],{"type":22,"value":430},"Reference → Invoice",{"type":22,"value":432},", or open the product's recent history. Automatic deductions appear with the reason ",{"type":17,"tag":25,"props":434,"children":435},{},[436],{"type":22,"value":268},{"type":22,"value":438}," and a link back to the invoice.",{"type":17,"tag":147,"props":440,"children":442},{"id":441},"choose-when-stock-is-deducted",[443],{"type":22,"value":444},"Choose when stock is deducted",{"type":17,"tag":18,"props":446,"children":447},{},[448,450,455,457,462,464,469],{"type":22,"value":449},"Set the timing under ",{"type":17,"tag":25,"props":451,"children":452},{},[453],{"type":22,"value":454},"Settings → Product Settings → Inventory deduction",{"type":22,"value":456},", then pick ",{"type":17,"tag":25,"props":458,"children":459},{},[460],{"type":22,"value":461},"Issued",{"type":22,"value":463}," or ",{"type":17,"tag":25,"props":465,"children":466},{},[467],{"type":22,"value":468},"Paid",{"type":22,"value":470},":",{"type":17,"tag":91,"props":472,"children":473},{},[474,483],{"type":17,"tag":54,"props":475,"children":476},{},[477,481],{"type":17,"tag":25,"props":478,"children":479},{},[480],{"type":22,"value":461},{"type":22,"value":482}," suits businesses that fulfil at the point of billing — stock leaves as soon as the invoice goes out, so on-hand counts reflect what you have already committed to deliver.",{"type":17,"tag":54,"props":484,"children":485},{},[486,490],{"type":17,"tag":25,"props":487,"children":488},{},[489],{"type":22,"value":468},{"type":22,"value":491}," suits businesses that draw down stock only once payment clears — useful when unpaid invoices are common, or when orders are sometimes cancelled before they settle.",{"type":17,"tag":18,"props":493,"children":494},{},[495,497,502,504,510],{"type":22,"value":496},"Changing the setting applies to ",{"type":17,"tag":25,"props":498,"children":499},{},[500],{"type":22,"value":501},"new activity going forward",{"type":22,"value":503},". It does not retroactively re-deduct or restore stock on invoices that already exist: those keep whatever deduction state they already hold, and only invoices created or changed after the switch follow the new timing. Editing this setting requires permission to edit the product catalog — see ",{"type":17,"tag":396,"props":505,"children":507},{"href":506},"\u002Fv\u002F2026.3\u002Fadmin\u002Fteam-access-and-permissions\u002F",[508],{"type":22,"value":509},"Team access and permissions",{"type":22,"value":84},{"type":17,"tag":38,"props":512,"children":514},{"id":513},"audit-every-movement",[515],{"type":22,"value":516},"Audit every movement",{"type":17,"tag":18,"props":518,"children":519},{},[520,522,526,528,532,534,538],{"type":22,"value":521},"The ",{"type":17,"tag":25,"props":523,"children":524},{},[525],{"type":22,"value":70},{"type":22,"value":527}," view of the Products Catalog is a workspace-wide ledger of every movement across all tracked products — the place to answer \"what moved, when, why, and by whom.\" Open ",{"type":17,"tag":25,"props":529,"children":530},{},[531],{"type":22,"value":63},{"type":22,"value":533}," and switch to ",{"type":17,"tag":25,"props":535,"children":536},{},[537],{"type":22,"value":70},{"type":22,"value":84},{"type":17,"tag":147,"props":540,"children":542},{"id":541},"summary-metrics",[543],{"type":22,"value":544},"Summary metrics",{"type":17,"tag":18,"props":546,"children":547},{},[548],{"type":22,"value":549},"A strip at the top summarizes the movements currently in view:",{"type":17,"tag":91,"props":551,"children":552},{},[553,563,573,583],{"type":17,"tag":54,"props":554,"children":555},{},[556,561],{"type":17,"tag":25,"props":557,"children":558},{},[559],{"type":22,"value":560},"Movements",{"type":22,"value":562}," — how many changes match your filters.",{"type":17,"tag":54,"props":564,"children":565},{},[566,571],{"type":17,"tag":25,"props":567,"children":568},{},[569],{"type":22,"value":570},"Units in",{"type":22,"value":572}," — total quantity added.",{"type":17,"tag":54,"props":574,"children":575},{},[576,581],{"type":17,"tag":25,"props":577,"children":578},{},[579],{"type":22,"value":580},"Units out",{"type":22,"value":582}," — total quantity removed.",{"type":17,"tag":54,"props":584,"children":585},{},[586,591],{"type":17,"tag":25,"props":587,"children":588},{},[589],{"type":22,"value":590},"Low \u002F out now",{"type":22,"value":592}," — how many tracked products are currently at or below their threshold.",{"type":17,"tag":18,"props":594,"children":595},{},[596],{"type":22,"value":597},"The summary always reflects the filters you have applied, so it stays consistent with the list below it.",{"type":17,"tag":147,"props":599,"children":601},{"id":600},"filter-sort-and-search",[602],{"type":22,"value":603},"Filter, sort, and search",{"type":17,"tag":18,"props":605,"children":606},{},[607],{"type":22,"value":608},"Narrow the ledger to exactly what you need:",{"type":17,"tag":91,"props":610,"children":611},{},[612,622,643,653,663,673,683],{"type":17,"tag":54,"props":613,"children":614},{},[615,620],{"type":17,"tag":25,"props":616,"children":617},{},[618],{"type":22,"value":619},"Product",{"type":22,"value":621}," — a single product's history.",{"type":17,"tag":54,"props":623,"children":624},{},[625,630,632,636,638,642],{"type":17,"tag":25,"props":626,"children":627},{},[628],{"type":22,"value":629},"Reason",{"type":22,"value":631}," — for example, only ",{"type":17,"tag":264,"props":633,"children":634},{},[635],{"type":22,"value":268},{"type":22,"value":637}," or only ",{"type":17,"tag":264,"props":639,"children":640},{},[641],{"type":22,"value":168},{"type":22,"value":84},{"type":17,"tag":54,"props":644,"children":645},{},[646,651],{"type":17,"tag":25,"props":647,"children":648},{},[649],{"type":22,"value":650},"Type",{"type":22,"value":652}," — stock in, stock out, or set.",{"type":17,"tag":54,"props":654,"children":655},{},[656,661],{"type":17,"tag":25,"props":657,"children":658},{},[659],{"type":22,"value":660},"Member",{"type":22,"value":662}," — who made the change (automatic invoice deductions are attributed to the system).",{"type":17,"tag":54,"props":664,"children":665},{},[666,671],{"type":17,"tag":25,"props":667,"children":668},{},[669],{"type":22,"value":670},"Date",{"type":22,"value":672}," — a preset range or a custom range.",{"type":17,"tag":54,"props":674,"children":675},{},[676,681],{"type":17,"tag":25,"props":677,"children":678},{},[679],{"type":22,"value":680},"Sort",{"type":22,"value":682}," — newest or oldest first.",{"type":17,"tag":54,"props":684,"children":685},{},[686,691],{"type":17,"tag":25,"props":687,"children":688},{},[689],{"type":22,"value":690},"Search",{"type":22,"value":692}," — narrow the loaded rows by product, reason, note, or person.",{"type":17,"tag":147,"props":694,"children":696},{"id":695},"read-a-movement",[697],{"type":22,"value":698},"Read a movement",{"type":17,"tag":18,"props":700,"children":701},{},[702],{"type":22,"value":703},"Each row shows the date, the product, the change (a signed amount such as +5, −3, or =10 for a set), the stock before and after, the reason and any note, who made the change, and a reference to the source invoice when the movement came from a sale.",{"type":17,"tag":147,"props":705,"children":707},{"id":706},"export",[708],{"type":22,"value":709},"Export",{"type":17,"tag":18,"props":711,"children":712},{},[713,715,720],{"type":22,"value":714},"Use ",{"type":17,"tag":25,"props":716,"children":717},{},[718],{"type":22,"value":719},"Export CSV",{"type":22,"value":721}," to download the current filtered view for a spreadsheet audit, a stock take, or your accountant.",{"type":17,"tag":38,"props":723,"children":725},{"id":724},"the-history-cannot-be-rewritten",[726],{"type":22,"value":727},"The history cannot be rewritten",{"type":17,"tag":18,"props":729,"children":730},{},[731,733,738,740,744,746,750],{"type":22,"value":732},"Movements are ",{"type":17,"tag":25,"props":734,"children":735},{},[736],{"type":22,"value":737},"append-only",{"type":22,"value":739},": they cannot be edited or deleted, and neither can the workspace owner. To correct a mistake, record a new adjustment (for example, a ",{"type":17,"tag":264,"props":741,"children":742},{},[743],{"type":22,"value":247},{"type":22,"value":745}," or a fresh ",{"type":17,"tag":264,"props":747,"children":748},{},[749],{"type":22,"value":237},{"type":22,"value":751}," entry) rather than altering history. This keeps the ledger trustworthy as a record of what actually happened.",{"type":17,"tag":18,"props":753,"children":754},{},[755,757,761],{"type":22,"value":756},"If the stored level and the physical count ever disagree, a ",{"type":17,"tag":25,"props":758,"children":759},{},[760],{"type":22,"value":237},{"type":22,"value":762}," adjustment set to the true number reconciles them and leaves a dated, attributed record of the correction.",{"type":17,"tag":38,"props":764,"children":766},{"id":765},"who-can-adjust-stock",[767],{"type":22,"value":768},"Who can adjust stock",{"type":17,"tag":18,"props":770,"children":771},{},[772,774,778],{"type":22,"value":773},"Recording adjustments and editing stock levels require permission to edit the product catalog. Everyone in the workspace can view stock and the movements ledger; only teammates with catalog-edit access can change stock. See ",{"type":17,"tag":396,"props":775,"children":776},{"href":506},[777],{"type":22,"value":509},{"type":22,"value":84},{"type":17,"tag":38,"props":780,"children":782},{"id":781},"next-steps",[783],{"type":22,"value":784},"Next steps",{"type":17,"tag":91,"props":786,"children":787},{},[788,799],{"type":17,"tag":54,"props":789,"children":790},{},[791,797],{"type":17,"tag":396,"props":792,"children":794},{"href":793},"\u002Fv\u002F2026.3\u002Fcatalog\u002Finventory-tracking\u002F",[795],{"type":22,"value":796},"Track inventory on a product",{"type":22,"value":798}," — enable tracking, set levels, and configure service supply recipes.",{"type":17,"tag":54,"props":800,"children":801},{},[802,808],{"type":17,"tag":396,"props":803,"children":805},{"href":804},"\u002Fv\u002F2026.3\u002Ffinance\u002Fcreate-send-track-invoice\u002F",[806],{"type":22,"value":807},"Create, send, and track an invoice",{"type":22,"value":809}," — the billing workflow that drives automatic deductions.",{"title":7,"searchDepth":811,"depth":811,"links":812},2,[813,817,820,826,827,828],{"id":40,"depth":811,"text":43,"children":814},[815],{"id":149,"depth":816,"text":152},3,{"id":273,"depth":811,"text":276,"children":818},[819],{"id":441,"depth":816,"text":444},{"id":513,"depth":811,"text":516,"children":821},[822,823,824,825],{"id":541,"depth":816,"text":544},{"id":600,"depth":816,"text":603},{"id":695,"depth":816,"text":698},{"id":706,"depth":816,"text":709},{"id":724,"depth":811,"text":727},{"id":765,"depth":811,"text":768},{"id":781,"depth":811,"text":784},"markdown","content:v:2026.3:catalog:inventory-movements.md","content","v\u002F2026.3\u002Fcatalog\u002Finventory-movements.md","v\u002F2026.3\u002Fcatalog\u002Finventory-movements","md",1783887050314]