> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goshippo.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Shippo is a multi-carrier shipping API. For agent integrations that execute shipping operations (rates, labels, tracking, address validation, customs), connect the hosted Shippo MCP server at https://mcp.shippo.com (per-user OAuth; setup at /guides/mcp-server). To search and read this documentation from an agent, a docs search MCP is available at https://docs.goshippo.com/mcp. Shipping workflow knowledge (agent skills and a knowledge pack) is published at https://github.com/goshippo/ai. For REST integrations start at /guides/api-quickstart; test mode uses shippo_test_ API keys.

# Migrating to the new OnTrac API

> OnTrac and LaserShip are now one carrier. Move from your legacy integration to OnTrac WS v3 by the end of Q1 2027.

> [!WARNING]
>
> **Migrate by the end of Q1 2027.** You choose when inside that window, and you can revert at any point during it.

* Your current account keeps working until you switch.
* Revert any time, no support ticket.

## How to migrate

The same five steps apply whichever integration you are on today.

**1. Get your v3 credentials from OnTrac**

v3 uses a WSID and WSKey pair, issued by OnTrac per account. This is the long lead item. OnTrac provisions one account at a time and it can take a few weeks, so start this first.

**2. Connect a new OnTrac account in Shippo**

Use the WSID and WSKey. Leave your existing account connected. The two run side by side, and Shippo routes every label through the account that bought it.

**3. Update your integration**

Send `extra.fulfillment_center` on every shipment, using the code OnTrac issues for each of your warehouses. **If you do not already have these codes, request them from OnTrac** alongside your credentials. Shippo cannot issue or look them up for you, and without one on the shipment OnTrac returns no rates.
Also request the `ontrac_ground` service level, and stop sending extras that v3 no longer supports.

**4. Test, then brief your warehouse**

Run rating, label purchase, tracking and cancellation on the new account. Show your warehouse team the new label and test your scanners before you move production traffic.

**5. Stop using the old account**

If anything looks wrong, switch back. It is a configuration change on your side, not a code deploy.

## What changes for you

Select the integration you are on today.

> [tab] Legacy OnTrac
>
> ### These will break your shipments
>
> Work through these before you move production traffic.
>
> > [accordion] 1. Your credentials change
> >
> > A WSID and WSKey replace your account number and password. Request them from OnTrac.
>
> > [accordion] 2. Every shipment must carry extra.fulfillment\_center
> >
> > This is the OnTrac-issued code for the warehouse the shipment leaves from, and it is required on every rate request and every label purchase. **Without it you will not see OnTrac rates at all**, so there is no rate to buy a label from.
> >
> > The old API worked out your origin from the account number alone, so you have never had to send this. **If you do not have a code for each of your warehouses, ask OnTrac for them.** They are issued by OnTrac, and Shippo cannot look them up for you.
>
> > [accordion] 3. Cash on delivery is not supported
> >
> > You can ship COD today. OnTrac v3 has no COD equivalent, so the request is rejected with a clear error. You will need to collect payment outside OnTrac.
>
> > [accordion] 4. Carrier insurance and declared value are not supported
> >
> > You can declare a package value for carrier coverage today. OnTrac v3 has no field for it, so the request is rejected with a clear error. Move coverage to a third-party insurer.
>
> > [accordion] 5. Third-party billing must name an account
> >
> > `THIRD_PARTY` is the only billing type v3 supports. Any other type is rejected, and so is a third-party request with no account number. If you are not billing a third party, leave `billing` out entirely and the shipper is billed by default.
>
> > [accordion] 6. More PO Box formats are caught
> >
> > PO Boxes are already blocked today, but the old detection missed some address formats. A small number of shipments that used to slip through will now be rejected.
>
> > [!WARNING]
> >
> > **Items 3 and 4 are capability losses, not field changes.** They work on your current integration and OnTrac v3 has no replacement. If you use any of them today, put an alternative in place before you migrate, not after.
>
> ### These change what you and your warehouse see
>
> 1. **Tracking numbers change format.** Update anything that validates or parses the prefix: WMS, OMS, customer notifications, returns portals, analytics.
>
>    | Before | After |
>    | - | - |
>    | `D10…` | `1T…` |
>
> 2. **The barcode changes.** The 2D barcode moves from a PDF417 rectangular matrix to a DataMatrix square. Test your scanners against a v3 label before you migrate a warehouse.
>
> 3. **The label looks different.** This is the bigger of the two visual changes. Branding, layout and barcode all change at once. See [What the labels look like](#what-the-labels-look-like).
>
> ### These get better
>
> > [!TIP]
> >
> > **You can cancel labels.** The old integration has no cancel mechanism at all, so refund requests sit in pending refund indefinitely. On v3 you can cancel a label any time before it is loaded onto an OnTrac vehicle. Labels bought on your old account are not covered.
>
> > [!TIP]
> >
> > **Multi-package shipments work.** One tracking number per box, bought in a single transaction. The old integration rejected multi-piece outright.
>
> > [!TIP]
> >
> > **One account instead of one per warehouse.** The account holds your credentials and the fulfillment center code travels on the shipment. A shipper running 49 warehouse accounts today collapses to one.

> [tab] LaserShip
>
> ### These will break your shipments (7 to fix)
>
> Work through these before you move production traffic.
>
> > [accordion] 1. Your credentials change
> >
> > Your existing WSId and WSKey do not carry over. OnTrac issues new ones for v3.
>
> > [accordion] 2. PO Box destinations are rejected
> >
> > LaserShip does not block PO Boxes today. v3 does, so a shipment that works right now stops working. Audit your PO Box volume before you migrate and raise it with Shippo if you depend on it. After the tracking number, this is the most consequential item on your list.
>
> > [accordion] 3. Every shipment must carry extra.fulfillment\_center
> >
> > This is the OnTrac-issued code for the warehouse the shipment leaves from, and it is required on every rate request and every label purchase. **Without it you will not see OnTrac rates at all**, so there is no rate to buy a label from.
> >
> > Shippo used to pick your hub from its own internal tables; on v3 OnTrac determines the hub, zone and transit time from this code. **If you do not have a code for each of your warehouses, ask OnTrac for them.** They are issued by OnTrac, and Shippo cannot look them up for you.
>
> > [accordion] 4. Weekend delivery is gone
> >
> > Ground is the only service level on v3. Routed Delivery and Ground both become Ground. If you ship weekend deliveries today, you lose that option.
>
> > [accordion] 5. Cash on delivery is not supported
> >
> > You can ship COD today. OnTrac v3 has no COD equivalent, so the request is rejected with a clear error. You will need to collect payment outside OnTrac.
>
> > [accordion] 6. Carrier insurance and declared value are not supported
> >
> > You can declare a package value for carrier coverage today. OnTrac v3 has no field for it, so the request is rejected with a clear error. Move coverage to a third-party insurer.
>
> > [accordion] 7. Third-party billing must name an account
> >
> > `THIRD_PARTY` is the only billing type v3 supports. Any other type is rejected, and so is a third-party request with no account number. If you are not billing a third party, leave `billing` out entirely and the shipper is billed by default.
>
> > [!WARNING]
> >
> > **Items 4, 5 and 6 are capability losses, not field changes.** They work on your current integration and OnTrac v3 has no replacement. If you use any of them today, put an alternative in place before you migrate, not after.
>
> ### These change what you and your warehouse see (3 to expect)
>
> 1. **Tracking numbers change format.** Update anything that validates or parses the prefix: WMS, OMS, customer notifications, returns portals, analytics.
>
>    | Before | After |
>    | - | - |
>    | `1LS…` | `1T…` |
>
> 2. **The barcodes stay where they are.** The square 2D code in the top-right corner and the main barcode across the centre sit in the same places they do on your label today. Test your scanners against a v3 label before you migrate a warehouse anyway.
>
> 3. **The label looks slightly different.** LaserShip and v3 already share the same post-merger layout, so the change is small. The logo and the service code change. See [What the labels look like](#what-the-labels-look-like).
>
> ### These get better (3 gains)
>
> > [!TIP]
> >
> > **Size and weight ceilings go up.** You are blocked above 50 lb and 42 in today. On v3 the OnTrac limits apply: up to 150 lb and 72 in. You may want to remove your own pre-filters.
>
> > [!TIP]
> >
> > **You can cancel labels.** The old integration has no cancel mechanism at all, so refund requests sit in pending refund indefinitely. On v3 you can cancel a label any time before it is loaded onto an OnTrac vehicle. Labels bought on your old account are not covered.
>
> > [!TIP]
> >
> > **One account instead of one per warehouse.** The account holds your credentials and the fulfillment center code travels on the shipment.

## What the labels look like

Labels you bought before migrating keep their existing format and keep tracking normally.

![Legacy OnTrac XML V2 label with the sender address redacted. OnTrac wordmark, GROUND service code, WPAE routing box, tracking number D10017406769977.](https://mintcdn.com/shippo-f4b7b609/pV3fU3UF8Oi6c2T0/carriers/ontrac-lasership-sample-images/label-legacy-ontrac.png?fit=max\&auto=format\&n=pV3fU3UF8Oi6c2T0\&q=85\&s=2b86368288f749e5274c40ac1f079a12)

Legacy OnTrac, today

![LaserShip V2 label with the sender address redacted. Large LXTN hub code, square 2D barcode top right, tracking number 1LSCYFU0063RWG0.](https://mintcdn.com/shippo-f4b7b609/pV3fU3UF8Oi6c2T0/carriers/ontrac-lasership-sample-images/label-lasership.png?fit=max\&auto=format\&n=pV3fU3UF8Oi6c2T0\&q=85\&s=42e1e5f4269fb24b421e7f86d946ab47)

LaserShip, today

![OnTrac v3 test label](https://mintcdn.com/shippo-f4b7b609/pV3fU3UF8Oi6c2T0/carriers/ontrac-lasership-sample-images/label-ontrac-v3.png?fit=max\&auto=format\&n=pV3fU3UF8Oi6c2T0\&q=85\&s=b004ea53dfbbc1866368aa7b38be1d2e)

OnTrac v3, after you migrate

The v3 example is a test label. Sender addresses on the two legacy examples have been redacted.

## Why migrating is worth it

> [accordion] Label cancellations finally work
>
> Neither legacy integration has a cancel mechanism, so refund requests sit in pending refund indefinitely. On v3 you cancel a label before it is loaded onto an OnTrac vehicle and the refund runs through the normal Shippo flow. For teams with regular order edits or last-minute fulfillment changes, this is the most tangible day-one gain.

> [accordion] More reliable tracking updates
>
> v3 lets Shippo request tracking for up to 25 tracking numbers in a single call. That batching lets Shippo poll more efficiently and keep updates coming for every tracking number on your account. The size of the improvement will only be clear once accounts have migrated and it can be measured.

> [accordion] Multi-package shipments in one transaction
>
> One tracking number per box, bought in a single call.

> [accordion] Account sprawl collapses
>
> Multi-warehouse shippers run one carrier account and pass the warehouse code per shipment.

> [accordion] Higher size and weight ceilings, on LaserShip accounts
>
> Up to 150 lb and 72 in, from 50 lb and 42 in today.

> [accordion] Faster setup for new accounts
>
> Purchase-ready within 24 hours of OnTrac issuing credentials, with no manual activation.

## Before you cut over

* [ ] WSID and WSKey issued by OnTrac, in hand
* [ ] Fulfillment center code for every origin location, requested from OnTrac if you do not have them, and sent as `extra.fulfillment_center` on every shipment
* [ ] COD and carrier insurance requests removed from your integration, or label purchases will fail
* [ ] Third-party billing payload updated, if you use it
* [ ] Anything that parses the tracking number prefix updated
* [ ] Warehouse scanners tested against a v3 label
* [ ] Warehouse team briefed on the new label
* [ ] PO Box volume audited (LaserShip accounts)
* [ ] Old account left connected as your rollback path

> [!NOTE]
>
> Questions about your migration go to your Shippo contact. Your OnTrac rep issues the v3 credentials and your fulfillment center codes.


## Related topics

- [Carrier capabilities](https://docs.goshippo.com/carriers/carrier-capabilities.md)
- [Create a new parcel](https://docs.goshippo.com/api-reference/parcels/create-a-new-parcel.md)
- [Migrating from Platform API to Shippo API](https://docs.goshippo.com/platform-accounts/platform-api-migrate.md)
