{"title":"METRC package adjustments in Rhode Island: Quantity is the new total, not a delta, and the adjustments log reports the difference","url":"https://www.seedlink.net/guides/metrc/adjust-is-absolute","json":"https://www.seedlink.net/guides/metrc/adjust-is-absolute/data.json","question":"Is the Quantity in METRC’s package adjust call a delta or the new total?","answer":"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.","environment":"Rhode Island production and sandbox","observed":"2026-09-03","revised":"2026-09-20","published":"2026-09-20","facts":[{"id":"adjust_request_shape","value":"PUT /packages/v2/adjust takes an array of {Label, Quantity, UnitOfMeasure, AdjustmentDate, AdjustmentReason, ReasonNote}, one element per package","observed":"2026-09-03","source":"The request bodies of the adjust calls made on one Rhode Island sandbox facility that day"},{"id":"short_by_one_left_negative","value":"Quantity: -1 sent to a package holding 40 Each returned HTTP 200, and GET /packages/v2/{label} then read Quantity = -1, not 39","observed":"2026-09-03","source":"PUT /packages/v2/adjust followed by GET /packages/v2/{label}, one Rhode Island sandbox facility"},{"id":"adjustments_log_delta","value":"GET /packages/v2/adjustments logged AdjustmentQuantity = -41 for that call, the delta METRC computed from 40 to -1","observed":"2026-09-03","source":"GET /packages/v2/adjustments, the same Rhode Island sandbox facility, read after the call"},{"id":"restore_by_absolute","value":"Quantity: 40 sent to the same package restored it: GET read 40, where a delta reading would have given 39","observed":"2026-09-03","source":"PUT /packages/v2/adjust followed by GET /packages/v2/{label}, the same Rhode Island sandbox facility"},{"id":"negative_accepted_no_clamp","value":"A negative package quantity (-1) was accepted with HTTP 200 and no warning; METRC did not clamp at 0","observed":"2026-09-03","source":"The response body and status of the Quantity: -1 call, Rhode Island sandbox"},{"id":"adjust_reasons_all_require_note","value":"9 adjustment reasons, RequiresNote true on every one: Drying, Entry Error, OCR Investigation, Processing Loss, Quality Control Sample, Scale Variance, Spoilage, Theft, Waste","observed":"2026-09-03","source":"GET /packages/v2/adjust/reasons, Rhode Island sandbox"},{"id":"unit_mismatch_400","value":"HTTP 400 with the message \"The Unit of Measure must match the existing package (Grams), cannot be changed to Each.\" when a Grams package was adjusted with UnitOfMeasure Each","observed":"2026-09-03","source":"PUT /packages/v2/adjust, Rhode Island sandbox"},{"id":"on_transfer_400","value":"HTTP 400 with the message \"Package <label> cannot be Adjusted because it is part of an existing Transfer.\" for a package on a transfer template or a dispatched transfer","observed":"2026-09-03","source":"PUT /packages/v2/adjust, Rhode Island sandbox; the label in the message is elided here"},{"id":"no_transfer_200","value":"The identical adjust call on a package with no transfer returned HTTP 200","observed":"2026-09-03","source":"PUT /packages/v2/adjust, the same Rhode Island sandbox facility, same body, a package on no transfer"},{"id":"connect_adjust_moves_shipped_quantity","value":"A METRC Connect adjustment of -21 on a package of a dispatched, in-transit manifest moved the transfer’s ShippedQuantity from 100 to 79 before the delivery was received (dispatched 2026-09-02 at 01:24 UTC, adjusted 2026-09-03 at 05:21 UTC)","observed":"2026-09-03","source":"Read-only probe of one outgoing transfer and its package, Rhode Island production"},{"id":"template_carries_no_quantity","value":"A transfer template carries no quantity: PackageLabel, WholesalePrice, GrossWeight and GrossUnitOfWeightName only","observed":"2026-09-03","source":"The fields of the transfer template body SeedLink’s integration sends, per the incident record dated 2026-09-03"},{"id":"sandbox_get_reports_last_adjustment","value":"After an adjust, the sandbox single-package GET reported the last adjustment amount as Quantity rather than the running balance","observed":"2026-07-23","source":"GET /packages/v2/{label} after PUT /packages/v2/adjust, the Rhode Island sandbox"},{"id":"denomination_split","value":"Of the 1,355 packages 3 connected cultivators shipped in the 540 days to 2026-09-03, 472 (34.8%) were mass-denominated and 883 count-denominated; every product category shipped one way only","observed":"2026-09-03","source":"GET /packages/v2/transferred across three Rhode Island production cultivator facilities, read-only; docs/METRC.md, section Manifest and order reconciliation"}],"constants":[{"value":2,"why":"the Quantity in the example body METRC’s API reference shows for the adjust call, \"-2.0\": a documentation example, not an observation"}],"faq":[{"question":"Is Quantity in PUT /packages/v2/adjust a delta or the new total?","answer":"The new total. On the Rhode Island sandbox on 2026-09-03 a package holding 40 Each was sent Quantity: -1 and then held -1, not 39; the adjustments log recorded -41, the delta METRC computed. Sending 40 restored it to 40."},{"question":"Why does METRC’s API reference show \"Quantity\": -2.0?","answer":"It is the example body in the reference for this call, and it reads as \"subtract two\". The observed behaviour is that the package is set to the number sent. We do not know why the example is written that way."},{"question":"What happens if the new total is negative?","answer":"METRC accepts it. A package went to -1 with HTTP 200 and no warning on 2026-09-03. Against a production license that is a false inventory statement under your own account, so refuse a negative target before the call is made."},{"question":"Which adjustment reasons need a note?","answer":"All of them. GET /packages/v2/adjust/reasons listed 9 reasons on 2026-09-03 with RequiresNote true on every one: Drying, Entry Error, OCR Investigation, Processing Loss, Quality Control Sample, Scale Variance, Spoilage, Theft and Waste."},{"question":"Can I adjust a package in a different unit of measure?","answer":"No. A Grams package adjusted with Each returned HTTP 400 and the message The Unit of Measure must match the existing package (Grams), cannot be changed to Each. Read the package’s unit live and send that."},{"question":"Can I adjust a package that is already on a manifest?","answer":"Not through the API. A package on a template or a dispatched transfer returned HTTP 400 with Package <label> cannot be Adjusted because it is part of an existing Transfer. A person can adjust it in METRC Connect, and on production the transfer’s ShippedQuantity followed, from 100 to 79, while the delivery was still in transit."},{"question":"Do I fix the manifest quantity instead?","answer":"There is nothing on the manifest to fix. A transfer template carries no quantity, only PackageLabel, WholesalePrice, GrossWeight and GrossUnitOfWeightName. The package is adjusted and the manifest ships what the package holds."}],"sources":["PUT /packages/v2/adjust, GET /packages/v2/{label} and GET /packages/v2/adjustments on one Rhode Island sandbox facility, 2026-09-03: the delta-versus-absolute proof (Quantity -1 then 40 on a package holding 40 Each), the accepted negative, the unit-mismatch 400, and the on-transfer 400 beside its no-transfer 200.","GET /packages/v2/adjust/reasons, Rhode Island sandbox, 2026-09-03: nine reasons, RequiresNote true on each.","Read-only probe of one dispatched outgoing transfer and its package on Rhode Island production, 2026-09-03: ShippedQuantity 100 to 79 after a METRC Connect adjustment of -21.","Single-package GET after an adjust on a different Rhode Island sandbox facility, 2026-07-23.","SeedLink METRC field guide (docs/METRC.md), section Manifest and order reconciliation: the denomination split across 1,355 packages shipped in the 540 days to 2026-09-03."],"citation":"SeedLink, \"METRC package adjustments in Rhode Island: Quantity is the new total, not a delta, and the adjustments log reports the difference\", observed 2026-09-03, revised 2026-09-20, https://www.seedlink.net/guides/metrc/adjust-is-absolute","methodology":"https://www.seedlink.net/methodology","publisher":"SeedLink"}