Skip to content

Order intake

Order intake means pushing orders from your system into MendriX. Today this goes through the legacy SOAP Custom Link call StoreOrdersNormal — the same XML on both the manual and the n8n path.

https://<your-client-name>.mendrix.cloud:5564/soap/ICustomLinkSoap

Operation: StoreOrdersNormal — like every Custom Link call it is sent through the single ExecuteRequest SOAP operation, with the payload entity-escaped inside the envelope and the SOAP name/password in the TAuthenticationHeader header. The WSDL is published at https://<your-client-name>.mendrix.cloud:5564/wsdl/ICustomLinkSoap. See the SOAP overview for the envelope mechanics and authentication, and the full order-intake example for a complete request/response pair.

For the fuller field reference on creating orders, see Order intake. For the retrieve-then-update workflow (changing an existing order, not just creating one), see Order update. For efficient polling/retrieval, see Order retrieval & sync.

Orders are described by the EoCustomLinkStoreOrdersNormal structure (defined in GdxEoStructures.xsd). A new order has OrderId/Id set to a negative value (negative = insert), a client reference, and three separate lists: Tasks (the pickup/delivery stops), Goods (the packages/cargo), and GoodsToTasks (which good moves through which task — nothing else establishes that link):

<EoCustomLinkStoreOrdersNormal Type="TEoCustomLinkStoreOrdersNormal">
<ApplyImportSettings>1</ApplyImportSettings>
<Data Type="TEoOrderMxList">
<_TEoListBase_Items>
<EoOrderMx Type="TEoOrderMx">
<!-- Negative Id requests a new order. ClientNumber is resolved to a
ClientId automatically when ClientId is not supplied. -->
<OrderId Type="TEoKeyIntInfraMx"><Id>-1</Id></OrderId>
<ClientNumber>1001</ClientNumber>
<Reference>PO-2026-00042</Reference>
<Goods Type="TEoGoodMxList">
<_TEoListBase_Items>
<EoGoodMx Type="TEoGoodMx">
<GoodId Type="TEoKeyIntInfraMx"><Id>-1</Id></GoodId>
<Comments>2 pallets general cargo</Comments>
<Parts>2.0</Parts>
<Weight>480.0</Weight>
</EoGoodMx>
</_TEoListBase_Items>
</Goods>
<Tasks Type="TEoTaskMxList">
<_TEoListBase_Items>
<!-- Pickup task -->
<EoTaskMx Type="TEoTaskMx">
<TaskId Type="TEoKeyIntInfraMx"><Id>-1</Id></TaskId>
<TaskTypeIdEx>1</TaskTypeIdEx>
<Address Type="TEoAddress">
<Name>Acme Warehouse</Name>
<Street>Havenweg</Street>
<Number>12</Number>
<PostalCode>3011 XA</PostalCode>
<Place>Rotterdam</Place>
<CountryCode>NL</CountryCode>
</Address>
<ContactName>Jan de Vries</ContactName>
<Requested Type="TEoDateTimeWindow">
<DateTimeBegin>2026-07-22T08:00:00</DateTimeBegin>
<DateTimeEnd>2026-07-22T12:00:00</DateTimeEnd>
</Requested>
<Instructions>Call on arrival</Instructions>
<ReferenceYour>PICKUP-42</ReferenceYour>
</EoTaskMx>
<!-- Delivery task -->
<EoTaskMx Type="TEoTaskMx">
<TaskId Type="TEoKeyIntInfraMx"><Id>-2</Id></TaskId>
<TaskTypeIdEx>2</TaskTypeIdEx>
<Address Type="TEoAddress">
<Name>Beta Distribution</Name>
<Street>Industrieweg</Street>
<Number>88</Number>
<PostalCode>5651 GH</PostalCode>
<Place>Eindhoven</Place>
<CountryCode>NL</CountryCode>
</Address>
<Requested Type="TEoDateTimeWindow">
<DateTimeBegin>2026-07-22T14:00:00</DateTimeBegin>
<DateTimeEnd>2026-07-22T17:00:00</DateTimeEnd>
</Requested>
<ReferenceYour>DELIVERY-42</ReferenceYour>
</EoTaskMx>
</_TEoListBase_Items>
</Tasks>
<GoodsToTasks Type="TEoGoodToTaskMxList">
<_TEoListBase_Items>
<!-- The good is picked up at the first task and delivered at the
second — one GoodsToTasks entry per (good, task) pair it
passes through, using the same negative Ids as above. -->
<EoGoodToTaskMx Type="TEoGoodToTaskMx">
<GoodId Type="TEoKeyIntInfraMx"><Id>-1</Id></GoodId>
<TaskId Type="TEoKeyIntInfraMx"><Id>-1</Id></TaskId>
</EoGoodToTaskMx>
<EoGoodToTaskMx Type="TEoGoodToTaskMx">
<GoodId Type="TEoKeyIntInfraMx"><Id>-1</Id></GoodId>
<TaskId Type="TEoKeyIntInfraMx"><Id>-2</Id></TaskId>
</EoGoodToTaskMx>
</_TEoListBase_Items>
</GoodsToTasks>
</EoOrderMx>
</_TEoListBase_Items>
</Data>
</EoCustomLinkStoreOrdersNormal>

There is no REST endpoint for order creation yet (see the callout above). Submit via SOAP: entity-escape the payload above (saved as store-orders-normal.xml), wrap it in the ExecuteRequest envelope and POST it to the Custom Link endpoint:

Terminal window
PAYLOAD_ESCAPED=$(sed 's/&/\&amp;/g; s/</\&lt;/g; s/>/\&gt;/g' store-orders-normal.xml)
cat > envelope.xml <<EOF
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<h:TAuthenticationHeader xmlns:h="urn:UCoSoapDispatcherBase">
<UserName>$MENDRIX_SOAP_NAME</UserName>
<Password>$MENDRIX_SOAP_PASSWORD</Password>
</h:TAuthenticationHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:ExecuteRequest xmlns:m="urn:UCoSoapDispatcherCustomLink-ICustomLinkSoap">
<ARequest xsi:type="xsd:string">$PAYLOAD_ESCAPED</ARequest>
</m:ExecuteRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
EOF
curl "https://<your-client-name>.mendrix.cloud:5564/soap/ICustomLinkSoap" \
-H 'Content-Type: text/xml; charset=utf-8' \
-H 'SOAPAction: "urn:UCoSoapDispatcherCustomLink-ICustomLinkSoap#ExecuteRequest"' \
--data-binary @envelope.xml

The result XML comes back entity-escaped inside the response’s return element; see the full example for a sample response and error handling, and the SOAP overview for how the credentials are supplied.