Utah | Inventory Control System (ICS) integration guide for Dutchie POS

Configuring the Utah Inventory Control System Integration in Dutchie POS

Dispensaries operating in Utah must maintain strict compliance with state seed-to-sale tracking rules, and configuring the Utah Inventory Control System (ICS) integration within Dutchie POS automates much of that heavy lifting. According to Dutchie support documentation, the platform acts as a background bridge, transmitting products, room structures, inventory adjustments, sales records, and delivery details directly to the state’s tracking system while pulling incoming transfers, lab results, and patient allotment data back into the point-of-sale terminal.

Every operational action inside Dutchie triggers a background communication with ICS. If the state’s system rejects a transaction due to a mismatch or compliance error, Dutchie flags the action for retry or surfaces the exact error message right at the register, preventing non-compliant sales from slipping through.

Initial Setup and Staff Permissions

Before connecting the integration, administrative staff must verify user permissions and gather specific API credentials from the Utah ICS portal. Inventory managers and administrators require explicit permissions to view and edit the Utah ICS integration configuration, as well as authorization to destroy inventory.

Operators must obtain a Source System code—which Utah assigns to identify the specific facility—along with a Client ID and Client Secret for API access. Administrators also need to select the correct operating environment, toggling between testing and production modes.

Enabling the tool requires navigating to Settings > Integrations > Utah ICS, turning the switch to enabled, inputting the required credentials, and saving the configuration. Furthermore, physical locations must align down to the room and building level. Every room configured under Settings > Rooms must feature an exact building name that mirrors the Utah ICS portal. A slight spelling discrepancy or missing building field will immediately throw a “Location details are invalid” error when dispensary staff attempt to receive incoming product transfers.

Product Management and Catalog Synchronization

Managing the product catalog requires precise data entry to ensure seamless synchronization with state databases. When creating or editing a cannabis item, operators must toggle the “Cannabis product” setting to yes and populate both the External category and External subcategory fields.

Dutchie uses the product name as the primary key to match items against the state database. If ICS already contains a product matching that exact name, Dutchie links the existing record. However, if the existing ICS item features a conflicting category, subcategory, or unit of measure, the integration halts the link and displays an error message. Renaming a product after it has already been linked will inadvertently generate an entirely new product entry inside ICS.

Handling Inventory Movements, Sublots, and Adjustments

By opening a package within Products > Inventory, staff can split a parent inventory batch into smaller sublots.

Inventory control systems | Transparent business decisions with scalable inventory monitoring

For standard inventory adjustments—whether accounting for drying loss, testing samples, R&D, or reconciliation—staff must select an adjustment reason and input a mandatory note. Dutchie then transmits the updated total package quantity to Utah’s database.

When inventory must be disposed of, Utah ICS enforces a strict two-step destruction protocol:

  • Step 1 (Schedule): Open the target package in Dutchie, select destroy, enter the precise quantity, choose an adjustment reason, and supply a mandatory destruction reason. Dutchie creates a separate waste package marked “Ready for destruction” in ICS and reduces the parent inventory accordingly.
  • Step 2 (Confirm): Navigate to Settings > Integrations > Utah ICS > Inventory Destructions, locate the pending waste package, and click “Mark destroyed” once physical disposal is complete.

Receiving Transfers and Importing Lab Results

Incoming inventory shipments originate as transfer manifests created in ICS by the sending facility. Receiving staff must first approve these manifests before they are marked out for delivery.

To approve an incoming shipment, operators navigate to Products > Inventory > Receive, select “Transfer awaiting approval,” review the manifested items, and click “Approve Transfer.” Every product on the manifest must already exist within the dispensary’s Dutchie product catalog; missing items must be built manually before approval can proceed. Staff match each package to a Dutchie product, assign the correct room and building, and complete the receipt. During this process, Dutchie automatically pulls essential lab results—including THC, THCA, CBD, CBN, CBG, CBC, Certificate of Analysis (COA) links, and test dates—and binds them directly to the batch.

Patient Lookups and Allotment Enforcement

Medical cannabis sales depend heavily on real-time eligibility checks. When an authorized medical patient or caregiver is checked into the register or adds items to a cart, Dutchie automatically queries Utah ICS in the background.

The system verifies that the patient is at least 18 years old and holds an active, unexpired medical card. For caregiver transactions, Dutchie confirms the individual is listed on the patient’s approved profile in ICS and meets all age and active-status criteria. If any validation check fails, the register blocks the sale and displays the specific reason, such as an expired card.

The prescription panel visible to dispensary staff displays the prescriber’s name, card expiration date, directions for use, total flower and composite dosage limits in grams, and any restricted dosage forms. Dutchie tracks remaining allotments in real-time:

Allotment Type Measurement Basis Fallback Metric
Flower Physical weight in grams Net weight
Composite Products Total THC content Batch lab data

If a product lacks necessary batch or lab data, an allotment error halts the transaction.

Completing Sales, Deliveries, and Returns

Once a cart passes allotment and patient eligibility checks, completing an in-store or pickup sale triggers the generation of a completed sales order in ICS. Dutchie transmits the patient or caregiver number, transaction date, item quantities, pricing after discounts, room details, and payment records. Accepted payment tenders include cash, check, credit, and debit, with alternate tenders mapped automatically to cash.

Building an Inventory Management System | EP10: POS, Analytics Dashboard & Sales and Stock Reports

For home delivery orders, Dutchie coordinates both an ICS sales order and an active ICS transfer. The delivery workflow progresses through open, out-for-delivery, and completed states, ensuring full compliance throughout the transit lifecycle.