...
The EDI XML has the following structure:
<header>
...
<authentication>
...
...
...
</authentication>
...
<consignmentlist>
...
<consignment>
...
<bookingmethod>
...
...
...
</bookingmethod>
...
<part
...
role="">
...
...
...
</part>
...
<pdinstructions>
...
...
...
</pdinstructions>
...
<transportservice>
...
...
...
</transportservice>
...
<references>
...
...
...
</references>
...
<paymentinstructions>
...
...
...
</paymentinstructions>
...
<goodsitem>
...
...
...
</goodsitem>
...
<file>...</file>
...
<othercharges>...</othercharges>
...
</consignment>
...
</consignmentlist>
...
</header>
Values
Dates are specified as YYYY-MM-DD. Time is specified as HH:MM. Date+time is specified as YYYY-MM-DD HH:MM.
...
Dimensions are specified in meters. Weight is specified in kgs. Volume is specified in m3.
NOTICE that XML element names are casesensitive, so f.ex. "<OtherCharge>" is not the same as "<othercharge>".
Header
The test
attribute may be set to 1 to make this a test booking. Default value is 0.
<header
...
test="1">
Authentication
The <authentication>
element describes who it is that is trying to book a shipment. It contains the following elements.
<username>jimbo</username>
...
<password>Test1234</password>
...
<companyid>DKTESTDK</companyid>
...
<datetime>2015-02-19
...
18:45:00</datetime>
...
<xmlversion>1</xmlversion>
All elements are required.
Booking method
The <bookingmethod>
element contains the following elements:
<template>DHL
...
test</template>
...
<autobook>yes</autobook>
...
<label>yes</label>
...
<labeltype>LABEL</labeltype>
...
<errormail>my@email.com</errormail>
...
<returnservice>no</returnservice>
The <template>
element is required, and refers to the name of a template defined for the portal.
...
The <returnservice>
element determines if a return shipment should be booked; if specified it overrides the setting in the template. It only works with DHL and TNT shipments. The same product will be used for the return shipment as for the actual shipment. If the return shipment cannot be booked then the actual shipment will still be booked and a warning will be returned.
Part
The <part>
elements describes the consignor and consignee etc, so there may be multiple <part>
elements, for 'consignor', 'consignee', 'pickup', 'delivery', 'ordering', 'importer', 'exporter' or 'notify'. Which is which is determined by the role
attribute, eg.:
<part
...
role="consignor">
The <part>
elements are optional, if either isn't specified then the consignor/consignee/pickup/delivery/ordering/importer/exporter/notify address from the template will be used.
The <part>
element may hold these elements, unless role
is 'ordering':
<address>
...
<id></id>
...
<name>DK
...
Shipping</name>
...
<address1>Vesterbrogade
...
123</address1>
...
<address2></address2>
...
<postcode>2300</postcode>
...
<city>Copenhagen</city>
...
<state></state>
...
<countrycode>DK</countrycode>
...
<unloc>DKCOP</unloc>
...
<vat_no>VATNO</vat_no>
...
<eori_no>EORINO</eori_no>
...
</address>
...
<communication>
...
<contactperson>Ronald
...
Reagan</contactperson>
...
<phone>12345678</phone>
...
<mobile>20123456</mobile>
...
<email>test@test.dk</email>
...
</communication>
If role
is 'ordering' then only these elements are allowed and are required:
<address>
...
<id>MYORDERINGID</id>
...
</address>
If <id>
is specified and refers to the ID of a valid address in the addressbook, then the rest of the address in the EDI XML will be ignored (with the exception of <contactperson>
for consignor), and the address will be taken from the addressbook. Notice, it must be the ID, not the GID, of the address in the addressbook.
PDInstructions
This element describes pickup and delivery. It may contain the following elements:
<pickup>
...
<pdate>2015-06-30</pdate>
...
<earliest>10:00</earliest>
...
<latest>15:30</latest>
...
<pinstructions>call
...
before
...
pickup</pinstructions>
...
<pickupbycarrier>no</pickupbycarrier>
...
</pickup>
...
<delivery>
...
<ddate>2015-07-04</ddate>
...
<dinstructions>call
...
before
...
delivery</dinstructions>
...
</delivery>
The only element which isn't required is <dinstructions>
.
...
If the <pickupbycarrier>
element is specified then it overrides the setting in the template.
Transport service
The <transportservice>
element contains the following elements:
<deliverytype>DD</deliverytype>
...
<todcountry>SE</todcountry>
...
<todcity>Malmø</todcity>
...
<reliabletoduty>no</reliabletoduty>
...
<value>123</value>
...
<currency>EUR</currency>
...
<warning>yes</warning>
<reliabletoduty>
must be yes
or no
. If yes
then <currency>
must be one of the currencies recognised by the system, and <value>
must be greater than 0. If <value>
is 0 or not specified, then the booking will be saved with in “incomplete bookings”.
...
<warning>
determines if a warning should be returned if there is dangerous goods, but no declaration is attached. Can be yes
or no
, default is yes
.
References
The <references>
element may contain the following elements:
<sendersreference>4234234</sendersreference>
...
<receiversreference>34523634562</receiversreference>
...
<cargocontrolno>123123123</cargocontrolno>
...
<carriertrackingno>234234234</carriertrackingno>
...
<hawbno>345354</hawbno>
...
<invoiceno>456546</invoiceno>
...
<packageid>567567</packageid>
...
<productioncode>678678</productioncode>
...
<projectno>789789</projectno>
...
<purchaseorderno>895954</purchaseorderno>
...
<senderref>923423</senderref>
...
<shipmentreferenceno>a2342123</shipmentreferenceno>
...
<slinoref>3300004123</slinoref>
...
<bookingconfirmnumber>9543467844</bookingconfirmnumber>
...
<awbno>3467245325363</awbno>
<sendersreference>
is required.
...
<bookingconfirmnumber>
is only used for certain FedEx shipments where it is required; the number must be allocated by FedEx. For other shipments it is ignored.
Payment instructions
The <paymentinstructions>
element holds the following:
<incoterms>DAP</incoterms>
...
<accountno>567567457</accountno>
<generateinvoice>yes</generateinvoice>
<incoterms>
is required and must be one of the following: EXW, FCA, CPT, CIP, DAT, DAP, FAS, FOB, CFR, CIF, DDU, DDP.
...
<generateinvoice>
can be yes
or no
(default), and determines if the carrier should be asked to generate an invoice PDF.
Goods item
There may be multiple <goodsitem>
elements. Each may hold these elements:
<noofpackages>1</noofpackages>
...
<width>40</width>
...
<length>60</length>
...
<height>50</height>
...
<weight>40</weight>
...
<volume>0.12</volume>
...
<packagetype>Pallet</packagetype>
...
<packagecode>PLT</packagecode>
...
<goodsdescription>Donuts
...
for
...
Homer</goodsdescription>
...
<shippingmark>1044651</shippingmark>
...
<dangerous>no</dangerous>
...
<origincountry>DE</origincountry>
...
<itemlevel>
...
<qty></qty>
...
<name></name>
...
<hscode></hscode>
...
<article></article>
...
<unitprice></unitprice>
...
<currency></currency>
...
<origincountry>DE</origincountry>
...
</itemlevel>
<width>
, <height>
, <length>
is per package.
Starting from sometime 2015-12-01 <volume>
should be specified as total for the <goodsitem>
.
<weight>
and <volume>
are totals for the <goodsitem>
.
...
<dangerous>
can be either yes
or no
or a code from the list of dangerous goods. Default is no
. The possible codes are listed below, in the section “Dangerous goods”. If a code is specified then the <goodsdescription>
element will be overwritten. An example could be:
<dangerous>930</dangerous>
Item level
<itemlevel>
is optional, there may be any number of <itemlevel>
.
...
If <goodsitem>
specifies <noofpackages>
= 5 and an <itemlevel>
specifies <qty>
= 4 then the total shipment contains 5*4=20 items of the specified type.
Package types / codes
The following values are allowed for <packagetype>
:
...
20FB, 20FC, 20FL, 20GP, 20HC, 20IS, 20NOR, 20OT, 20RF, 20RH, 20TK, 20VT, 40FB, 40FC, 40FL, 40GP, 40HC, 40IS, 40NOR, 40OT, 40RF, 40RH, 40TK, 40VT, 45HC, BAG, BLU, BAL, BLC, BSK, BOT, BOX, BBK, BBG, VR, BND, CTN, CAS, CAP, COI, CNT, CRD, CRT, CYL, DRM, ENV, KEG, OCT, PKG, PAI, PLT, PAP, PPT, PLP, PCE, REL, RLL, SA, SET, SHT, SKD, SPL, TUB, UNT, WCA, WCR
Other charges
Each Each <othercharges>
element element contains a a <type>
element element and a a <value>
element element.
<othercharges>
...
<type>ADMIN</type>
...
<value>1000</value>
</othercharges>
The The <type>
element element can have any of these values:
value | description |
---|---|
ADMIN | Administration Charge/Fee/Cost |
DELIV | Delivery Charge/Fee/Cost |
DOCUM | Documentation Charge/Fee/Cost |
EXPED | Expedite Charge/Fee/Cost |
EXCHA | Export Charge/Fee/Cost |
FRCST | Freight/Shipping Charge/Fee/Cost |
SSRGE | Fuel Surcharge |
LOGST | Logistic Charge/Fee/Cost |
SOTHR | Other Charge/Fee/Cost |
SPKGN | Packaging/Packing Charge/Fee/Cost |
PICUP | Pickup Charge/Fee/Cost |
HRCRG | Handling Charge/Fee/Cost |
VATCR | Charge/Fee/Cost |
INSCH | Insurance Cost (Fee) |
REVCH | Reverse Charge |
...
The <value>
...
element is in the same currency as specified
...
in <goodscurrency>
(see Transport service).
File
There may be up to 8 <file>
elements, each holds these required elements:
<type>image/png</type>
...
<name>MyPhoto.png</name>
...
<data>JVBERi0xLjQK.....RU9GCg==</data>
<type
> holds the mime type of the file; the following are allowed: appliation/pdf, image/jpeg, image/png.
...
The first PDF that is included will be considered an invoice.
Dangerous goods
code | description |
---|---|
901 | Dry Ice UN1845 |
910 | Ion PI965 Section IA (LiBa) |
911 | Ion PI965 Section IB (LiBa) |
912 | Ion PI966 Section I (LiBa with equipment) |
913 | Ion PI967 Section I (LiBa in equipment) |
965 | Ion PI965 Section II (LiBa) |
966 | Ion PI966 Section II (LiBa with equipment) |
967 | Ion PI967 Section II (LiBa in equipment) |
930 | Metal PI968 Section IA (LiBa) |
931 | Metal PI968 Section IB (LiBa) |
932 | Metal PI969 Section I (LiBa with equipment) |
933 | Metal PI970 Section I (LiBa in equipment) |
941 | Metal PI969 Section II (LiBa with equipment) |
942 | Metal PI970 Section II (LiBa in equipment) |
A01 | Dangerous goods, not exeding ADR limited quantities |
E01 | Excepted quantities in accordance with IATA |
650 | Biological substances UN3373 |
P01 | Perishable Cargo |
210 | Division 2.1 Flammable gases |
220 | Division 2.2 Non-flammable, non toxic gas |
300 | Division 3 Flammable Liquids |
410 | Division 4.1 Flammable solids |
420 | Division 4.2 Substances liable to spontaneous combustion |
433 | Division 4.3 Substances (Dangerous when wet) |
510 | Division 5.1 Oxidizer |
520 | Division 5.2 Organic Peroxides |
610 | Division 6.1 Toxic Substances |
800 | Division 8 Corrosives |
900 | Division 9 Miscellaneous Dangerous Goods |