How to list different product types separately in order summary?
You'll need to query the Purchasable in order to sort by Type.

Hope this helps. Let me know if you find a better way.

&lt;h2&gt;Products&lt;/h2&gt;
{% for item in order.lineItems %}
    {% if item.purchasable.product.getType().name == 'Products' %}
        {% set variant = item.purchasable %}
        {% set product = variant.product %}
        &lt;li&gt;{{ product.title }} - ({{ item.qty }})&lt;/li&gt;
    {% endif %}
{% endfor %}


&lt;h2&gt;Services&lt;/h2&gt;
{% for item in order.lineItems %}
    {% if item.purchasable.product.getType().name == 'Services' %}
        {% set variant = item.purchasable %}
        {% set product = variant.product %}
        &lt;li&gt;{{ product.title }} - ({{ item.qty }})&lt;/li&gt;
    {% endif %}
{% endfor %}


&lt;h2&gt;Others&lt;/h2&gt;
{% for item in order.lineItems %}
    {% if item.purchasable.product.getType().name not in ['Products','Services'] %}
        {% set variant = item.purchasable %}
        {% set product = variant.product %}
        &lt;li&gt;{{ product.title }} - ({{ item.qty }})&lt;/li&gt;
    {% endif %}
{% endfor %}