Consignment Import
The Consignment Imports endpoint enables the creation of new consignments by submitting import data. This is the primary method for programmatically creating consignments in Consignly.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
POST |
/v1/consignment-imports |
Create a consignment import |
Create Consignment Import
A new consignment is created by submitting import data. The import is processed asynchronously and results in a consignment when successful.
Endpoint: POST /v1/consignment-imports
Authentication
Requires Bearer token authentication.
Request Body
{
"idempotencyKey": "unique-import-key-12345",
"consignmentType": 1,
"clientCode": "ECL",
"referenceNumber": "PO-98765",
"externalId": "EXT-12345",
"carrierCode": "FFC",
"carrierReference": "FF-12345",
"enteredDate": "2024-01-15T00:00:00Z",
"expectedArrivalDateTime": "2024-01-20T14:00:00Z",
"expectedDispatchDateTime": "2024-01-18T09:00:00Z",
"expectedDeliveryDateTime": "2024-01-20T16:00:00Z",
"warehouseCode": "WH01",
"originAddress": {
"code": "ORIG-001",
"name": "Supplier Warehouse",
"email": "supplier@example.com",
"phone": "+64 9 123 4567",
"streetAddress": "123 Supplier Road",
"suburb": "Industrial Park",
"city": "Auckland",
"state": "Auckland",
"postCode": "1010",
"country": "New Zealand",
"latitude": -36.8485,
"longitude": 174.7633
},
"originAddressAttention": "Dispatch Manager",
"destinationAddress": {
"code": "DEST-001",
"name": "Customer Site",
"email": "customer@example.com",
"phone": "+64 4 987 6543",
"streetAddress": "456 Business Street",
"suburb": "CBD",
"city": "Wellington",
"state": "Wellington",
"postCode": "6011",
"country": "New Zealand"
},
"destinationAddressAttention": "Receiving Dept",
"destinationAuthorityToLeave": false,
"deliveryInstructions": "Deliver to loading dock B",
"pickingInstructions": "Handle with care - fragile items",
"receiversReference": "REC-001",
"sendersReference": "SEND-001",
"poNumber": "PO-98765",
"soNumber": "SO-54321",
"containerNumber": "MSKU1234567",
"containerSealNumber": "SEAL001",
"containerSize": 3,
"containerType": 1,
"containerTareWeightKG": 2300,
"containerGrossWeightKG": 15000,
"containerYardCode": "CY001",
"containerYardReference": "CY-REF-001",
"containerVesselName": "MV Pacific Star",
"containerVoyage": "VOY-2024-001",
"loadShippingPortCode": "CNSHA",
"dischargeShippingPortCode": "NZAKL",
"serviceTypeCodes": ["B2B", "PALLET-DEVAN"],
"notes": [
{
"note": "Priority customer - handle with care",
"displayOnPrintOut": true,
"attachments": [
{
"fileName": "packing-list.pdf",
"contentType": "application/pdf",
"content": "base64-encoded-content-here"
}
]
}
],
"products": [
{
"productCode": "PROD-A",
"goodsDescription": "Product A - Premium Grade",
"batch": "BATCH-2024-001",
"bestBeforeDate": "2025-06-30T00:00:00Z",
"expiryDate": "2025-12-31T00:00:00Z",
"packagingDate": "2024-01-10T00:00:00Z",
"productionDate": "2024-01-05T00:00:00Z",
"sellByDate": "2025-03-31T00:00:00Z",
"logisticUnitSsccNumber": "123456789012345678",
"logisticUnitReferenceNumber": "LU-REF-001",
"isManualReconciliationRequired": false,
"criticalStockStatus": 2,
"attributes": [
{
"name": "Color",
"description": "Blue"
},
{
"name": "Size",
"description": "Large"
}
],
"items": [
{
"quantity": 100,
"weightKG": 500,
"volumeM3": 2.5
}
]
}
]
}
Request Body Fields
Root Level Fields
| Field | Type | Required | Description |
|---|---|---|---|
idempotencyKey |
string | No | Unique key to prevent duplicate imports (max 200 chars) |
consignmentType |
integer | Yes | See Consignment Type values below |
clientCode |
string | Yes | Client partner code |
referenceNumber |
string | No | Consignment reference number |
externalId |
string | No | External system identifier |
carrierCode |
string | No | Carrier partner code |
carrierReference |
string | No | Carrier's reference number |
enteredDate |
datetime | No | Date the consignment was entered |
expectedArrivalDateTime |
datetime | No | Expected arrival at destination |
expectedDispatchDateTime |
datetime | No | Expected dispatch from origin |
expectedDeliveryDateTime |
datetime | No | Expected delivery to destination |
warehouseCode |
string | No | Warehouse code |
originAddress |
object | No | Origin address details |
originAddressAttention |
string | No | Attention line for origin address |
destinationAddress |
object | No | Destination address details |
destinationAddressAttention |
string | No | Attention line for destination address |
destinationAuthorityToLeave |
boolean | No | Authority to leave at destination |
deliveryInstructions |
string | No | Delivery instructions |
pickingInstructions |
string | No | Picking instructions |
receiversReference |
string | No | Receiver's reference number |
sendersReference |
string | No | Sender's reference number |
poNumber |
string | No | Purchase order number |
soNumber |
string | No | Sales order number |
serviceTypeCodes |
string[] | No | Array of service type codes |
notes |
array | No | Consignment notes |
products |
array | Yes | Product lines |
Consignment Type Values
| Value | Type | Description |
|---|---|---|
0 |
PointToPoint | Direct transfer bypassing warehouse storage |
1 |
Inwards | Receiving inventory into the warehouse |
2 |
Outwards | Dispatching inventory from the warehouse |
Address Object
| Field | Type | Required | Description |
|---|---|---|---|
code |
string | No | Address code for EDI mapping |
name |
string | No | Address name or company |
email |
string | No | Email address |
phone |
string | No | Phone number |
streetAddress |
string | No | Street address |
suburb |
string | No | Suburb |
city |
string | No | City |
state |
string | No | State/Region |
postCode |
string | No | Postal code |
country |
string | No | Country |
latitude |
number | No | GPS latitude |
longitude |
number | No | GPS longitude |
Container Fields
| Field | Type | Description |
|---|---|---|
containerNumber |
string | Container number |
containerSealNumber |
string | Container seal number |
containerSize |
integer | Container size (see values below) |
containerType |
integer | Container type (see values below) |
containerTareWeightKG |
number | Container tare weight in kg |
containerGrossWeightKG |
number | Container gross weight in kg |
containerYardCode |
string | Container yard code |
containerYardReference |
string | Container yard reference |
containerVesselName |
string | Vessel name |
containerVoyage |
string | Voyage reference |
loadShippingPortCode |
string | Load port code |
dischargeShippingPortCode |
string | Discharge port code |
Container Size Values
| Value | Size |
|---|---|
1 |
TenFoot |
2 |
TwentyFoot |
3 |
FortyFoot |
4 |
FortyFiveFoot |
Container Type Values
| Value | Type |
|---|---|
1 |
GeneralPurpose |
2 |
GeneralPurposeHighCube |
3 |
Refrigerated |
4 |
RefrigeratedHighCube |
5 |
RefrigeratedNotOperating |
6 |
RefrigeratedNotOperatingHighCube |
7 |
OpenTop |
8 |
OpenTopHighCube |
9 |
FlatRack |
10 |
FlatRackHighCube |
11 |
Tank |
12 |
TankHighCube |
Product Object
| Field | Type | Required | Description |
|---|---|---|---|
productCode |
string | Yes | Partner product code |
goodsDescription |
string | No | Product description |
batch |
string | No | Batch number |
bestBeforeDate |
datetime | No | Best before date |
expiryDate |
datetime | No | Expiry date |
packagingDate |
datetime | No | Packaging date |
productionDate |
datetime | No | Production date |
sellByDate |
datetime | No | Sell by date |
logisticUnitSsccNumber |
string | No | SSCC number of the logistic unit |
logisticUnitReferenceNumber |
string | No | Reference number of the logistic unit |
isManualReconciliationRequired |
boolean | No | Flag for manual reconciliation |
criticalStockStatus |
integer | No | Critical stock status (see values below) |
attributes |
array | No | Product attributes |
items |
array | Yes | Product items with quantities |
Critical Stock Status Values
| Value | Status |
|---|---|
1 |
CriticalStock |
2 |
NonCriticalStock |
Product Attribute Object
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | No | Attribute name |
description |
string | No | Attribute value/description |
Product Item Object
| Field | Type | Required | Description |
|---|---|---|---|
serial |
string | No | Serial number (required for serialised items) |
quantity |
number | Yes | Item quantity (must be 1 if serial is provided) |
weightKG |
number | No | Item weight in kg |
volumeM3 |
number | No | Item volume in m³ |
Items Array Usage
Non-serialised products:
- Use a single item object with the total quantity
Serialised products depend on the product's serial capture mode (configured per organisation/product):
Full-capture serials:
- Inwards:
- Supply serials if known
- If serials are unknown, the import may still process, but serials must be supplied before receiving can be completed
- Outwards:
- Supply serials if specific units must be picked/dispatched
- If any serial will do, omit serials and provide only the quantity — Consignly will allocate serials during picking
Release-capture serials:
- Inwards and Outwards:
- Do not supply serials in the import payload
- Serials are captured by the warehouse team at time of pick
Important: Only when specifying serials should
item.quantitybe1per item object. Otherwise, use a single item with the total quantity.
Note Object
| Field | Type | Required | Description |
|---|---|---|---|
note |
string | Yes | Note text |
displayOnPrintOut |
boolean | No | Show on printed documents |
attachments |
array | No | File attachments |
Note Attachment Object
| Field | Type | Required | Description |
|---|---|---|---|
fileName |
string | No | Attachment file name |
contentType |
string | No | MIME content type |
content |
string | No | Base64-encoded file content |
downloadUrl |
string | No | URL to download attachment (alternative to content) |
Understanding Logistic Units in Imports
Logistic unit data is provided at the product line level, not as separate objects. This allows multiple product lines to reference the same or different logistic units.
How Logistic Units Work
- Inwards consignments: Product/item data is received into the warehouse on the logistic unit specified by
logisticUnitSsccNumberandlogisticUnitReferenceNumber - Outwards consignments: The product line is tagged as requesting inventory from the specified logistic unit
Example: Multiple Products on Same Logistic Unit
{
"consignmentType": 1,
"clientCode": "ECL",
"products": [
{
"productCode": "PROD-A",
"batch": "BATCH-001",
"logisticUnitSsccNumber": "123456789012345678",
"items": [{ "quantity": 50, "weightKG": 250 }]
},
{
"productCode": "PROD-B",
"batch": "BATCH-002",
"logisticUnitSsccNumber": "123456789012345678",
"items": [{ "quantity": 30, "weightKG": 150 }]
}
]
}
Both products reference the same SSCC number, so they will be associated with the same logistic unit.
Request Examples
Minimal Request
{
"consignmentType": 1,
"clientCode": "ECL",
"products": [
{
"productCode": "PROD-A",
"items": [{ "quantity": 100 }]
}
]
}
Serialised Products (Full-Capture with Known Serials)
When importing serialised products where serials are known and must be specified, provide each serial number as a separate item with quantity: 1:
{
"consignmentType": 1,
"clientCode": "ECL",
"products": [
{
"productCode": "SERIAL-PROD",
"batch": "BATCH-001",
"items": [
{ "serial": "SN-001", "quantity": 1 },
{ "serial": "SN-002", "quantity": 1 },
{ "serial": "SN-003", "quantity": 1 }
]
}
]
}
Serialised Products (Quantity Only)
For full-capture serialised products on Outwards consignments where any available serial will do, or for release-capture products, simply specify the quantity:
{
"consignmentType": 2,
"clientCode": "ECL",
"products": [
{
"productCode": "SERIAL-PROD",
"batch": "BATCH-001",
"items": [{ "quantity": 3 }]
}
]
}
Request Example (cURL)
curl -X POST "https://api.consignlyhq.com/v1/consignment-imports" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"idempotencyKey": "unique-import-12345",
"consignmentType": 1,
"clientCode": "ECL",
"referenceNumber": "PO-98765",
"warehouseCode": "WH01",
"products": [
{
"productCode": "PROD-A",
"batch": "BATCH-001",
"items": [{ "quantity": 100, "weightKG": 500 }]
}
]
}'
Response
Status: 202 Accepted
{
"consignmentId": "550e8400-e29b-41d4-a716-446655440100"
}
| Field | Type | Description |
|---|---|---|
consignmentId |
uuid | ID of the created import (can be used with check-exists) |
Idempotency
The idempotencyKey field prevents duplicate consignment creation:
- When submitting an import with an idempotency key that has already been used, the request will be rejected with a
409 Conflictstatus - Use idempotency keys when retrying failed requests to prevent duplicates
- Keys should be unique per logical import operation
- Maximum length: 200 characters
Processing Flow
- Import is validated and accepted (returns
202) - Import is processed asynchronously
- Consignment is created when processing completes
- Use
GET /v1/consignments/{consignmentId}/check-existsto check status:201: Consignment created successfully202: Import still being processed404: Import/consignment not found
Import Processing and Reconciliation
Consignment imports are processed asynchronously with a reconciliation workflow for unresolved references:
- Initial Validation: The API validates the basic request structure and returns
202 Accepted - Background Processing: The import is queued for background processing
- Reference Resolution: The system attempts to resolve all reference codes (product, client, warehouse, carrier)
- Reconciliation Queue: If any references cannot be resolved, the import is placed in a reconciliation queue rather than failing outright
- Manual Reconciliation: Imports in the reconciliation queue require manual resolution in the Consignly portal
Important: Invalid reference codes (product codes, client codes, warehouse codes, carrier codes) do not cause immediate API validation errors. Instead, they result in imports requiring manual reconciliation. Always verify the reference codes are correctly configured in Consignly before submitting imports.
Notes and Gotchas
SSCC Validation
SSCC numbers must be valid 18-digit Serial Shipping Container Codes including the check digit. The logisticUnitReferenceNumber
can also be used to uniquely identify each logistic unit without adhering to the SSCC standard.
Container Field Requirements
The fields containerNumber, containerType, and containerSize must be specified together as a set, or not at all.
If only some of these fields are supplied:
- The import will be accepted (valid JSON)
- But the import cannot be processed and will remain unreconciled/pending until corrected
Gotcha: Always provide all three container identification fields together, or omit them entirely.
Automatic vs Manual Reconciliation
Consignly will accept properly formed JSON for processing. Depending on the organisation's settings and whether the payload can be reconciled against existing Consignly data:
- The import may be automatically processed and create a consignment immediately
- Or it may be held in the Pending Import queue for manual reconciliation
Common reasons an import may require manual reconciliation:
- Product code does not exist for the specified client
- Carrier code cannot be matched to an existing carrier partner
- Warehouse code is not recognized
- Other referenced codes/entities cannot be resolved
Address Auto-Creation
Organisational settings can govern whether new addresses are automatically created during import if they do not already exist:
- Auto-create enabled: New addresses are created automatically, helping imports reconcile without manual intervention
- Auto-create disabled: Imports with unrecognized addresses may require manual reconciliation in the Consignly portal
Manual Reconciliation Flag
Setting isManualReconciliationRequired: true on a product line will:
- Flag the import as requiring manual intervention
- Highlight the specific line(s) that require review in the Consignly portal
This is useful for verification before stock is received or allocated.
Critical Stock Status for Outwards
For Outwards consignments, the criticalStockStatus field may be omitted when there is no preference for critical or non-critical stock during inventory allocation. If specified:
1(CriticalStock) - Prefer allocating from critical stock2(NonCriticalStock) - Prefer allocating from non-critical stock
Error Cases
| Status | Cause | Resolution |
|---|---|---|
400 |
Invalid request body | Check required fields and data formats |
401 |
Invalid or expired token | Refresh access token |
409 |
Duplicate idempotency key | Use a unique key or verify original request succeeded |
422 |
Validation failed | Check error details for specific field issues |
Related Endpoints
- Consignments - Manage created consignments
- Partners - Look up client and carrier codes
- Partner Products - Look up product codes
- Warehouses - Look up warehouse codes