ChannelEngine: one-time shipment feeds
About this article
This article explains how to create shipments by uploading a feed from the orders overview.
Table of contents
Introduction
Use one-time shipment feeds to create shipments for multiple orders at once, similarly to uploading a product feed.
One-time shipment feeds are useful:
- If you manage shipments manually on ChannelEngine, and want to speed up shipment creation.
- As a workaround when shipments sent through the API do not come through to ChannelEngine correctly, and you want to create them from the web interface.
Use CSV, XML, or JSON formats for one-time shipment feeds.
Access one-time shipment feeds at Orders, Orders, three-dot menu, Upload shipments.
Requirements
- The order that you wish to fulfill must exist on ChannelEngine, be acknowledged, and have the status In progress (
IN_PROGRESS) or Combined (IN_COMBI). - The one-time shipment feed format must be CSV, XML, or JSON.
- Each shipment must contain at least one valid shipment line containing a product to be shipped.
- Each order line you ship must exist in the related order.
- Each
MerchantShipmentNomust be unique, in the feed and against existing shipments on ChannelEngine.
Create a shipment feed
The tables below describe which fields to include in one-time shipment feeds. Each entry in the feed represents one shipment, which is linked to an existing order through MerchantOrderNo.
Shipment fields
These fields apply to the shipment as a whole.
| Field | Required | Description |
MerchantOrderNo |
Yes | A unique order reference you assign when acknowledging the order. Must match an existing order with the status IN_PROGRESS or IN_COMBI. |
MerchantShipmentNo |
Yes | A unique shipment reference you assign when creating a shipment. Maximum 250 characters. |
ShipmentDate |
No | ISO 8601 date when the package is shipped. If you leave it empty, the current time is used. |
Method |
No | The carrier responsible for fulfilling the order. Maximum 50 characters. |
TrackTraceNo |
No | The tracking code assigned to the shipment package. Maximum 50 characters. |
TrackTraceUrl |
No | The tracking URL. Maximum 250 characters. |
ReturnMethod |
No | The carrier responsible for delivering the return. Maximum 50 characters. |
ReturnTrackTraceNo |
No | The return tracking code for the shipped package. Maximum 50 characters. |
ShippedFromCountryCode |
No | The country where the package is shipped from. Maximum 3 characters. |
ShippedFromStockLocationId |
No | The ID of the stock location (warehouse) where the package is shipped from. |
AirWaybillNo |
No | The air waybill number. Maximum 250 characters. |
ExtraData |
No | Extra information you want to include in each shipment, as key-value pairs. For example, ShippingCarrier. |
Shipment line fields
Every shipment needs at least one valid shipment line, which includes the product(s) to be shipped.
| Field | Required | Description |
MerchantProductNo |
Yes | The unique internal reference you assign to the product. ChannelEngine uses it to match the shipment line to an order line. |
OrderLineId |
No | The ID of the order line the shipment line refers to. Use it when the order contains more than one line with the same product (MerchantProductNo), to specify which line you ship. In CSV, the column name is OrderLine1_Id. |
Quantity |
Yes | The product quantity that needs to be shipped. Must be greater than 0. |
ExtraData |
No | Extra information you want to include in each shipment line, as key-value pairs. For example, IMEI. |
Feed examples
The examples below describe the same shipment: shipment SHIP123 for order ORDER456, containing one unit of product MPN-12 and two units of product MPN-13.
MerchantShipmentNo, JSON uses merchantShipmentNo. Copy the capitalization from the example for the format you use.
CSV
Below is an example of a CSV shipment feed. The columns are driven by the header row, so the order of the columns does not matter. The delimiter is a comma ( , ).
MerchantShipmentNo,MerchantOrderNo,ShipmentDate,Method,TrackTraceNo,TrackTraceUrl,ReturnMethod,ReturnTrackTraceNo,ShippedFromCountryCode,ShippedFromStockLocationId,AirWaybillNo,Shipment_ExtraDataKey1,Shipment_ExtraDataValue1,Shipment_ExtraDataKey2,Shipment_ExtraDataValue2,OrderLine1_Id,OrderLine1_MerchantProductNo,ShipmentLine1_Quantity,ShipmentLine1_ExtraDataKey1,ShipmentLine1_ExtraDataValue1,ShipmentLine1_ExtraDataKey2,ShipmentLine1_ExtraDataValue2,OrderLine2_Id,OrderLine2_MerchantProductNo,ShipmentLine2_Quantity,ShipmentLine2_ExtraDataKey1,ShipmentLine2_ExtraDataValue1,ShipmentLine2_ExtraDataKey2,ShipmentLine2_ExtraDataValue2 SHIP123,ORDER456,2024-01-10T10:30:00Z,Standard,TRACK999,https://tracking.example.com,DHL Return,RETURN12345,NL,12,057-12345678,WarehouseLocation,A-15,ShippingCarrier,DHL,8036,MPN-12,1,PackageWeight,2.5kg,PackageType,Box,8037,MPN-13,2,PackageWeight,3.5kg,PackageType,Box
In CSV, each row is one shipment.
-
OrderLine1_*- identifies the order line to ship, throughOrderLine1_MerchantProductNoand, optionally,OrderLine1_Id. -
ShipmentLine1_*- the quantity you ship from that order line, and the extra data of the shipment line. -
Shipment_ExtraDataKey1andShipment_ExtraDataValue1- the extra data of the shipment.
All other columns are shipment fields, as described in shipment fields. Increase the number in the column name to add more shipment lines or extra data fields: OrderLine2_*, ShipmentLine2_*, Shipment_ExtraDataKey2, and so on.
JSON
Below is an example of a JSON shipment feed. Each object in the array is one shipment, and the lines array holds its shipment lines.
[
{
"merchantShipmentNo": "SHIP123",
"merchantOrderNo": "ORDER456",
"shipmentDate": "2024-01-10T10:30:00Z",
"method": "Standard",
"trackTraceNo": "TRACK999",
"trackTraceUrl": "https://tracking.example.com",
"returnMethod": "DHL Return",
"returnTrackTraceNo": "RETURN12345",
"shippedFromCountryCode": "NL",
"shippedFromStockLocationId": 12,
"airWaybillNo": "057-12345678",
"extraData": {
"WarehouseLocation": "A-15",
"ShippingCarrier": "DHL"
},
"lines": [
{
"merchantProductNo": "MPN-12",
"orderLineId": 8036,
"quantity": 1,
"extraData": {
"PackageWeight": "2.5kg",
"PackageType": "Box"
}
},
{
"merchantProductNo": "MPN-13",
"orderLineId": 8037,
"quantity": 2,
"extraData": {
"PackageWeight": "3.5kg",
"PackageType": "Box"
}
}
]
}
]XML
Below is an example of an XML shipment feed. Each Shipment element is one shipment, and the Lines element holds its shipment lines.
<?xml version="1.0" encoding="utf-8"?>
<Shipments>
<Shipment>
<MerchantShipmentNo>SHIP123</MerchantShipmentNo>
<MerchantOrderNo>ORDER456</MerchantOrderNo>
<ShipmentDate>2024-01-10T10:30:00Z</ShipmentDate>
<Method>Standard</Method>
<TrackTraceNo>TRACK999</TrackTraceNo>
<TrackTraceUrl>https://tracking.example.com</TrackTraceUrl>
<ReturnMethod>DHL Return</ReturnMethod>
<ReturnTrackTraceNo>RETURN12345</ReturnTrackTraceNo>
<ShippedFromCountryCode>NL</ShippedFromCountryCode>
<ShippedFromStockLocationId>12</ShippedFromStockLocationId>
<AirWaybillNo>057-12345678</AirWaybillNo>
<ExtraData>
<WarehouseLocation>A-15</WarehouseLocation>
<ShippingCarrier>DHL</ShippingCarrier>
</ExtraData>
<Lines>
<Line>
<MerchantProductNo>MPN-12</MerchantProductNo>
<OrderLineId>8036</OrderLineId>
<Quantity>1</Quantity>
<ExtraData>
<PackageWeight>2.5kg</PackageWeight>
<PackageType>Box</PackageType>
</ExtraData>
</Line>
<Line>
<MerchantProductNo>MPN-13</MerchantProductNo>
<OrderLineId>8037</OrderLineId>
<Quantity>2</Quantity>
<ExtraData>
<PackageWeight>3.5kg</PackageWeight>
<PackageType>Box</PackageType>
</ExtraData>
</Line>
</Lines>
</Shipment>
</Shipments>Upload a shipment feed
- From the left sidebar, go to Orders, Orders.
- In the order overview, click the three-dot menu and select Upload shipments.
-
In the Upload shipments pop-up, click Choose file and select the feed from your computer.
Upload shipments pop-up - Expand File format information if you want to see the description of each field.
- Click Upload.
ChannelEngine processes the feed and shows a confirmation message: File uploaded and processed successfully. The message contains a View shipment upload history link that takes you straight to the upload history.
Fully shipped orders become Shipped, partially shipped orders stay In progress.
View the upload history
The Shipment feed upload history page lists every shipment feed you have uploaded. Open it in one of two ways:
- In the Upload shipments pop-up, click View shipment upload history.
- In the confirmation message that appears after an upload, click View shipment upload history.
The page shows the following columns:
- Date - the date and time of the upload.
- Name - the name of the uploaded feed.
- Type - the format of the uploaded feed: CSV, XML, or JSON.
- Status - the status of the feed upload. Success if ChannelEngine processed the whole feed, Failed if there were validation errors.
- Report - the report link if the upload resulted in errors.
Use the search field to find a specific feed, and the pagination at the bottom of the page to browse older uploads.
View the validation report
Click Report to open the Validation report for a specific feed upload. Each row corresponds to one error:
| Column | Description |
| Error | Description of what went wrong, e.g.: Can't ship order line for SKU [Merchant product number], as it was not found in order [Order ID]. |
| Field name on ChannelEngine | The field in the feed where the error occurred. |
| Value | The value of that field in the feed. |
| Merchant order no. | The order that the failed shipment refers to. |
Use the dropdown at the top of the page to filter the errors.
To receive the full report by email, click Download CSV. Correct the errors in your feed and re-upload it.
Common issues
| Issue | Cause | Solution |
| The order line cannot be shipped, because it was not found in the order. | The Merchant product number or order line ID in the feed does not match a line in that order. | Check MerchantProductNo against the order lines on the order details page, and check that the shipment refers to the right MerchantOrderNo. |
| The order is not found or is rejected. | The order does not exist on ChannelEngine, or it does not have the status IN_PROGRESS or IN_COMBI. |
Only upload shipments for orders that are In progress or Combined. Fully shipped, returned, or canceled orders cannot receive shipments. |
| The shipment number is rejected. | The same MerchantShipmentNo appears twice in the feed, or a shipment with that number already exists on ChannelEngine. |
Give every shipment a unique shipment number of up to 250 characters. Reusing a shipment number does not update the existing shipment. |
| The wrong order line is shipped. | The order contains more than one line with the same MerchantProductNo, and the shipment line does not specify which one to ship. |
Add OrderLineId to the shipment line to target a specific order line. |
| The shipment is created without lines. | The quantity of products is missing or is 0. | Enter a product quantity that is greater than 0. |
| The shipment date is the moment of upload instead of the date in the feed. |
ShipmentDate is missing or is not a valid ISO 8601 date. |
Provide a shipment date in the format: 2024-01-10T10:30:00Z. |
| Only one shipment is created for an order that was sent in several packages. | All lines are listed under a single shipment entry. | Add one entry per shipment, and list only the lines that belong to that shipment in each entry. |
| The feed is not accepted. | The file extension is not .csv, .xml, or .json. |
Save the feed in one of the supported file formats. |
Comments
0 comments
Article is closed for comments.