Skip to main content

Retino XML Feed

O
Written by Ondřej Průša
Updated this week

If you are not using a platform with native integration, you can integrate Retino with your online store using an XML feed in our format.

This article describes the XML feed structure and its import mechanism.

Feed Structure

The feed starts with an XML header with version 1.0 and UTF-8 encoding. We only support UTF-8 encoding. Then follows a paired tag ORDERS, containing all orders (each in a ORDER tag). Tags are case-sensitive. White-space between tags is ignored. Prices (type DECIMAL) are written with a decimal point (.), without thousands separators.

Example:

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS>
        <ORDER>
            (... order structure - see below ...)
        </ORDER>
        <ORDER>
            (... order structure - see below ...)
        </ORDER>
        (... more orders ...)
    </ORDERS>

If you need to send an empty feed, include the header and an empty paired ORDERS tag.

Example:

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS>
    </ORDERS>

ORDER Structure

Example:

<ORDER>
  <ORDER_ID>4347</ORDER_ID>
  <ORDER_URL>https://example.com/admin/order-detail/4347</ORDER_URL>
  <CODE>201800001</CODE>
  <INVOICE_CODE>201800001</INVOICE_CODE>
  <DATE>2018-03-02 21:46:52</DATE>
  <CURRENCY>
    <CODE>CZK</CODE>
  </CURRENCY>
  <PACKAGE_NUMBER>12345678</PACKAGE_NUMBER>
  <LANGUAGE>EN</LANGUAGE>
  <CUSTOMER>
    <EMAIL>[email protected]</EMAIL>
    <PHONE>777123456</PHONE>
    <BILLING_ADDRESS>
      <NAME>George Customer</NAME>
      <COMPANY></COMPANY>
      <STREET>Masarykova</STREET>
      <HOUSENUMBER>1</HOUSENUMBER>
      <CITY>Praha</CITY>
      <ZIP>10000</ZIP>
      <COUNTRY>CZ</COUNTRY>
      <COMPANY_ID></COMPANY_ID>
      <VAT_ID></VAT_ID>
    </BILLING_ADDRESS>
    <SHIPPING_ADDRESS>
      <NAME>George Customer</NAME>
      <COMPANY></COMPANY>
      <STREET>Masarykova</STREET>
      <HOUSENUMBER>1</HOUSENUMBER>
      <CITY>Praha</CITY>
      <ZIP>10000</ZIP>
      <COUNTRY>CZ</COUNTRY>
    </SHIPPING_ADDRESS>
  </CUSTOMER>
  <TOTAL_PRICE>
    <WITH_VAT>457.00</WITH_VAT>
    <WITHOUT_VAT>377.68</WITHOUT_VAT>
    <VAT>79.32</VAT>
  </TOTAL_PRICE>
  <ORDER_ITEMS>
    <ITEM>
      (... item structure - see below ...)
    </ITEM>
    <ITEM>
      (... item structure - see below ...)
    </ITEM> (... more items ...) </ORDER_ITEMS>
  <STATUSES>
    <STATUS>
      <NAME>NEW</NAME>
      <DATE>2017-03-02 11:32:07</DATE>
    </STATUS>
    <STATUS>
      <NAME>PAID</NAME>
      <DATE>2017-03-02 12:30:00</DATE>
    </STATUS>
    <STATUS>
      <NAME>PICKING</NAME>
      <DATE>2017-03-02 14:15:30</DATE>
    </STATUS>
    <STATUS>
      <NAME>PACKED</NAME>
      <DATE>2017-03-02 15:21:30</DATE>
    </STATUS>
    <STATUS>
      <NAME>DISPATCHED</NAME>
      <DATE>2017-03-02 16:45:20</DATE>
    </STATUS>
  </STATUSES>
  <INVOICES>
    <INVOICE>
      <CODE>201800001</CODE>
      <URL>https://example.com/invoice/201800001</URL>
      <CHANGE_TIME>2017-05-01 15:01:00</CHANGE_TIME>
    </INVOICE>
  </INVOICES>
</ORDER>

Field descriptions:

Name

Type

Required?

Description

ORDER_ID

VARCHAR(255)

Yes

Internal ID used in your system. We use it for linking systems via direct link. If this field is the same as the customer-visible order number (tag CODE), please include it here twice.

ORDER_URL

VARCHAR(255)

No

Link to the order detail in your online store admin

CODE

VARCHAR(255)

Yes

Order number as seen by the customer

INVOICE_CODE

VARCHAR(255)

No

Invoice number as seen by the customer

DATE

DATETIME

Yes

Order date and time in ISO 8601 format

CURRENCY/CODE

VARCHAR(3)

Yes

Order currency in ISO 4217 format

PACKAGE_NUMBER

VARCHAR(255)

No

Shipment number for carrier tracking, separate multiple packages with a comma ("111,222")

LANGUAGE

VARCHAR(255)

No

Order language

CUSTOMER

see below

Yes

Customer information (see below)

TOTAL_PRICE

see below

Yes

Total order price (see below)

ORDER_ITEMS

see below

Yes

Order items (see below)

STATUSES

see below

No

List of order statuses (see below)

INVOICES

see below

No

List of invoices

Description of the CUSTOMER tag:

EMAIL

VARCHAR(254)

Yes

Customer's email address, must be a valid email

PHONE

VARCHAR(255)

No

Customer's phone, ideally in E.164 format (but not validated)

BILLING_ADDRESS

see below

Yes

Customer's billing address (see below)

SHIPPING_ADDRESS

see below

Yes

Customer's shipping address (see below) – if the same as billing, include it here again

Description of BILLING_ADDRESS and SHIPPING_ADDRESS tags:

NAME

VARCHAR(255)

Yes

Customer's name

COMPANY

VARCHAR(255)

No

Company name

STREET

VARCHAR(255)

Yes

Street

HOUSENUMBER

VARCHAR(255)

No

House number (if you don't have separate street and house number, fill both into the STREET tag and leave this one empty)

CITY

VARCHAR(255)

Yes

City

ZIP

VARCHAR(255)

Yes

Postal code

COUNTRY

VARCHAR(255)

Yes

Country (in ISO-3166 format, but not validated)

COMPANY_ID

VARCHAR(255)

No

Company ID (only in BILLING_ADDRESS)

VAT_ID

VARCHAR(255)

No

VAT ID (only in BILLING_ADDRESS)

Description of the TOTAL_PRICE tag:

WITH_VAT

DECIMAL

At least one of WITH_VAT / WITHOUT_VAT

Total order amount including VAT

WITHOUT_VAT

DECIMAL

At least one of WITH_VAT / WITHOUT_VAT

Total order amount excluding VAT (if you are not VAT payer, fill in this tag only)

VAT

DECIMAL

If WITH_VAT is filled

VAT (absolute amount)

Description of the STATUS tag:

NAME

see below

Yes

One of the available order statuses

DATE

DATETIME

Yes

Order status date and time in ISO 8601 format

Order statuses:

OPEN - Order is open and active, meaning it hasn't been delivered or canceled yet.

CLOSED - Order is closed, meaning it has been delivered or successfully completed.

CANCELED - Order has been canceled and will not be further processed.


AWAITING_PAYMENT - Payment has not yet been received, waiting for customer payment.

PAID - Payment has been successfully received and processed.

PARTIALLY_REFUNDED - Part of the payment has been refunded to the customer.

REFUNDED - Full payment has been refunded to the customer.

FAILED - Payment attempt failed or was rejected by the payment gateway.


NEW - New order, not yet processed in the warehouse.

PICKING - Order is currently being picked from the warehouse, prepared, and packed.

PACKED - Order has been packed and is ready for shipment.

DISPATCHED - Order has been shipped to the customer.

ON_HOLD - Order processing is temporarily paused, waiting for an action or resolution. Not intended for waiting for payment.

READY_FOR_PICKUP - Order is ready for customer pickup at a branch or warehouse.

PICKED_UP - Order has been picked up by the customer in person.

Important Note. Canceled orders (status CANCELED) will not be visible to the customer in the portal.

Description of the INVOICE tag:

CODE

VARCHAR(255)

Yes

Invoice number

URL

VARCHAR

Yes

URL for downloading the invoice

CHANGE_TIME

DATETIME

No

Date of change. If you update the date, we will download the invoice again.

Order Item Description (ITEM)

Example:

<ITEM>
        <TYPE>product</TYPE>
        <NAME>Product 1</NAME>
        <CODE>988765</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <AMOUNT>1</AMOUNT>
        <UNIT>pc</UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </TOTAL_PRICE>
    </ITEM>

Field descriptions:

TYPE

ENUM

Yes

Item type (list of options see below)

NAME

VARCHAR(255)

Yes

Item name

CODE

VARCHAR(255)

Yes

Product code

VARIANT_NAME

VARCHAR(255)

No

Variant name (e.g., color or size for fashion items)

MANUFACTURER

VARCHAR(255)

No

Manufacturer

AMOUNT

DECIMAL

Yes

Quantity

UNIT

VARCHAR(10)

Yes

Unit (e.g., pc or g)

WEIGHT

DECIMAL

No

Weight in kg

UNIT_PRICE

see below

Yes

Price per unit

TOTAL_PRICE

see below

Yes

Total price for all units (full quantity)

IMGURL

VARCHAR(255)

No

Product image URL

Item types:

product

Product (this can be returned/claimed by the customer)

discount

Discount

shipping

Shipping

billing

Payment (cash on delivery, etc.)

other

Other items

Description of UNIT_PRICE and TOTAL_PRICE tags:

WITH_VAT

DECIMAL

At least one of WITH_VAT / WITHOUT_VAT

Price including VAT

WITHOUT_VAT

DECIMAL

At least one of WITH_VAT / WITHOUT_VAT

Price excluding VAT (non-VAT payers fill in this one only)

VAT

DECIMAL

If WITH_VAT is filled

VAT (absolute amount)

Initial Sync Feed

Claims typically can be processed up to 2 years back. Therefore, we need access to older orders. Please send us a one-time feed with historical orders for the period you wish to have available in Retino. We recommend the last 30 months. Please send the feed to our support team at [email protected].

Incremental Sync Feed

Once the initial synchronization is complete, we need to keep the database up-to-date. For this purpose, we need an incremental feed that our system will automatically retrieve. It works as follows:

We download the feed from the URL approximately every 6 hours. This interval may change in the future. You have two options for generating the feed:

  1. A statically generated feed containing orders from the last X days. We recommend X = 7.

  2. A dynamically generated feed where you always send us orders that "we haven't seen yet," meaning you keep a timestamp of the last feed retrieval and then send us orders changed since then.

We recommend option 1.

Important Information. If you send us an order that we have already seen, we will not create a new one, but update the existing one. We match orders based on the CODE tag.

Security of Transfer

Data transfer is via HTTPS and can be secured using HTTP Basic authentication. We recommend this security measure for data protection. If this is not possible in your case, we recommend at least setting the feed URL to an "unguessable" address, e.g., www.store.com/9b9972387feb11eabc550242ac130003.xml.

Your server must return a response within 60 seconds.

Data and Time Formats

Retino supports several date and time formats in the XML feed:

  • ISO 8601 format: 2023-04-23T14:30:45

  • Date and time with a space: 2023-04-23 14:30:45

  • Date only: 2023-04-23

If the date is given without a time zone, it is considered to be in the server's current time zone.

Processing of Special Values

Retino provides automatic processing of some values:

  • DECIMAL values - are automatically converted from comma-separated to dot-separated format

  • Countries - if you provide a country code, it is automatically normalized

  • All text values are trimmed to a maximum length of 255 characters

Attention to Special Characters

Please note that the XML format does not allow certain characters like <, >, or & within strings. The easiest solution is to wrap all tags where special characters might appear in CDATA entities.

Incorrect example (XML parser will throw an error):

<NAME>Slim&Sun 100 tablet</NAME>

Correct example (handled using CDATA):

<NAME><![CDATA[Slim&Sun 100 tablet]]></NAME>

Feed Validation

For validating the data format in your XML feed, you can use an XSD file. Download the feed schema file below:

Alternatively, you can use the validator on our website.

Example Feed

<?xml version="1.0" encoding="UTF-8"?>
    <ORDERS><ORDER>
        <ORDER_ID>4347</ORDER_ID>
        <CODE>201800001</CODE>
        <INVOICE_CODE>2018-001</INVOICE_CODE>
        <DATE>2018-03-02 21:46:52</DATE>
        <CURRENCY>
            <CODE>CZK</CODE>
        </CURRENCY>
        <PACKAGE_NUMBER>12345678</PACKAGE_NUMBER>
        <LANGUAGE>EN</LANGUAGE>
        <CUSTOMER>
            <EMAIL>[email protected]</EMAIL>
            <PHONE>777123456</PHONE>
            <BILLING_ADDRESS>
                <NAME>Jiří Zákazník</NAME>
                <COMPANY></COMPANY>
                <STREET>Masarykova</STREET>
                <HOUSENUMBER>1</HOUSENUMBER>
                <CITY>Praha</CITY>
                <ZIP>10000</ZIP>
                <COUNTRY>CZ</COUNTRY>
                <COMPANY_ID></COMPANY_ID>
                <VAT_ID></VAT_ID>
            </BILLING_ADDRESS>
            <SHIPPING_ADDRESS>
                <NAME>Jiří Zákazník</NAME>
                <COMPANY></COMPANY>
                <STREET>Masarykova</STREET>
                <HOUSENUMBER>1</HOUSENUMBER>
                <CITY>Praha</CITY>
                <ZIP>10000</ZIP>
                <COUNTRY>CZ</COUNTRY>
            </SHIPPING_ADDRESS>
        </CUSTOMER>
        <TOTAL_PRICE>
            <WITH_VAT>457.00</WITH_VAT>
            <WITHOUT_VAT>377.68</WITHOUT_VAT>
            <VAT>79.32</VAT>
        </TOTAL_PRICE>
        <ORDER_ITEMS><ITEM>
        <TYPE>product</TYPE>
        <NAME>Product 1</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>988765</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT>pc</UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>407.00</WITH_VAT>
            <WITHOUT_VAT>336.36</WITHOUT_VAT>
            <VAT>70.64</VAT>
        </TOTAL_PRICE>
    </ITEM><ITEM>
        <TYPE>shipping</TYPE>
        <NAME>Zásilkovna - Praha</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>SHIPPING16</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT></UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </TOTAL_PRICE>
    </ITEM><ITEM>
        <TYPE>billing</TYPE>
        <NAME>Dobírkou</NAME>
        <AMOUNT>1</AMOUNT>
        <CODE>BILLING3</CODE>
        <VARIANT_NAME></VARIANT_NAME>
        <MANUFACTURER></MANUFACTURER>
        <UNIT></UNIT>
        <WEIGHT>0</WEIGHT>
        <UNIT_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </UNIT_PRICE>
        <TOTAL_PRICE>
            <WITH_VAT>25.00</WITH_VAT>
            <WITHOUT_VAT>20.66</WITHOUT_VAT>
            <VAT>4.34</VAT>
        </TOTAL_PRICE>
    </ITEM></ORDER_ITEMS>
    </ORDER>
    </ORDERS>

Portal Integration

Once the data integration is complete, you will need to integrate the customer-facing Retino portal. To display the Retino portal on your website, insert the integration script into your online store page. That's it!

Frequently Asked Questions (FAQ)

Are canceled orders removed from Retino?

No, canceled orders are not removed from Retino. The XML feed does not allow deleting orders, only adding or updating them. If you have a canceled order in your online store, we recommend continuing to send it in the XML feed with the current status to keep the data consistent in the system.

Troubleshooting Connection Issues

If you encounter any problems connecting, please contact us at [email protected]. Our team will gladly assist you with setup or resolving any technical issues.

Did this answer your question?