SeedLink
CustomersSign inRequest access

Guides/METRC

METRC field guides for Rhode Island

What the Rhode Island METRC API actually does, observed from a production integration: package tags, transfers and manifests, lab results, adjustments, and the traps the documentation does not mention.

What these guides are

Each guide records one thing the Rhode Island METRC API does that its documentation does not say, observed from SeedLink’s production integration with the date and the read-only probe behind every number. They are not METRC documentation and not regulatory guidance. The methodology page says how a number gets onto one of these pages and what SeedLink does not publish.

Machine-readable

Every observation in these guides, with its date, environment and source, in one file: /guides/metrc/data.json. Each guide also links its own copy under its sources.

Guides

METRC package tags in Rhode Island: adult-use and medical share one list, and medical comes first

How do I avoid burning medical package tags on an adult-use order in Rhode Island?

Classify every tag by its TagTypeName and TagInventoryTypeName fields and never by its position or label prefix: Rhode Island returns the medical tags first, and the tag number is printed on the physical sticker.

Observed September 7, 2026 · Rhode Island production and sandbox

The Rhode Island METRC API returns an empty HTTP 200 when the required date filters are missing, and several other traps produce the same empty answer

Why does METRC return 0 packages when I query the Rhode Island API?

Because lastModifiedStart and lastModifiedEnd are required on /packages/v2/active and /items/v2/active and Rhode Island production answers HTTP 200 with an empty list when they are missing; if the filters are present, check the pageSize cap of 20, the route timeout and the credential before believing the empty list.

Observed August 20, 2026 · Rhode Island production and sandbox

A METRC transfer template becomes a manifest only when a person dispatches it in METRC Connect: Rhode Island exposes no dispatch endpoint

How does a METRC transfer template become a manifest?

The API creates a transfer template with a T-prefixed manifest number, a person dispatches it in the METRC Connect web interface, and METRC then creates a separate outgoing transfer with its own Id, a plain-numeric manifest number, and an OriginatingTemplateId that points back at the template.

Observed September 3, 2026 · Rhode Island production and sandbox

METRC package adjustments in Rhode Island: Quantity is the new total, not a delta, and the adjustments log reports the difference

Is the Quantity in METRC’s package adjust call a delta or the new total?

The new absolute quantity of the package: on the Rhode Island sandbox on 2026-09-03, sending Quantity -1 to a package holding 40 Each left it at -1, not 39, and GET /packages/v2/adjustments logged the delta METRC computed, -41.

Observed September 3, 2026 · Rhode Island production and sandbox

METRC lab results in Rhode Island follow a package that was created before the results came back

Do METRC lab results follow a package that was created before the results came back?

Yes: when a lab records a result, METRC promotes every package that shares the sample’s item at that facility and writes the results down the lot’s lineage, so a package created before the result carries it the moment the lab posts it, and nothing in the cultivator’s integration receives anything.

Observed July 26, 2026 · Rhode Island production and sandbox

METRC serves the lab COA PDF for free in Rhode Island: one GET returns the raw PDF, and whether a document exists is a per-lab fact

Can I get a COA PDF from the METRC API without paying a lab portal?

Yes: every row of GET /labtests/v2/results carries a LabTestResultDocumentFileId, and GET /labtests/v2/labtestdocument/{id}?licenseNumber= returns that lab document as raw PDF bytes, but the lab populates the id, and on 2026-07-25 one Rhode Island lab had attached a document to 12 of 12 tested packages while a second had attached one to 0 of 36.

Observed July 25, 2026 · Rhode Island production and sandbox

METRC’s StrainName is an ingredient, not the product name: Rhode Island requires a strain on infused items, so the two fields diverge by design

Why does METRC show a different strain name than my product name?

Item.StrainName records the strain an item was made from and Item.Name records the product; Rhode Island marks four categories RequiresStrain, so an infused product sold under a flavour name carries a strain that is not its name, and METRC is right when the two differ.

Observed September 7, 2026 · Rhode Island production and sandbox

METRC item UnitWeight in Rhode Island: it persists only when the category has RequiresUnitWeight true, and the PUT returns 200 either way

Why does METRC accept my item UnitWeight and then drop it?

Because PUT /items/v2/ answers HTTP 200 whether or not the item’s category carries RequiresUnitWeight: true, and only a category with that flag keeps the value: read the flag from GET /items/v2/categories, and store a per-unit weight on your own side for every other category.

Observed August 23, 2026 · Rhode Island production and sandbox

METRC remediation transfers in Rhode Island: the outgoing delivery’s ShipmentTypeName is the only sign a package is out, and the incoming transfer is the proof it came back

How do I tell that a METRC package is out for remediation, and when it comes back?

Read the outgoing transfer’s deliveries and test ShipmentTypeName for Remediated Transfer, because every package-level and transfer-level remediation flag reads false while the package is away; then watch GET /transfers/v2/incoming for the same label, and GET /packages/v2/inactive for the case where it came home and was consumed before any list showed it.

Observed July 25, 2026 · Rhode Island production

Combining two METRC packages of one item in Rhode Island is one POST with two ingredients, and the drained sources stay active until you finish them

How do I combine two METRC packages of the same item into one?

Send one POST /packages/v2/ whose Ingredients array names every source package with its full live quantity, on one adult-use tag and with a Location, then finish the emptied sources with PUT /packages/v2/finish, because METRC leaves them active at zero.

Observed July 28, 2026 · Rhode Island production and sandbox

SeedLink
GuidesMethodologyContactPrivacyTermsFor Rhode Island buyers
© 2026 SeedLink