Move packages
Move a list of packages to a destination location within a single license.
package_ids is a non-empty list of at most 300 package IDs; they must all resolve and all belong to the same license. All packages must be active and have a positive active quantity. location_id is the destination Distru location and must belong to that same license. Optionally pass metrc_location_id (Metrc's own location id) to also move the packages to a Metrc location.
Each package's on-hand inventory is relocated to location_id via an internal stock transfer (one per distinct source location), so the move is reflected in inventory ledgers at both the source and destination. Packages already stored in location_id are left untouched.
This operation is atomic: if any package or location is invalid the entire request is rejected and nothing is moved. The error message is a single human-readable string, not a per-package structured error.
Not supported for BioTrack licenses. For Metrc licenses, if metrc_location_id is passed, then Metrc is updated asynchronously: a successful response means the moves were applied in Distru and a pending Metrc activity was created for each package. The Metrc path additionally requires that your state has Metrc locations enabled and a Metrc key with permission to move packages.
Required permission: products_permissions_adjust_inventory.
BearerAuthorizationBearer <token>API token generated in Distru (Settings → Distru API). Send it on every request as Authorization: Bearer YOUR_API_TOKEN.
The packages to move
application/json- body
location_id*stringID of the destination Distru location (the location.id string on a package). Must belong to the same license as every package in package_ids; the packages' on-hand inventory is relocated there.
metrc_location_id?stringMetrc's own numeric location id (a foreign Metrc identifier, not a Distru ID). Omit to move the packages only within Distru. When provided, the packages are also moved to this Metrc location; this path is Metrc-only (unavailable for BioTrack licenses) and requires that your state has Metrc locations enabled and a Metrc key with permission to move packages.
package_ids*array<string>Non-empty list of 1 to 300 package IDs to move, each the id string returned by GET /public/v1/packages. All must resolve to packages in your company, all must belong to the same license, and each must be active with a positive active quantity. The move is all-or-nothing: one invalid id rejects the whole request.
The moved packages
*/*- response
A collection of Packages
data?array<>Packages
next_page?stringURL for the next page of results; null when there is no next page
curl -X POST 'https://app.distru.com/public/v1/packages/move' \ -H 'Content-Type: application/json' \ -d '{ "location_id": "00000000-0000-0000-0000-0000000000ef", "package_ids": [ "00000000-0000-0000-0000-000000000017", "00000000-0000-0000-0000-00000000001a" ]}'{ "data": [ { "batch_number": null, "biotrack_id": null, "biotrack_inventory_type_id": null, "biotrack_net_quantity_per_unit": null, "biotrack_room_id": null, "biotrack_status": null, "biotrack_usable_weight": null, "compliance_label": "ABCDEF012345670000000500", "compliance_product_name": "Buds", "compliance_strain_name": "Cotton Candy", "compliance_transferred_datetime": null, "compliance_type": "METRC", "creator": { "banned": false, "deleted_at": null, "email": "[email protected]", "full_name": "FirstName11932 LastName11933", "id": "00000000-0000-0000-0000-000000005585", "inserted_datetime": "2026-10-19T07:53:39.129052Z", "role": { "id": "00000000-0000-0000-0000-000000005853", "name": "Admin 6158" }, "updated_datetime": "2026-10-19T07:53:39.129052Z" }, "custom_data": [], "description": null, "distru_status": "ACTIVE", "expiration_date": null, "expiration_datetime": null, "finished_datetime": null, "harvest_date": null, "id": "00000000-0000-0000-0000-0000000004b1", "inactivated_datetime": null, "inserted_datetime": "2026-10-19T07:53:39.147291Z", "is_production_batch": false, "is_test_sample": false, "is_trade_sample": false, "lab_testing_state": "NotSubmitted", "license": { "active": true, "expiry_datetime": "2026-11-19T07:53:39.010073Z", "id": "00000000-0000-0000-0000-0000000006ff", "inserted_datetime": "2026-10-19T07:53:39.010141Z", "issue_datetime": "2026-10-19T07:53:39.010071Z", "license_number": "CDPH-00000422", "license_type": "Small Mixed-Light Tier 2" }, "license_id": "00000000-0000-0000-0000-0000000006ff", "location": { "address": "123 Fake Street, Beverly Hills, CA 90210, US", "company_id": "00000000-0000-0000-0000-0000000038e9", "id": "00000000-0000-0000-0000-0000000012b9", "license_id": "00000000-0000-0000-0000-0000000006ff", "name": "Place 1157" }, "location_id": "00000000-0000-0000-0000-0000000012b9", "metrc_archived_date": null, "metrc_finished_date": null, "metrc_id": 500, "metrc_label": "ABCDEF012345670000000500", "metrc_production_batch_number": null, "metrc_received_datetime": null, "metrc_received_from_manifest_number": null, "metrc_source_harvest_names": null, "metrc_status": "ACTIVE", "metrc_transfer_id": null, "metrc_unit_name": "Ounces", "owner": { "banned": false, "deleted_at": null, "email": "[email protected]", "full_name": "FirstName11922 LastName11923", "id": "00000000-0000-0000-0000-000000005580", "inserted_datetime": "2026-10-19T07:53:39.102564Z", "role": { "id": "00000000-0000-0000-0000-00000000584f", "name": "Admin 6154" }, "updated_datetime": "2026-10-19T07:53:39.102564Z" }, "packaged_date": "2014-11-29", "primary_test_result": null, "product": { "id": "46af0e35-6a43-4941-90e7-a970bbb0405d", "name": "Product 3866", "sku": "sku 3867", "updated_datetime": "2026-10-19T07:53:39.116657Z" }, "product_id": "46af0e35-6a43-4941-90e7-a970bbb0405d", "product_unit_quantity": "3.000000000", "product_unit_type": { "id": "00000000-0000-0000-0000-00000002e366", "name": "Ounce" }, "quantity": "3.000000000", "quantity_active": "3.000000000", "quantity_assembling": "0.000000000", "quantity_available": "3.000000000", "status": "active", "unit_type": { "id": "00000000-0000-0000-0000-00000002e366", "name": "Ounce" } }, { "batch_number": null, "biotrack_id": null, "biotrack_inventory_type_id": null, "biotrack_net_quantity_per_unit": null, "biotrack_room_id": null, "biotrack_status": null, "biotrack_usable_weight": null, "compliance_label": "ABCDEF012345670000000498", "compliance_product_name": "Buds", "compliance_strain_name": "Cotton Candy", "compliance_transferred_datetime": null, "compliance_type": "METRC", "creator": { "banned": false, "deleted_at": null, "email": "[email protected]", "full_name": "FirstName11908 LastName11909", "id": "00000000-0000-0000-0000-000000005579", "inserted_datetime": "2026-10-19T07:53:39.052782Z", "role": { "id": "00000000-0000-0000-0000-000000005849", "name": "Admin 6148" }, "updated_datetime": "2026-10-19T07:53:39.052782Z" }, "custom_data": [], "description": null, "distru_status": "ACTIVE", "expiration_date": null, "expiration_datetime": null, "finished_datetime": null, "harvest_date": null, "id": "00000000-0000-0000-0000-0000000004b0", "inactivated_datetime": null, "inserted_datetime": "2026-10-19T07:53:39.071215Z", "is_production_batch": false, "is_test_sample": false, "is_trade_sample": false, "lab_testing_state": "NotSubmitted", "license": { "active": true, "expiry_datetime": "2026-11-19T07:53:39.010073Z", "id": "00000000-0000-0000-0000-0000000006ff", "inserted_datetime": "2026-10-19T07:53:39.010141Z", "issue_datetime": "2026-10-19T07:53:39.010071Z", "license_number": "CDPH-00000422", "license_type": "Small Mixed-Light Tier 2" }, "license_id": "00000000-0000-0000-0000-0000000006ff", "location": { "address": "123 Fake Street, Beverly Hills, CA 90210, US", "company_id": "00000000-0000-0000-0000-0000000038e9", "id": "00000000-0000-0000-0000-0000000012b9", "license_id": "00000000-0000-0000-0000-0000000006ff", "name": "Place 1157" }, "location_id": "00000000-0000-0000-0000-0000000012b9", "metrc_archived_date": null, "metrc_finished_date": null, "metrc_id": 498, "metrc_label": "ABCDEF012345670000000498", "metrc_production_batch_number": null, "metrc_received_datetime": null, "metrc_received_from_manifest_number": null, "metrc_source_harvest_names": null, "metrc_status": "ACTIVE", "metrc_transfer_id": null, "metrc_unit_name": "Ounces", "owner": { "banned": false, "deleted_at": null, "email": "[email protected]", "full_name": "FirstName11902 LastName11903", "id": "00000000-0000-0000-0000-000000005576", "inserted_datetime": "2026-10-19T07:53:39.026164Z", "role": { "id": "00000000-0000-0000-0000-000000005846", "name": "Admin 6145" }, "updated_datetime": "2026-10-19T07:53:39.026164Z" }, "packaged_date": "2014-11-29", "primary_test_result": null, "product": { "id": "5bd86167-67c1-4823-b4e5-149ea92cb678", "name": "Product 3857", "sku": "sku 3858", "updated_datetime": "2026-10-19T07:53:39.037040Z" }, "product_id": "5bd86167-67c1-4823-b4e5-149ea92cb678", "product_unit_quantity": "5.000000000", "product_unit_type": { "id": "00000000-0000-0000-0000-00000002e366", "name": "Ounce" }, "quantity": "5.000000000", "quantity_active": "5.000000000", "quantity_assembling": "0.000000000", "quantity_available": "5.000000000", "status": "active", "unit_type": { "id": "00000000-0000-0000-0000-00000002e366", "name": "Ounce" } } ], "next_page": null}