XML File Data Exchange Over SFTP
This document describes the integration specification for a supplier to integrate to the Kornit X Platform for the Direct Dispatch or Personalised Model.
Details are supplied for order and stock management using XML file data exchange over SFTP.
If you do not have access to an SFTP server yourself, we can set up a location for these files through our Architects team and provide you with the above credentials.
Kornit X will periodically create an XML file in the /orders directory of the SFTP account for any new orders. If the /orders directory does not exist then it will be automatically created by Kornit X.
You will receive one XML file per order - This file contains all details required to complete the order split into sections:
> Order
> Item
> Assets
> Attributes
The order elements of the XML contains all of the order specific details such as:
The <orders> object then contains an <items> array of which there can be multiple <item> objects - In more general terms, an order can contain multiple items.
In addition to the standard fields, the item element will also include <assets> and <attributes>.
The <assets> element will include a series of child <asset> tags for each piece of artwork associated with an item. Each <asset> has a <name>, <url> and optional <description> child elements. The quantity of <asset> elements will depend primarily upon the item’s type.
Each <item> will contain <asset> element for:
Each surface area output in each available image format. The naming convention for the asset will be in the form output-x.ext where x is the surface area number.
Each surface area merge output in each available image format. The naming convention for the asset will in the form output-merge-x.ext where x is the surface area merge reference.
A range of thumbnails, each with a naming convention of the form thumbnail-x.png where x identifies the view or angle from which the thumbnail was taken.
<orders>
<order>
<id>16128737</id>
<company_ref_id>18698</company_ref_id>
<secondary_company_ref_id>18878</secondary_company_ref_id>
<ref>F87B1B135F7EF784</ref>
<status>516</status>
<shipping_company/>
<shipping_address_1>43 TEST STREET</shipping_address_1>
<shipping_address_2/>
<shipping_address_3/>
<shipping_address_4>TEST</shipping_address_4>
<shipping_address_5>TEST</shipping_address_5>
<shipping_postcode>J34 2JF</shipping_postcode>
<shipping_country>United Kingdom</shipping_country>
<shipping_country_code>GB</shipping_country_code>
<billing_company/>
<billing_address_1/>
<billing_address_2/>
<billing_address_3/>
<billing_address_4/>
<billing_address_5/>
<billing_postcode/>
<billing_country>United Kingdom</billing_country>
<customer_name>MISS A TESTER</customer_name>
<customer_telephone/>
<customer_telephone_mobile/>
<sale_datetime>2020-10-08 00:00:00</sale_datetime>
<external_ref>2766692200</external_ref>
<has_been_completed/>
<completion_datetime>0000-00-00 00:00:00</completion_datetime>
<has_pdf_been_queued/>
<has_pdf_been_completed/>
<shipping_method>5 Days</shipping_method>
<shipping_carrier> OwnCarrier</shipping_carrier>
<shipping_tracking/>
<shipping_note_url/>
<payment_trans_id>12345</payment_trans_id>
<payment_type/>
<has_initial_confirmation_email_been_sent/>
<has_shipping_confirmation_email_been_sent/>
<creation_datetime>2020-10-08 11:27:00</creation_datetime>
<additional_info>DQ695212</additional_info>
<has_error/>
<error_message/>
<required_dispatch_date>2020-10-14</required_dispatch_date>
<is_status_callback_pending/>
<stock_request_id>0</stock_request_id>
<status_callback_attempts>0</status_callback_attempts>
<status_callback_next_retry>0000-00-00 00:00:00</status_callback_next_retry>
<consolidate/>
<has_been_invoiced/>
<billing_customer_name/>
<billing_customer_email/>
<billing_customer_telephone/>
<shipping_price>0</shipping_price>
<shipping_price_inc_tax>0</shipping_price_inc_tax>
<shipping_tax_rate>0</shipping_tax_rate>
<is_urgent/>
<tag/>
<pos_user_id/>
<coupon_code/>
<is_free_of_charge/>
<status_name>Received by shipper</status_name>
<company_external_ref/>
<items>
<item>
<id>34328128</id>
<sale_vat_rate>0</sale_vat_rate>
<external_ref>2799366</external_ref>
<ref>n6xrl213tp</ref>
<order_id>16128737</order_id>
<sku>291169</sku>
<mapped_sku>291169</mapped_sku>
<description>P Snta Stop Strt Sgn</description>
<colour/>
<size>ONE</size>
<quantity>1</quantity>
<type>2</type>
<print_job_id>43816626</print_job_id>
<print_job_promise_ref/>
<external_url/>
<external_thumbnail_url/>
<status>1</status>
<print_on_demand_ref/>
<plain_stock_item_ref/>
<license/>
<license_percentage/>
<unit_sale_price>18</unit_sale_price>
<unit_sale_price_inc_tax>18</unit_sale_price_inc_tax>
<unit_cost_price>0</unit_cost_price>
<shipping_price>0</shipping_price>
<shipping_price_inc_tax>0</shipping_price_inc_tax>
<bundle_ref/>
<textual_product_id>1690160</textual_product_id>
<product_variant_id/>
<quantity_batched>1</quantity_batched>
<quantity_dispatched>0</quantity_dispatched>
<stock_request_id/>
<artwork_barcode>43816626</artwork_barcode>
<quantity_consolidated>0</quantity_consolidated>
<product_state_id/>
<status_name>Received</status_name>
<print_job_ref>5A45179F665F74BF52</print_job_ref>
<assets>
<asset>
<name>output-1.jpg</name>
<description>Santa Stop Sign</description>
</asset>
<asset>
<name>thumbnail.png</name>
<description>Default Thumbnail</description>
</asset>
<asset>
<name>thumbnail-288386.png</name>
<description>Thumbnail Santa Stop Here Sign</description>
</asset>
</assets>
<attributes>
<attribute>
<name>Colour</name>
<value>Aqua</value>
</attribute>
<attribute>
<name>Postcode for map</name>
<value>OL25TG</value>
</attribute>
<attribute>
<name>House Number or Name</name>
<value>8</value>
</attribute>
<attribute>
<name>Street</name>
<value>Kirkdale Drive</value>
</attribute>
<attribute>
<name>Town</name>
<value>Royton</value>
</attribute>
<attribute>
<name>Names</name>
<value>The Sencicle Home</value>
</attribute>
</attributes>
</item>
</items>
<pdfs>
<pdf>
<type>1</type>
</pdf>
</pdfs>
</order>
</orders>
The below one has some amendments in bold to clarify fields where the contents is not obvious.
<orders>
<order>
<id>ORDER ID</id> This is the reference used for status updates. This should be stored in your systems and used as the order identifier for status updates for all integrations.
<company_ref_id>KORNITX ID REFERENCE FOR NEXT</company_ref_id> This value will always be populated with 18698.
<secondary_company_ref_id>KORNITX SUPPLIER ID</secondary_company_ref_id> This reference is the dropship reference specific to each supplier account.
<ref>KORNITX ORDER REFERENCE</ref> This is not required for the integration or invoicing and can therefore be ignored.
<status>516</status>
<shipping_company/>
<shipping_address_1>43 TEST STREET</shipping_address_1> Address Line 1
<shipping_address_2/> This will always be blank
<shipping_address_3/> This will always be blank
<shipping_address_4>TEST</shipping_address_4> Town / City
<shipping_address_5>TEST</shipping_address_5> Region / County
<shipping_postcode>J34 2JF</shipping_postcode> Postcode
<shipping_country>United Kingdom</shipping_country> Country
<shipping_country_code>GB</shipping_country_code> Country Code
<billing_company/> Billing Info will not be provided
<billing_address_1/>
<billing_address_2/>
<billing_address_3/>
<billing_address_4/>
<billing_address_5/>
<billing_postcode/>
<billing_country>United Kingdom</billing_country>
<customer_name>MISS A TESTER</customer_name>
<customer_telephone/>
<customer_telephone_mobile/>
<sale_datetime>TIMESTAMP ON THE ORDER FROM NEXT</sale_datetime>
<external_ref> EXTERNAL ORDER REFERENCE (NEXT)</external_ref> This is the Next Customer Order Reference and should be stored for invoicing.
<has_been_completed/>
<completion_datetime>0000-00-00 00:00:00</completion_datetime>
<has_pdf_been_queued/>
<has_pdf_been_completed/>
<shipping_method> NEXT EXPECTED LEAD TIME</shipping_method>
<shipping_carrier> OwnCarrier</shipping_carrier>
<shipping_tracking/>
<shipping_note_url/>
<payment_trans_id>NEXT INVOICE NUMBER</payment_trans_id>
<payment_type/>
<has_initial_confirmation_email_been_sent/>
<has_shipping_confirmation_email_been_sent/>
<creation_datetime>2020-10-08 11:27:00</creation_datetime>
<additional_info>DQ695212</additional_info>
<has_error/>
<error_message/>
<required_dispatch_date>2020-10-14</required_dispatch_date> This is the date the customer is expecting the order on or before.
<is_status_callback_pending/>
<stock_request_id>0</stock_request_id>
<status_callback_attempts>0</status_callback_attempts>
<status_callback_next_retry>0000-00-00 00:00:00</status_callback_next_retry>
<consolidate/>
<has_been_invoiced/>
<billing_customer_name/>
<billing_customer_email/>
<billing_customer_telephone/>
<shipping_price>0</shipping_price>
<shipping_price_inc_tax>0</shipping_price_inc_tax>
<shipping_tax_rate>0</shipping_tax_rate>
<is_urgent/>
<tag/>
<pos_user_id/>
<coupon_code/>
<currency_code>GBP</currency_code>
<is_free_of_charge/>
<status_name>Received</status_name>
<company_external_ref/>
<items>
<item>
<id>34328128</id>
<sale_vat_rate>0</sale_vat_rate>
<external_ref>2799366</external_ref>
<ref>n6xrl213tp</ref>
<order_id>16128737</order_id>
<sku>NEXT ITEM NUMBER</sku> This SKU is generated by Next and is the SKU required for invoicing.
<mapped_sku>MANUFACTURER SKU</mapped_sku> This SKU is the Manufacturing SKU. If the product has size or colour options, this SKU will be unique to the option selected.
<description>P Snta Stop Strt Sgn</description>
<colour/>
<size>ONE</size>
<quantity>1</quantity>
<type>2</type>
<print_job_id>43816626</print_job_id>
<print_job_promise_ref/>
<external_url/>
<external_thumbnail_url/>
<status>1</status>
<print_on_demand_ref/>
<plain_stock_item_ref/>
<license/>
<license_percentage/>
<unit_sale_price>18</unit_sale_price> Pricing may not always be included in the file. If values are included they should not be used for invoicing purposes.
<unit_sale_price_inc_tax>18</unit_sale_price_inc_tax>
<unit_cost_price>0</unit_cost_price>
<shipping_price>0</shipping_price>
<shipping_price_inc_tax>0</shipping_price_inc_tax>
<bundle_ref/>
<textual_product_id>1690160</textual_product_id>
<product_variant_id/>
<quantity_batched>1</quantity_batched>
<quantity_dispatched>0</quantity_dispatched>
<stock_request_id/>
<artwork_barcode>43816626</artwork_barcode>
<quantity_consolidated>0</quantity_consolidated>
<product_state_id/>
<status_name>Received</status_name>
<print_job_ref>5A45179F665F74BF52</print_job_ref>
<assets>
<asset>
<name>output-1.jpg</name>
<description>Santa Stop Sign</description>
</asset>
<asset>
<name>thumbnail.png</name>
<description>Default Thumbnail</description>
</asset>
<asset>
<name>thumbnail-288386.png</name>
<description>Thumbnail Santa Stop Here Sign</description>
</asset>
</assets>
<attributes>
<attribute>
<name>Colour</name>
<value>Aqua</value>
</attribute>
<attribute>
<name>Postcode for map</name>
<value>OL25TG</value>
</attribute>
<attribute>
<name>House Number or Name</name>
<value>8</value>
</attribute>
<attribute>
<name>Street</name>
<value>Kirkdale Drive</value>
</attribute>
<attribute>
<name>Town</name>
<value>Royton</value>
</attribute>
<attribute>
<name>Names</name>
<value>The Sencicle Home</value>
</attribute>
</attributes>
</item>
</items>
<pdfs>
<pdf>
<type>1</type>
<url>URL FOR DISPATCH NOTE FOR DOWNLOAD AND PRINT</url> This url should be stored in your systems so that is can be downloaded, printed and included with each order.
</pdf>
</pdfs>
</order>
</orders>
This is a setting on the integration which your Kornit X contact can enable for you.
These fields are added to the <attributes> element
A branded A4 Dispatch Note must be included within each order. It contains information which is vital for the Customer Returns process.
<pdfs>
<pdf>
<type>1</type>
</pdf>
An example Dispatch Note can be viewed here.
The Dispatch Note is available to download and print from the platform.
If you are integrating directly with the platform, a URL will be included with the data where you will be able to access and print the Dispatch Note.
The supplier is required to upload an acknowledgement file to the /acknowledgements directory of the SFTP account which Kornit X will then take as confirmation that the supplier is ready and happy to process the order - there is no specific file naming convention.
The ID field must correlate to an order that the supplier has received via the orders XML file. The supplier may not send an acknowledgement for an order that it was never sent to begin with.
Once the file has been processed by Kornit X, it will be deleted.
The acknowledgement XML file can contain multiple orders and is structured as follows:
Once the order has been completed and dispatched to the customer, the supplier should upload a shipment file to the /shipments directory - there is no specific file naming convention.
The shipment file follows exactly the same structure as the acknowledgement file and the same principles should be used in its creation. The only addition is that the shipping file can contain a tracking link / reference.
Once processed by Kornit X the shipments XML files will be deleted.
<cancellations xmlns:c="https://custom-gateway.net/sl/proxy2/generic-fs/cancellation" xmlns:ci="https://custom-gateway.net/sl/proxy2/generic-fs/cancellation-item">
<c:cancellation>
<c:items>
<ci:item>
<ci:order_item_id>43463373</ci:order_item_id>
</ci:item>
</c:items>
</c:cancellation>
</cancellations>
<inventory xmlns:i="https://custom-gateway.net/sl/proxy2/generic-fs/inventory" xmlns:p="https://custom-gateway.net/sl/proxy2/generic-fs/inventory-product">
<i:product>
<p:sku>ABC</p:sku>
<p:quantity_available>1</p:quantity_available>
</i:product>
</inventory>
NOTE - with this inventory file, "sku" can be replaced with "ean".
XML files should be placed in the following SFTP folder structure:
Orders will be placed in the /transfer/orders directory by Kornit X.
Acknowledgements should be sent to the /transfer/acknowledgements directory.
Inventory files should be posted to the /transfer/inventory directory.
Order Status should be sent to the /transfer/shipments directory.
Archive: Once orders are processed, they should be moved to the /transfer/archive directory.