Skip to main content

Retail: How the NMS2S Integration Works in GrowFlow (NM)

What happens in GrowFlow, what happens on the NMS2S website, and what to expect at checkout

Written by Ryker Daniel

New Mexico has moved to a new state traceability system called NMS2S (New Mexico Seed to Sale), replacing BioTrack. If you're a retail licensee in New Mexico, GrowFlow now reports your sales, tracks your inventory, and enforces purchase limits through NMS2S instead. This article walks through how that connection works today, what you'll do in GrowFlow versus the NMS2S website, and what to expect at checkout.

A note on "today": NMS2S is a new system, and the state is still rolling out additional capabilities. Right now, the state's API only accepts sales and voids — everything else (receiving transfers, adjustments, repackaging) happens on the NMS2S website and then syncs into GrowFlow. As the state adds more capability, more of that work will move back into GrowFlow, and we'll update this article when it does.

Connecting your store to NMS2S

Before GrowFlow can report sales to NMS2S, your store needs an authorization token from the state.

  1. Your organization admin generates an authorization token in the NMS2S application.

  2. Paste that token into GrowFlow under Store Settings → Traceability → NMS2S Authorization Token.

  3. Click Test Connection. This confirms the token is valid, shows which organization and location it's registered to, and shows its expiration date. Always check that it names the store you expect before saving.

Once the connection is confirmed, go to Inventory > Packages in GrowFlow and click the sync button in the top-right corner. This pulls in your new NMS2S package IDs, which are separate from your existing BioTrack barcode IDs (those stay the same). This step is required before you'll be able to report any sales to NMS2S, so please don't skip it.

For detailed instructions, see this help article.

A few things other worth knowing:

  • Tokens expire 6 months after they're issued. Your org admin can issue a new one at any time — there's no need to wait until one expires.

  • The Test Connection button is the fastest way to check a token's status if something looks off.

  • The state's locationId is the NMS2S equivalent of the old BioTrack license number, and it's what Test Connection uses to confirm the store match.

Moving your inventory to the Sales Floor in NMS2S

When the state moved everyone's packages from BioTrack into NMS2S, all packages landed in a generic holding room — not the "Sales Floor" room. GrowFlow can only sync package and package ID information for packages that are sitting in the Sales Floor room. Until your packages are moved there, they won't sync up correctly with your GrowFlow inventory.

Here's what you need to do

1. Move your packages to the Sales Floor room in NMS2S. From Bulk Inventory, check the box next to each package you want to move, then select Bulk Actions.

From there, from the Select an Inventory Action dropdown, select Move to Room. From there, click the Move to Sales Floor Room shortcut button.

Note: Dry Flower products cannot be moved to the Sales Floor. If you select a Dry Flower item, the option to move it to that room won't be available — even in a bulk selection.

To move it, first change the product type from Dry Flower to Deli Style in NMS2S: click into the inventory item, select Inventory Actions, and select Create Deli Style Cannabis.

Fill out the details for the new Deli-Style Cannabis package, select the Sales Floor as the Destination Room, then click Create.

This will generate a new package ID, so you'll need to:

  1. Import the new package into GrowFlow (using the Import Tool)

  2. Zero out/finish the old package in GrowFlow

2. Run a package sync in GrowFlow once your packages are in the Sales Floor room. You can do this by clicking the Sync button in the top-right corner of the Inventory > Packages page.

If you hold a vertically-integrated license (license number starts with VIC):

Only move your retail packages into the Sales Floor room. You'll need to separate retail packages from your wholesale inventory first — do not move wholesale packages into Sales Floor, or they'll be treated as retail inventory once synced.

Inventory and receiving

GrowFlow pulls your sellable inventory from NMS2S using the same package sync you already use. Each item arrives with its barcode (labeled "NMS2S Barcode ID" in GrowFlow), product name, category, quantity, potency, and whether it's medical-only.

Receiving a transfer: because the state's API doesn't yet support transfers, you'll receive the transfer on the NMS2S website first, then move it into your Sales Floor room there. Once that's done, it'll appear in GrowFlow the next time you run a package sync, ready for intake through the normal package import tool.

Checking your counts: the packages list in GrowFlow shows two quantities — NMS2S Qty (what the state has on record) and Quantity (what GrowFlow has on record). If the two don't match, something happened in one system but not the other, and the discrepancy highlight is there to help you spot it.

If a package disappears from the state's list, it hasn't been deleted — it's either sold out or was moved out of your Sales Floor room. GrowFlow leaves its local record alone in that case.

Selling

When a sale completes, GrowFlow reports it to NMS2S as a dispense, listing every item and quantity. The state checks everything — ownership, quantities, medical purchase limits, medical-only restrictions — before it records the sale and reduces its own inventory.

  • A successful report shows on the order as REPORTED, along with an NMS2S ID — the state's ticket number for that sale.

  • If reporting fails (a network issue or a rejection from the state), the order shows a red needs to be reported banner with a Report to State button. It's safe to retry — GrowFlow sends a unique ID with every attempt, so the state won't double-count the sale even if you retry it.

  • The state rejects a ticket that lists the same item twice (GrowFlow combines duplicates automatically before sending) and rejects a medical-only product sold to a recreational customer.

Refunds and returns

NMS2S doesn't have a dedicated return process yet. The only correction the state supports is voiding the entire order, which puts all of that order's inventory back on the shelf and restores any units to a medical patient's allotment. Because of this, the Return button on a completed order no longer starts a return — it opens a message explaining how to void the order instead. Clicking it doesn't create anything, so it's safe to press.

Full refund (the customer returns everything)

  1. Find the order under Cashier → Orders.

  2. Open the menu on the order and choose Void.

  3. Enter a void reason. This text is sent to the state, so write something meaningful — "Customer refund," not "test." It's the only record the state keeps of why the sale was reversed.

  4. GrowFlow voids the NMS2S ticket, restores the inventory locally, reverses any loyalty points earned or spent, and marks the order Voided.

  5. Refund the customer in cash.

Partial refund (the customer keeps some items)

  1. Void the original order, exactly as above — note in the reason that it's a partial return.

  2. Ring up a new order containing only the items the customer kept.

  3. Refund the difference in cash.

In GrowFlow, the customer's order history will show a void plus a new, separate order rather than a single "return" — worth knowing if you're reconciling reports later.

When Void isn't available

The Void button is greyed out when:

  • the order already contains items marked Returned from before the switch to NMS2S

  • the order was paid by anything other than Cash

  • the order is marked as reported but has no NMS2S ID (there's no state ticket to void)

Delivery orders can be voided at NMS2S stores. If a delivery never happened, correct it by voiding the order.

Medical customers and purchase limits

New Mexico tracks each medical patient's purchases in units over a rolling 90-day window (425 units is the standard limit). When you view a medical customer or start their order, GrowFlow checks their card status and unit balance with the state and shows it in two places: on the customer page (limit / used / remaining) and as a progress bar at the register that fills in as items are added.

Units are counted like this:

  • Flower — its weight in grams (a 3.5g pack = 3.5 units)

  • Everything else with THC (carts, edibles, pre-rolls) — delta-9 THC milligrams ÷ 200 (a 375mg cart = 1.875 units)

  • Seeds and clones — 0 units

Voiding a ticket restores those units to the patient's allotment, so a refunded patient isn't penalized.

GrowFlow blocks adding items that would put a patient over their remaining balance, but the state also re-checks at checkout — so the state's answer is always the final word.

Recreational customers follow your store's own per-visit purchase limits (Store Settings → Compliance) rather than a state card lookup. If your store's "Purchase Limit Type" setting is configured, it applies only to recreational sales — medical limits are always set by the state and can't be adjusted in GrowFlow.

Medical-only products

The state marks certain inventory as Medical Use Only, and GrowFlow imports that designation during package sync. Selling a medical-only item to a recreational customer is rejected by the state at checkout — there are no exceptions.

What's not yet available through the state's API

The state's traceability API is being rolled out in stages, and a few operations aren't supported yet. These are gaps in the current version of the state's system, not permanent limitations — the table below shows what to do in the meantime.

What you're trying to do

What to do instead

What you'll see in GrowFlow

Receive a transfer

Receive it on the NMS2S website, move it to your salesfloor room, then run a package sync in GrowFlow

The Transfers sync explains this instead of erroring

Adjust inventory

Make the adjustment in GrowFlow and make the matching adjustment on the NMS2S website

A note in the Add Adjustment window explains that the adjustment applies locally only

Convert or repackage products

Perform the conversion on the NMS2S website — the new packages will arrive on your next package sync

Conversions are blocked in GrowFlow with instructions to convert on the state's website

Process a return

Void the original order; for a partial return, void it and ring up a new order with the items the customer kept

The Return button is blocked with a message explaining how to void the order instead

Messages you might see

Message

What it means

"Returns Are Not Yet Supported in NMS2S"

Expected. Void the original order instead. For a partial return, void it and ring up a new order with only the items the customer kept.

"NMS2S does not support transfer syncing — there is no transfer API..."

Expected. Receive the transfer on the NMS2S website, move it to your salesfloor room, then run a package sync.

"NMS2S does not support conversions through the API..."

Expected. Perform the conversion on the NMS2S website; the new packages will arrive on your next package sync.

"NMS2S does not support reporting adjustments through the API..."

Expected. Make the adjustment in GrowFlow as usual, then make the matching adjustment on the NMS2S website.

"...is designated Medical Use Only and can only be dispensed to a Medical customer."

The state rejected the sale. Remove the item, or ring it up for a medical patient instead.

"The same inventory item cannot be added to the ticket more than once."

This shouldn't come up in normal use — GrowFlow combines duplicate items automatically. If you see it, contact Support.

"NMS2S rejected the token (401 Unauthorized)..."

Your store's authorization token has expired or is incorrect. Have your org admin generate a fresh token in the NMS2S application, paste it into GrowFlow, and run Test Connection again.

"No data found for the given card lookup ID"

The medical card number isn't in the state's registry. Double-check for typos, or confirm the card hasn't expired.

Glossary

Term

Meaning

NMS2S

New Mexico Seed to Sale — the state's traceability system, replacing BioTrack.

Barcode / NMS2S Barcode ID

The scannable compliance ID on each package. This is what GrowFlow shows as the Package ID.

NMS2S ID

The state's ticket number for a reported sale — your proof that it was dispensed.

Dispense

The state's term for a completed sale reported through the API.

Void

Cancelling a whole reported sale in the state system. This restores its inventory (and, for medical sales, the patient's units). It's currently the state's only correction mechanism, which is why refunds and returns work by voiding.

Sales Floor room

The NMS2S location you move inventory into to make it sellable. GrowFlow only shows inventory that's in your salesfloor room.

Units (medical)

New Mexico's measure of a patient's 90-day purchase allowance. See "Medical customers and purchase limits" above for how items convert to units.

NMS2S Qty vs. Quantity

The state's count vs. GrowFlow's count for a package. A gap between them means the two systems have diverged — for example, an unreported sale or a change made on the state's website that hasn't synced yet.

Related Resources

NMS2S Transition webpage — the state's official updates and training manuals for NMS2S, by license type

Did this answer your question?