Learn how to set up and manage the Metrc integration in Dutchie POS, including API key configuration, integration settings, supported inventory actions, and compliance reporting.
Dutchie POS's real-time Metrc integration increases operational stability, provides peace of mind, and helps maintain compliance by automatically reporting actions performed in Dutchie POS to Metrc. Whether you're setting up the Metrc integration for the first time or troubleshooting an existing connection, this article covers integration setup, settings, and more.
Table of contents
- Integration requirements
- Field mapping
- Metrc integration settings
- Integration actions
- Supported features
- Frequently asked questions
Integration requirements
- Must be operating in a state that uses Metrc as its state traceability system.
- Metrc integration enabled in Dutchie POS Backoffice.
- Always ensure your API Key is valid and consist of 24 characters.
- To avoid issues like blocked transactions or negative quantities in Metrc, it's essential that all cannabis products you intend to sell are properly entered and tracked in Metrc before you enable the integration in Dutchie.
Field mapping
The chart below shows how each field maps from Metrc to Dutchie.
| Dutchie POS | Metrc |
| Strains | Strains |
| Catalog | Items |
| Batch | Batch |
| Plants | Plants |
| External Package ID | Package |
| Rooms | Locations |
Metrc integration settings
This chart reflects how settings are listed when Grouped view is enabled:
Grouped view organizes related settings together in expandable sections.
Connection & Authentication
| Setting | Description |
| Enabled | Enable or disable the Metrc integration by selecting Yes or No. |
| Require Individual User API Keys |
When set to Yes, each user must have an individual user API key entered in the User keys tab. If a user has no key entered, they won’t be able to perform any action in Dutchie that reports to Metrc, such as processing transactions or completing various inventory management actions. When disabled, individual user API keys are used when present; when not present, the master API Key below is used as a fallback. More info: |
| API Key |
This API key serves as the master/primary key for your facility and should be associated with an administrator or manager who has full permissions in Metrc. If individual user API keys are entered in the User keys tab, actions in Dutchie POS are logged under each individual user in Metrc. If a user does not have an individual API key entered, the master key is used instead and actions are logged under the user associated with the master key. More info: |
| License # | Enter your facility's state-issued license number |
| State | Select the state that issued your license |
| Environment |
Select Sandbox only if the location you're configuring is used only for testing. Otherwise, select Production. |
| API URL | This automatically populates based on your State and Environment selections. |
Batch Mode
| Setting | Description |
| Mode |
Batch reports sales and inventory data to Metrc in periodic batches instead of on a constant, real-time basis. This can offer greater stability and resiliency if your connection to Metrc is disrupted. However, some states require Real-time reporting and should not use Batch Mode. Confirm with your state regulators before enabling. Learn more about Batch Mode. |
| Switch to Batch Mode on Timeout | Automatically switches to Batch Mode for sales when the Metrc API times out. |
Sales & Reporting
| Setting | Description |
| Enable Returns | When set to Yes, returns in Dutchie are automatically reported to Metrc. |
| Report Sales By | Customer Type is the default setting and is used in states where recreational and medical sales can be processed on the same license. If your state requries separate licenses (and therefore separate locations in Dutchie, even if they're the same physical location) for recreational and medical sales, select License Type (Rec) or License Type (Med). |
Allotment & Patient Management
| Setting | Description |
| Prevent Overselling |
When set to Yes, the Dutchie Register will display any warning received from Metrc that a sale exceeds purchase limits or allotments, prevent users from completing the sale in Dutchie, and automatically void the sale in Metrc. This is not supported with Batch Mode. |
| Fetch Allotment Behavior | Use Most Restrictive Allotment (Recommended) should be used in most cases. |
| Enable Allotment Check | Before completing a sale, Dutchie will query Metrc for the patient's current allotment and will block any sale that would exceed that allotment. Only used in states that track allotments. |
| Use Metrc Patient Expiration Date | When set to Yes, medical card expiration dates fetched from Metrc are automatically saved to patient profiles. |
Inventory Management
| Setting | Description |
| Use Retail ID |
Enables Metrc Retail ID for your location. Learn more about Retail ID: |
| Automatically Create New Products On Transfer | Automatically creates new products in your Dutchie Catalog based on Metrc Items received via transfer. |
| Maintain Rooms |
When set to Yes, rooms created in Dutchie will automatically be created in Metrc, and when you move packages between rooms in Dutchie those moves are also reported to Metrc. After enabling, make sure each of your rooms has a selection in the Location type field (typically Default Location Type; some states have additional options for cultivation locations). |
| Maintain Strains | When set to Yes, strains created in Dutchie will automatically be created in Metrc. |
| Maintain Items | When set to Yes, products created/updated in your Dutchie Catalog will automatically be created/updated accordingly as Metrc Items when the Dutchie product has the Sync to Metrc Item setting enabled on its product detail page in the Catalog. |
| Ignore Adjustments | When set to Yes, inventory adjustments are not reported to Metrc. This should usually be set to No. |
| Use Relative Adjustments | When set to Yes, provides the option to use relative numbers for adjustments (i.e., enter a positive number to add to a package quantity or a negative number to subtract) or absolute adjustments (i.e., enter the actual package quantity directly). |
| Compare Inventory Rooms | When set to Yes, Dutchie will compare and validate inventory room assignments between Dutchie and Metrc. Usually used with the Maintain Rooms setting. |
| Prevent Metrc Package Location Moves | Prevents users from moving cannabis packages to another location without a manifest. Learn more. |
| Use Metrc Brands | See: Enable the use of Metrc Brands in Dutchie POS |
| Prevent untested inventory sales | When set to Yes, Dutchie prevents sales of cannabis inventory that hasn't passed required lab testing. This should only be used as directed by state regulators. |
| Check For On Hold Inventory | When set to Yes, inventory with an Administrative Hold or Administrative Recall status in Metrc can't be sold in Dutchie. |
| Treat Moisture Loss As Harvest Waste | Records the difference between wet weight and dry weight harvest waste. |
| Create Package Donation / Trade Sample Option | When enabled, a Type selection field appears on the Create packages modal and users can choose whether a new package is a Standard, Donation, or Trade Sample type. This option is primarily used for conversions in specific states like California and Oregon. |
| Use External ID | Set to Yes by default. Controls Metrc Items and Product Catalog license mapping. |
| Sync item approval files/fields | Automatically uploads product files and fields to the corresponding Metrc Item |
| Use "Use by date" | Enables "Use by date" fields on package detail, receive, convert, and label settings. |
Manufacturing
| Setting | Description |
| Use Processing Jobs | Enables Metrc Processing Jobs API for cultivation operations, including Bills of Materials and Assemblies. |
Lab Data
| Setting | Description |
| Use Metrc Lab Data | When set to Yes, lab testing data can be imported from Metrc. |
| Default Metrc Labs in Receive | When set to Yes, the Get Metrc Lab Results option defaults to Yes when receiving a package. This means the package's lab results are automatically imported upon receive, though you can still set Get Metrc Lab Results to No for an individual package. Learn more. |
| Use Package Based Potency | When set to Yes, Dutchie calculates non-flower item potency using batch-specific lab results, supporting Alaska’s purchase limits. Only relevant for Alaska operators. Learn more. |
Transfers & Delivery
| Setting | Description |
| Use Transfer Templates | When set to Yes, Dutchie will create a transfer template in Metrc when manifests are marked Sold in Dutchie. You will still need to transfer the template out of Metrc directly. |
| Use Production Batch Flag On Convert and Create Package |
When set to Yes, a production batch number is only reported to Metrc when the output package is explicitly marked as a production batch. If the output package is not flagged as a production batch, no batch number is sent. When disabled, the batch number is always reported to Metrc regardless of how the output package is flagged. This is intended for locations that use Convert Package or Create Package workflows and need precise control over when production batch data is submitted to Metrc. |
| Delivery Transaction Action |
Controls how delivery orders are reported to Metrc. Select Metrc Sale to report delivery orders as standard sales receipts (same as in-store transactions). Select Metrc Delivery to report delivery orders using Metrc's dedicated delivery endpoint, which submits customer address, driver, vehicle, and route information — required for states that mandate delivery-specific reporting. Select None to disable Metrc reporting for delivery orders entirely. Note: Metrc Sale is the default. Metrc Delivery is a more complex workflow and may require your state's Metrc instance to support the delivery API. Consult Metrc or your state regulators about which setting to use. |
| Use Reciprocal States | When set to Yes, Dutchie verifies whether out-of-state medical patients are from a state with a reciprocal medical cannabis agreement before completing a sale. If reciprocity is confirmed, the patient's registration location is included in the sale reported to Metrc. If the patient is from a state with no reciprocal agreement, the sale will be blocked at the register. Enable this setting only if your state participates in a medical cannabis reciprocity program. |
| Transfer Expiration Date |
Controls how the Expiration date field is filled in on new inventory upon receiving. Choose from:
|
| Pass Delivery ID as Consumer ID | For New Jersey only. Includes the Delivery transaction ID as the Consumer ID to meet state requirements. |
Sync Log Settings
These settings are configured by your implementation specialist and should not be changed.
Integration actions
| Inventory Action | Pushes to Metrc? | Metrc Response |
| Combine | ❌ | DOES NOT POST TO METRC - Do not use on cannabis packages that have different Metrc IDs |
| Adjust (Absolute) | ✅ | Adjusts total package quantity to the amount entered in the adjust action |
| Adjust (Incremental) | ✅ | Adjusts package by the increment specified (i.e. “1” = adds 1 to count | “-1” subtracts 1 from the count) |
| Destroy | ❌ | Does not post to Metrc - use ADJUST and ADJUST to “0” instead |
| Lab Sample | ❌ | Not currently integrated with Metrc. Will create a lab sample package in the lab sample amount; Operators will need to do all lab sampling directly out of Metrc to specify test type and can adjust down the parent package in Dutchie with Bypass State System enabled, or use this Lab Sample function with Bypass State System enabled to reconcile package quantities. |
| Sublot | ❌ | BioTrack-specific action; use “Create Packages” instead |
| Create Packages | ✅ | Will split off package(s) with new Metrc tags in the amount specified in the create packages modal |
| Convert | ✅ | Creates an output product in Metrc from the inputs specified |
| Move | ✅ | If all your rooms are synced with an “External ID” all room moves will post to Metrc |
| Change Product | ❌ | Does not post to Metrc - will change product name in dutchie but not in Metrc |
| Transfer to Cultivation | ✅ | Allows an operator to intake live immature plants from another license and move to their cultivation module. Will only work when transferring as a Clone type. |
| Assign to Batch | ❌ | Does not post to Metrc - updates the batch name on the package in Dutchie only |
| Assign Status | ❌ | Does not post to Metrc - updates the “Status in dutchie inventory only |
| Change Vendor | ❌ | Does not post to Metrc - updates Vendor assignment in Dutchie |
| Add to Order | ✅ | Adds selected package(s) to an open/uncompleted manifest |
| Discontinue | ❌ | Does not post to Metrc; This will undo the convert workflow. It must be done separately in METRC and Dutchie, and can only be done for a 24 hour window in METRC after the product is created |
| Remediate | ✅ | Metrc-specific action to initiate retesting on a product that initially failed lab testing. |
|
Finish/Unfinish
|
✅ | Metrc-specific action; marks a package finished which blocks any further actions from being taken on the package |
Cultivation actions
| Cultivation Action | Pushes to Metrc? | Metrc Response |
| Add Plants to Inventory | ✅ | Will create new plants in Metrc as specified on the add plants modal in Dutchie. The Strain will need to already exist in Metrc. |
| Move Plant | ✅ | If all your rooms are synced with an “External ID” all room moves will post to Metrc |
| Assign Room and subroom | ✅ | If all your rooms are synced with an “External ID” all room moves will post to Metrc |
| Assign/Remove Mother | ❌ | Does not post to Metrc. Assigns/Removes the Mother Plant tied to that plant record |
| Assign Mother Status | ❌ | Does not post to Metrc. Will denote if the plant is/is not a mother in Dutchie only. |
| Assign Plant Stage | ✅ | Posts stage change to Metrc |
| Assign Batch | ❌ | Does not post to Metrc. Changes the batch in dutchie only |
| Assign Plant Group | ❌ | Does not post to Metrc. Changes the plant group in dutchie only |
| Apply Additives | ❌ | Will apply additives in Dutchie records only; for Metrc states that require additive tracking, this will need to be performed in Metrc directly and can be duplicated in Dutchie for record matching |
| Transfer to Inventory | ✅ | Will work for transferring Immature Plants item type to inventory |
| Retire Plant | ✅ | Will destroy the plant in Metrc and creates a Waste record in your Metrc portal |
| Convert to Plant | ✅ | Once this action is initiated, all the converted plants move from Immature status and then are tracked as individual mature plants in Metrc (Vegetative or Flowering) |
| Destroy Clone | ✅ | Posts to Metrc as an immature plant adjustment |
| Destroy Seedling | ✅ | Posts to Metrc as an immature plant adjustment |
| Harvest Plant | ✅ | Schedules the selected plants for Harvest |
| Plant Journal | ❌ | For record keeping inside of Dutchie |
| Trim Plants | ❌ | Will not post to Metrc |
| View Additive Log | ❌ | For record keeping inside of Dutchie |
Supported features
- Cultivation integration
- Inventory package integration
- Adjust inventory
- Covert inventory
- Create packages
- Move inventory
- Inventory reconciliation
- Receive inventory directly from Metrc via Pending Transfers.
- Use Dutchie POS to build transfer templates in Metrc.
- Use the Metrc sales integration to pull patient allotment details into Dutchie POS customer profiles.
- Batch mode allows Dutchie POS to batch sales transactions together for processing later and avoid interruptions to Dutchie Register operations.
Frequently asked questions
Why aren't my Metrc items and Dutchie POS catalog products syncing?
Metrc doesn’t allow the creation of a package when the products in the package exist in Dutchie POS, but not in Metrc. This can happen if the product names don’t match between Metrc and Dutchie POS.
- Check whether the product has the same name in Metrc and Dutchie POS.
- If the product doesn’t exist or the names are different, go to Products > Catalog and select the product.
- From the Details tab, set the Sync to Metrc Item field as Yes. Only enable this setting when creating a new Catalog product in Dutchie POS that does not already exist as an item in Metrc.
- Go to Settings > Integrations > Metrc.
- Click the Settings tab and set the Maintain Items field to Yes.
- Click Update to save the settings.
- Select the Sync tab.
- Select Push: Inventory to send the latest Dutchie POS product settings to Metrc. This pushes the spelling, capitalization, spacing, etc. from Dutchie POS to Metrc.
Why can’t my dispensary use Batch Mode?
Batch Mode doesn’t post at the time of the transaction, so operators in states that require real-time sales reporting can’t use the feature.
Why didn’t my delivery driver information carry over to Metrc?
If your driver information is incomplete in Dutchie POS it won’t sync to Metrc. To edit driver information:
- Go to Products > Manifest.
- Click the Wholesale tab.
- Select Edit Driver from the Actions dropdown.
- Add driver information as needed.
I created a Metrc manifest to virtually transfer some product back to the cultivation facility. They accepted the manifest, but the inventory is still showing in Backoffice. It's already pulled out of my inventory on the Metrc side.
After checking the recent manifests created in Backoffice, there is no Dutchie manifest to reflect the deduction of product associated with the transfer that was built in Metrc.
You will need to create a manifest for the products that you returned to your cultivation facility to reflect the proper inventory quantities for the packages associated. In the future, it is best practice to always create the manifest in Dutchie first and Metrc will sync via the API. Any actions taken in Metrc first will not sync to Dutchie.
I am integrating to Metrc, do I need to create my Catalog and Inventory items that are currently in Dutchie, in Metrc?
All cannabis packages that are available in Dutchie POS should also reflect in your Metrc state traceability. If there are discrepancies in package IDs, quantities, or any variance between systems, it is recommended that you reconcile these prior to integration so that sales can track and process correctly between systems.
Some products are ringing up with an allotment that is too low. For example, 1/8 and 1/4 of flower show up with an allotment of less than 1 gram.
Check if your shop has "Use Package Based Potency" - (for use in Alaska only) enabled. This calculates the flower equivalent on packages when lab data is entered. To resolve this, disable the Metrc Integration Setting "Use Packaged Based Potency" - (for use in Alaska only), and the allotment pulled from the Flower Equivalency entered in the inventory.
You will need to update items with the incorrect flower equivalency. If you have a large number of items to correct, contact support to assist you with a bulk upload to wipe any inventory items with incorrect flower equivalencies.
Note: The "Use Package Based Potency" setting should only be used by Alaska operators. If you do not operate in Alaska, you should not turn on this setting.
There is one physical unit. Dutchie's inventory and metric shows one unit, but the integration audit shows two units.
If you have already tried to adjust quantities up and down, you can unallocate the unit showing on the sales floor, and then sync levels with Metrc.