UC

UC Integrator

by eMathrix Technologies

CONNECTOR CONTRACT V1

What your system needs to expose

This page is for developers. It defines the interface between UC Integrator and a transport management system, so you can judge the work before committing to it.

Read this first — the direction of truth

The integrator is the system of record. It issues the tracking number, generates the shipping label and owns shipment status. Your system does not supply tracking numbers and is never called while Unicommerce is waiting.

Every operation below is a best-effort synchronisation, running outside the request Unicommerce makes. If your system is slow, offline or mid-upgrade, Unicommerce still receives a correct and immediate answer; the synchronisation is retried and the failure is surfaced in monitoring. This is deliberate: a transport system outage must never turn into a failed waybill for the seller.

It also means a connector is optional. A company with no system of its own works directly in our console, and every Unicommerce endpoint behaves identically.

Why every requirement here is traceable

Each operation and field below cites the Unicommerce requirement it comes from. That is intentional. Nothing on this page is an eMathrix preference you could negotiate away — if an item is listed, Unicommerce's specification requires the data, and an integration that omits it will not pass their testing.

Operations

Declare which of these your system supports. Only capabilities is mandatory: it is how a connector states what it can and cannot do, so unsupported operations are skipped rather than failing.

OperationDirectionRequiredInput ReturnsPurpose and Unicommerce basis
capabilitiesLocalRequiredset<operation_name>Declare which operations this connector's TMS supports. A 'none' connector returns the empty set; a company with no system of its own shipping providers operate directly on the integrator.
push_shipmentIntegrator → your systemOptionalshipmentMirror a newly created shipment (with our AWB and label URL) to the shipping provider's TMS for fulfilment.
POST /waybill (spec 3.2): shipment creation returning waybill + shippingLabel
push_shipment_updateIntegrator → your systemOptionalshipmentMirror an updated shipment after Waybill Updation, including the re-issued label.
Waybill Updation (spec 3.3): updates an allocated shipment, returns fresh shippingLabel
pull_statusYour system → integratorOptionallist<awb> (max 50)list<status>Sync current status and tracking history from the TMS INTO the integrator so /waybillDetails answers from our own tables, never a live TMS call.
GET /waybillDetails (spec 3.4): up to 50 AWBs; requires currentStatus, statusDate, tracking_history
push_cancelIntegrator → your systemOptionalawbMirror a cancellation to the TMS.
POST /cancel (spec 3.5, optional)

Fields

These are the fields Unicommerce requires, so the record stays complete regardless of what your own system happens to store.

Shipment

Carried whenever a shipment is mirrored to your system.

FieldTypeRequiredApplies toRequired by Unicommerce because…
codestringRequiredBothwaybill.Shipment.code — unique at seller UC warehouse level; idempotency key with seller
SaleOrderCodestringRequiredBothwaybill.Shipment.SaleOrderCode — unique at channel level
orderCodestringRequiredBothwaybill.Shipment.orderCode — display code, may be duplicated at channel level
channelCodestringOptionalBothwaybill.Shipment.channelCode
channelNamestringOptionalBothwaybill.Shipment.channelName
invoiceCodestringOptionalForwardwaybill.Shipment.invoiceCode — forward only
orderDatedatetime(dd-MMM-yyyy HH:mm:ss)RequiredBothwaybill.Shipment.orderDate — format 16-Sep-2021 00:00:00
fullFilllmentTatdatetime(dd-MMM-yyyy HH:mm:ss)RequiredBothwaybill.Shipment.fullFilllmentTat — spelled with three l's in UC spec; match exactly
weightfloat(grams, max 6 digits/4 dp)RequiredBothwaybill.Shipment.weight — grams
lengthstring(mm)RequiredBothwaybill.Shipment.length — millimetres
heightstring(mm)RequiredBothwaybill.Shipment.height — millimetres
breadthstring(mm)RequiredBothwaybill.Shipment.breadth — millimetres
numberOfBoxesstringRequiredForwardwaybill.Shipment.numberOfBoxes — default 1; forward only
itemsarray<item>RequiredBothwaybill.Shipment.items[]
deliver_by_datedateOptionalBothwaybill.Shipment.customField[] entry named 'deliver_by_date' — UC confirmed 2026-08-07 (open question Q7) as the scheduled delivery date. Optional: customField is Optional and arrives as [] when nothing maps, so a connector must accept its absence. The TMS needs it to schedule the delivery.
serviceTypestringOptionalBothwaybill.serviceType — agreed with seller at UC shipper config
returnShipmentFlagstring(bool)RequiredBothwaybill.returnShipmentFlag — 'false' forward, 'true' reverse
paymentModestring(COD|PREPAID)RequiredBothwaybill.paymentMode
currencyCodestring(ISO 4217)RequiredBothwaybill.currencyCode
totalAmountstring(decimal)RequiredBothwaybill.totalAmount
collectableAmountstring(decimal)RequiredBothwaybill.collectableAmount — 0.00 for prepaid
deliveryAddressDetailsaddressRequiredBothwaybill.deliveryAddressDetails
pickupAddressDetailsaddressRequiredBothwaybill.pickupAddressDetails
returnAddressDetailsaddressRequiredForwardwaybill.returnAddressDetails — not sent when returnShipmentFlag true
waybillstringRequiredBothwaybill response.waybill — OUR AWB, permanent for shipment life (FAQ Q5); issued by integrator, never by a connector
shippingLabelstring(url)RequiredForwardwaybill response.shippingLabel — PDF URL, unencrypted, must exist when we respond (FAQ Q6); generated by integrator
courierNamestringOptionalBothwaybill response.courierName — direct LSP: our own company name (shipping providers.company_name)
routingCodestringOptionalForwardwaybill response.routingCode — shipper pickup routing code

Address

Used by the delivery, pickup and return address blocks.

FieldTypeRequiredApplies toRequired by Unicommerce because…
namestringRequiredBothwaybill address block.name
phonestringRequiredBothwaybill address block.phone
address1stringRequiredBothwaybill address block.address1
pincodestringRequiredBothwaybill address block.pincode (open question 8: PH format)
citystringRequiredBothwaybill address block.city
statestringRequiredBothwaybill address block.state
countrystringRequiredBothwaybill address block.country
stateCodestring(2-digit ISO)RequiredBothwaybill address block.stateCode (open question 3/8)
countryCodestring(2-digit ISO)RequiredBothwaybill address block.countryCode (open question 3/8)

Item

One entry per line item on the shipment.

FieldTypeRequiredApplies toRequired by Unicommerce because…
namestringRequiredBothwaybill Shipment.items[].name
descriptionstringRequiredBothwaybill Shipment.items[].description
quantityintRequiredBothwaybill Shipment.items[].quantity
skuCodestringRequiredForwardwaybill Shipment.items[].skuCode — forward only (open question 3)
itemPricefloatRequiredForwardwaybill Shipment.items[].itemPrice — forward only (open question 3)
return_reasonstringOptionalReversewaybill Shipment.items[].return_reason — reverse only

Status

Returned when your system reports shipment status back.

FieldTypeRequiredApplies toRequired by Unicommerce because…
waybillstringRequiredBothwaybillDetails[].waybill
statusDatedatetime(dd-MMM-yyyy HH:mm:ss)RequiredBothwaybillDetails[].statusDate
currentStatusstringRequiredBothwaybillDetails[].currentStatus — mapped onto the status list you supply; no status vocabulary is hardcoded
current_sub_statusstringOptionalBothwaybillDetails[].current_sub_status — MUST be blank until parent/child agreed with UC (spec 3.4)
tracking_historyarray<history_event>OptionalBothwaybillDetails[].tracking_history[] (date_time,status,sub_status,remark,location,pincode,city,state,country)

Rules every caller must honour

Versioning

This is version v1 of the contract. Fields may be added in a later version; existing meanings will not change under the same version number. Build against v1 and a later revision will not break you silently.

What is not on this page

How UC Integrator implements its side — storage, numbering, label rendering, monitoring — is not published here. You do not need it to build a connector, and it is not part of the interface. If your integration needs something this page does not answer, ask us directly rather than inferring it.

Inquire about an integration Back to overview