eBOL & PRO Numbers
There are two ways to get the carrier's electronic bill of lading (eBOL) and PRO number:
- Automatically, as part of the booking. Switched on per carrier account with the Allow PRO # assignment from carrier setting (see below ). There's no separate call to make.
-
On demand, after the booking.
Call
POST /ebol/jobsfor a dispatch you booked through the API. This works whatever the account setting is.
How it works
- You dispatch the shipment as usual.
- Once the carrier accepts the pickup, Shipwell requests the eBOL. For XPO, the eBOL request is the pickup booking.
-
The dispatch job stays
PROCESSINGuntil the eBOL answer is in, so reachingCOMPLETEDmeans the whole booking is done. -
The carrier's PRO number is added to the dispatch job's
references, next to its pickup number:
"references": [
{"qualifier": "BOL_NUMBER", "value": "BOL-77120"},
{"qualifier": "PICKUP_NUMBER", "value": "PU-448201"},
{"qualifier": "PRO_NUMBER", "value": "123456789"}
]Tracking uses that PRO number to follow the shipment. Until the carrier knows it, tracking asks by bill of lading instead. You can see which one is in use in tracking_reference_kind on the tracking timeline.
To get the bill of lading document itself, read GET /documents/{resource_id}/BOL.
Note
ABF assigns its PRO number during dispatch itself instead of through a separate eBOL request. For ABF, the PRO number is in references as soon as the dispatch completes.
Request an eBOL on demand
Use this when the carrier account doesn't issue eBOLs automatically, or when you want the PRO number only for some shipments.
-
Dispatch
the shipment and poll the dispatch job until it's
COMPLETED. -
Request the eBOL with the dispatch job's
id:
curl -X POST https://api.shipwell.com/ebol/jobs \
-H "Authorization: <your API key>" \
-H "Content-Type: application/json" \
-d '{"dispatch_job_id": "01KBZC9J8Q0000000000000000"}'Everything on the bill of lading comes from the booked dispatch: stops, contacts, freight, references and notes. It always matches the pickup the carrier was given.
-
Poll
GET /ebol/jobs/{id}untilis_terminalistrue. The carrier's answer is inbol, using the field names of the NMFTA Digital LTL eBOL standard (v2.1.0):
{
"data": {
"id": "01KC0EB0L00000000000000000",
"resource_type": "ebol_job",
"status": "COMPLETED",
"is_terminal": true,
"dispatch_job_id": "01KBZC9J8Q0000000000000000",
"resource_id": "9f2c1b84-6d3a-4c17-9b0e-2f5a7c48d31e",
"provider_code": "ESTES",
"bol": {
"version": "2.1.0",
"transactionDate": "2026-10-28T15:31:05.112Z",
"referenceNumbers": {"pro": "0123456789", "shipmentConfirmationNumber": "PU44812"},
"scac": null,
"images": {"bol": null, "shippingLabels": null}
},
"errors": []
}
}The PRO number is also added to the dispatch job's references. Read the bill of lading PDF from GET /documents/{resource_id}/BOL.
Each dispatch has at most one eBOL job. Calling POST /ebol/jobs again while it's in progress, or after it completed, returns the same job with 200 and sends nothing to the carrier. Only an ERRORED job is sent again. If the account already issued the eBOL during dispatch, you get that one back.
| Response | Meaning |
|---|---|
201 |
The eBOL was sent to the carrier. Poll the job. |
200 |
The dispatch already has an eBOL job. It's returned as it is. |
404 dispatch_job_not_found |
No dispatch job with that id for your company. |
409 dispatch_not_completed |
The dispatch isn't COMPLETED yet. |
400 ebol_not_supported |
The carrier can't issue an eBOL through Shipwell. ABF already returns its PRO number on the dispatch, XPO's eBOL would book a second pickup, and some carriers have no eBOL integration. |
Retrying a failed eBOL
Shipwell doesn't retry a failed eBOL on its own. If the job is ERRORED, errors has the carrier's reason. If the error looks temporary, such as a timeout or the carrier being unavailable, call POST /ebol/jobs again for the same dispatch. We suggest at most two more attempts, about ten seconds apart. An error about the shipment itself (an address, a contact, the freight) fails the same way every time.
If a job is still PROCESSING after 15 minutes, it won't finish on its own, and calling POST /ebol/jobs again won't resend it. Contact Shipwell support with the eBOL job id.
If the eBOL fails
This section is about the automatic eBOL. For most carriers, the pickup has already been booked by the time the eBOL is requested. If the eBOL fails, the dispatch still completes, just without a carrier PRO number. For XPO, where the eBOL is the booking, a failed eBOL fails the dispatch, and the reason is in errors.
Who assigns the PRO number
Each carrier account has a PRO # Generation setting in the Shipwell application:

- Allow PRO # assignment from carrier : the carrier assigns the PRO number. It comes back in the eBOL response or, for some carriers, in a later tracking update.
- Generate PRO # from Shipwell : Shipwell assigns the PRO number when the shipment is dispatched, and no eBOL is requested from the carrier automatically. You can still request one on demand .
If neither is set, no PRO number is generated for that carrier account.
Which carriers issue eBOLs is shown in Supported Carriers.
Next steps
Track the shipment to delivery, then pull its delivery documents.