Skip to content

Ask AI

Ask anything about Destesi — setup, products, APIs.

AI answers may be wrong — always verify against the docs.

Inventory

Inventory is the suite’s standalone stock application. Its registered domain is inventory.destesi.io. Sign in once at account.destesi.io and your session follows you across the suite.

Items and SKUs, exact units and pack conversions, locations, stock owners, usable/quarantined/damaged quantities, receipts, issues, transfers, size changes, corrections, and reservations with partial release and fulfillment. Stock enters only by scanning a code of the item; see Concepts.

Inventory has its own agent, available from the app dock or /chat. It reads the same stock and performs the same operations as the forms. Stock movements, opening imports and integration access changes pause for approval. If no model is configured, the forms and API remain usable.

A code is a physical marking that resolves to exactly one item or location in the workspace: the GTIN a manufacturer already prints, a supplier’s reference, an internal code Inventory mints, or a shelf label. Attach an existing code in Labels, or generate one — code128 (INV-/LOC- plus eight unambiguous characters) or ean13, which uses the GS1 restricted-circulation prefix 2 that is valid inside your own business only. A GTIN with a wrong check digit is refused. Attaching codes is an administrator verb; scanning is not.

Labels prints the barcodes as SVG through the browser — a 13-digit GTIN as EAN-13, everything else as Code 128 — with a QR beside each one that opens the Scan screen for that code. Print at 100% scale; bars scaled to fit stop scanning.

Scan is one focused field: a USB reader is a keyboard, so it needs no pairing, and a phone with a barcode-capable browser can use its camera. A trailing newline from a reader, a UPC-A and a scanned QR URL all resolve to the same stored code. Scanning a shelf label sets the location for what you scan next — each line keeps its own shelf — and every line shows what is on hand there. Receive, issue, transfer, or (as an administrator) count a shelf: the count records only the difference from the ledger. Nothing moves until you apply the queue. A catalog import with a barcode column — a Shopify export’s “Variant Barcode” — attaches those codes as it creates the items.

Orders are the outbound orders: stock promised to leave. An order arrives from a shop or an app through the API, or is written by hand — several lines, added by scanning or from the catalog, with a hold that expires after 48 hours by default. An order is taken even when the stock is not there yet; it waits, and cannot be picked until the units are received. Orders are grouped in tabs:

  • Confirmed — the warehouse’s work. A hand-written order waits here for someone who can vouch for the buyer to confirm it; rejecting releases the stock. An order an app owns (Commerce, an ERP) is confirmed by that app once its buyer confirms, and only then reaches this tab. Prepare it by taking its lines off the shelf by scanning (a reader or the phone camera; a case code counts its pack, a code that is not in the order is refused) or by hand (mark each line taken, or type a short quantity). Finishing the pick removes the picked quantities from stock; the movement records the method and the scanned code, so Movements shows how every unit left. An order from an app leaves complete; a hand-written one may ship in two picks.
  • Prepared — picked, waiting to be handed over. Mark dispatched stamps it as given to the carrier or customer and moves no stock; an app’s order is marked by that app.
  • Dispatched, and Cancelled — released or expired.

In Settings → Shopify an administrator links one store connected in Connect and loads it: every tracked, shippable variant becomes an item with its product, options and barcode (attached as a GTIN code). The quantity Shopify holds becomes the item’s listed quantity — what the store advertises — and no stock is received: on-hand stock starts at zero until it is scanned in. Loading again updates the items it created instead of copying them. Large stores load page by page; the dialog continues until the store says it is done.

Publishing back to Shopify is off until an administrator turns it on; then Inventory owns each product’s title, variants, SKU, barcode and the quantity of the locations you pair, while price and images stay in Shopify. See Concepts.

When the goods arrive labelled, create the item with that code: the Add item page has a barcode field you can type into or scan, and an unknown code on the Scan page offers “Create an item with this code”. A code that already belongs to another item is refused before saving.

An administrator creates a workspace-bound integration credential with only the required operations and stock owners. Save its one-time credential in the consuming application’s secret configuration, not in chat or source code. Inventory keeps only the credential hash and supports revocation.

GET /v1/capabilities describes the supported operations; GET /v1/openapi.json publishes their HTTP/input contract. Quantities are decimal strings and every mutation needs a stable operation key for retries. Consumers obtain a snapshot and then follow its committed change cursor.

The terminal uses dst inventory <operation> --input <JSON>; start with dst inventory capabilities. MCP provides inventory_capabilities, inventory_query and inventory_command. Credential creation stays in the browser or CLI to keep secrets out of external model transcripts.

Commerce keeps no stock of its own: every reservation, allocation and return goes through Inventory. Relay issues the material its mapped washer runs consume; the customer garments it processes are not Inventory stock. Lots, serials, expiry tracking and transit are not available yet.

Next: Concepts explains positions, movements and the order lifecycle; the Reference lists every operation, permission and error code; Troubleshooting covers the common refusals.