Sending BOLs and Shipment Files
This guide describes how to submit your Bills of Lading (BOLs) and shipment documents to our system via SFTP.
Connect via SFTP
Secure file transfer
Package as Zip
One zip per load
Include Index File
JSON metadata required
SFTP Connection
All files must be transmitted over SFTP (SSH File Transfer Protocol). You will receive connection credentials during onboarding. Upload your zip files to the designated directory on the SFTP server.
Provided during onboarding22Zip File Structure
Each load must be packaged as a single .zip file. The zip must contain an index.json file along with all referenced shipment documents (PDFs).
Important: Every file referenced in the attachments.files array of your index.json must be present in the zip archive. Mismatched filenames will cause processing errors.
Index File Specification
The index.json file must be a valid JSON document. The root object must contain a shipmentMetadata key with the shipment details and file references.
shipmentMetadata Fields
| Field | Type | Required | Description |
|---|---|---|---|
| carrierId | string | Required | Unique identifier for the carrier (e.g. "TRUC"). |
| carrierName | string | Required | Full name of the carrier company (e.g. "Truck Systems Inc"). |
| customerId | string | Required | Unique identifier for the customer (e.g. "RETAIL00"). |
| customerName | string | Required | Full name of the customer (e.g. "NATIONAL RETAILER"). |
| deliveryNumber | string | Required | Numeric delivery reference number (e.g. "1234567899"). |
| orderNumber | string[] | Required | Array of order numbers associated with the shipment. |
| poNumber | string[] | Required | Array of purchase order numbers associated with the shipment. |
| podStatus | string | Optional | Proof of delivery status. Accepted values: "Not Applicable", "Pending", "Signed", "Rejected". |
| proNumber | string | Required | Progressive/PRO number for the shipment (e.g. "1234567899"). |
| receiver | string | Required | Name and location of the receiver (e.g. "NATIONAL RETAILER NY"). |
| receiverId | string | Required | Unique identifier for the receiver (e.g. "RETAIL01"). |
| sealNumber | string | Optional | Seal number on the shipment trailer (e.g. "12218008"). |
| shipmentNumber | string | Required | Unique shipment tracking number (e.g. "1001538844"). |
| shipmentTrailerNumber | string | Optional | Trailer identifier used for the shipment (e.g. "NF13589"). |
| shipper | string | Required | Name or address of the shipper (e.g. "Fort Worth, TX 76177"). |
| shipperId | string | Required | Unique identifier for the shipper (e.g. "US123"). |
| attachments | object | Required | Object containing a files array that lists all PDF documents in the zip. |
attachments.files[] Fields
Each entry in the attachments.files array describes a document included in the zip.
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Filename of the PDF document in the zip (e.g. "131187Bol.pdf"). Must match an actual file in the zip archive. |
| type | string | Required | Document type classification. Accepted values: "Bill of Lading", "Packing List", "Proof of Delivery", "Invoice". |
Full Example
A complete, valid index.json file:
{
"shipmentMetadata": {
"carrierId": "TRUC",
"carrierName": "Truck Systems Inc",
"customerId": "RETAIL00",
"customerName": "NATIONAL RETAILER",
"deliveryNumber": "1234567899",
"orderNumber": ["123456", "234567", "345678"],
"poNumber": ["123456", "234567", "345678"],
"podStatus": "Not Applicable",
"proNumber": "1234567899",
"receiver": "NATIONAL RETAILER NY",
"receiverId": "RETAIL01",
"sealNumber": "12218008",
"shipmentNumber": "1001538844",
"shipmentTrailerNumber": "NF13589",
"shipper": "Fort Worth, TX 76177",
"shipperId": "US123",
"attachments": {
"files": [
{
"name": "131187Bol.pdf",
"type": "Bill of Lading"
},
{
"name": "131187Packing.pdf",
"type": "Packing List"
}
]
}
}
}Validate Your File
Use this tool to check your index.json before uploading. It validates JSON syntax, required fields, data types, and attachment structure.
