# Print outside Starshipit and return tracking
URL: https://support.starshipit.com/articles/14700000001006-print-outside-starshipit-and-return-tracking
Canonical: https://support.starshipit.com/articles/14700000001006-print-outside-starshipit-and-return-tracking
Markdown: https://support.starshipit.com/articles/14700000001006-print-outside-starshipit-and-return-tracking.md
Updated: 2026-06-18

> For the complete documentation index, see [llms.txt](https://support.starshipit.com/llms.txt).

> Import or update orders, print labels outside the Starshipit UI, and return tracking details to another system.

Print outside the Starshipit UI when your ERP, WMS, middleware, or custom platform drives fulfilment and needs Starshipit to generate the courier label and tracking details by API.

## Before you begin

- Import or identify the order you want to ship.
- Confirm the order has a valid destination address.
- Confirm a carrier and service can be selected by Starshipit rules or by your integration.
- Confirm package weight and dimensions are available.
- Decide where the label file and tracking number will be stored.

## Recommended workflow

1. Create the order in Starshipit with [POST /api/orders](/developers/api-reference/starshipit#endpoint-orders-post-api-orders-create-order), or update an existing unprinted order with [PUT /api/orders](/developers/api-reference/starshipit#endpoint-orders-put-api-orders-update-order).
2. Confirm the order has the correct address, items, package details, shipping method, carrier, and service.
3. Trigger label generation with [POST /api/orders/shipment](/developers/api-reference/starshipit#endpoint-shipments-post-api-orders-shipment-print-label), or use [POST /api/orders/shipments](/developers/api-reference/starshipit#endpoint-shipments-post-api-orders-shipments-print-labels) for a batch print flow.
4. Store the returned label file or label URL in your fulfilment system.
5. Store the returned tracking number against the source order.
6. Manifest shipments with [POST /api/manifests/shipments](/developers/api-reference/starshipit#endpoint-manifests-post-api-manifests-shipments-manifest-orders) when your operational process is ready.
7. Send tracking to the customer or source platform, or reconcile it later with [GET /api/track](/developers/api-reference/starshipit#endpoint-tracking-get-api-track-tracking).

## Endpoint map

[Open the Starshipit API reference](/developers/api-reference/starshipit#orders) for request fields and response models.

| Step | Endpoint | Use it to |
| --- | --- | --- |
| Create the order | [POST /api/orders](/developers/api-reference/starshipit#endpoint-orders-post-api-orders-create-order) | Add the order Starshipit will label. |
| Update the order | [PUT /api/orders](/developers/api-reference/starshipit#endpoint-orders-put-api-orders-update-order) or [PUT /api/orders/update](/developers/api-reference/starshipit#endpoint-orders-put-api-orders-update-update-orders) | Correct address, package, customs, or shipping data before printing. |
| Print one label | [POST /api/orders/shipment](/developers/api-reference/starshipit#endpoint-shipments-post-api-orders-shipment-print-label) | Generate one label and tracking response. |
| Print multiple labels | [POST /api/orders/shipments](/developers/api-reference/starshipit#endpoint-shipments-post-api-orders-shipments-print-labels) | Generate labels in a batch flow where appropriate. |
| Manifest shipments | [POST /api/manifests/shipments](/developers/api-reference/starshipit#endpoint-manifests-post-api-manifests-shipments-manifest-orders) | Manifest shipments when your operational process is ready. |

## Example WMS-driven flow

Use this variation when a WMS or fulfilment system owns picking and packing, but Starshipit creates the courier label.

1. Orders are imported into Starshipit through a native ecommerce, marketplace, or platform integration.
2. The WMS finds the Starshipit order with [GET /api/orders](/developers/api-reference/starshipit#endpoint-orders-get-api-orders-get-order-s) or [GET /api/orders/search](/developers/api-reference/starshipit#endpoint-orders-get-api-orders-search-phrase-john-20smith-search-orders).
3. Users pick the order and make any required changes in the WMS, such as changing weight or package count.
4. The WMS updates the unprinted order in Starshipit with [PUT /api/orders](/developers/api-reference/starshipit#endpoint-orders-put-api-orders-update-order).
5. The WMS prints the courier label with [POST /api/orders/shipment](/developers/api-reference/starshipit#endpoint-shipments-post-api-orders-shipment-print-label).
6. The WMS manifests shipments with [POST /api/manifests/shipments](/developers/api-reference/starshipit#endpoint-manifests-post-api-manifests-shipments-manifest-orders).
7. The WMS stores tracking from the label response, receives webhooks, or reconciles later with [GET /api/track](/developers/api-reference/starshipit#endpoint-tracking-get-api-track-tracking).

## Decide where fulfilment happens

| Fulfilment model | Best fit |
| --- | --- |
| Staff print in Starshipit | Teams that use Starshipit as the operational shipping screen. |
| External system prints labels | Warehouses that pick, pack, and print from a WMS, ERP, or custom tool. |
| Hybrid | Teams that fulfil some orders in Starshipit and some orders externally. |

## When to use this pattern

Use this pattern when the external system owns the warehouse workflow. Starshipit still handles carrier rules, label generation, tracking, manifests, and courier integrations, but staff do not need to open the Starshipit UI for each shipment.

## Handle label failures

Label creation can fail even when order creation succeeds. Common causes include invalid address data, missing package details, unavailable carrier services, missing customs data, or account-level courier configuration issues.

When label creation fails:

1. Log the response body and the source order ID.
2. Show the failure to the operations team.
3. Allow the order data to be corrected.
4. Retry only after the underlying issue has changed.

## Verify the label flow

Confirm the generated label can be opened or printed, the tracking number is stored in your source system, and the shipment appears in Starshipit with the expected carrier and service.

## Related guides

- [Import orders, print in Starshipit, and update the source system](/articles/developer-center/starshipit-api/import-orders-into-starshipit)
- [Print labels for orders Starshipit imported](/articles/developer-center/starshipit-api/print-labels-for-orders-starshipit-imported)
- [Update orders before printing](/articles/developer-center/starshipit-api/update-orders-before-printing)
- [Starshipit API reference](/developers/api-reference/starshipit#orders)
