GuidesMETRC
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 · 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 · 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 · 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 · 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 · 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 · 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 · 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 · 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 · 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 · Rhode Island production and sandbox