How to return payment status value in packing slip

Topic summary

A merchant wants to display payment method labels (“COD order” or “Prepaid Order”) on packing slips but discovered that Shopify’s packing slip template doesn’t support payment-related variables like {{order.gateway}}, {{transaction.gateway}}, {{order.financial_status}}, or {{transaction.status}} — all return empty values.

Confirmed limitation: After consulting Shopify experts, payment variables are not available in packing slip templates.

Workarounds identified:

  1. Manual order notes: Add a standardized note (e.g., “COD”) to COD orders, then use {% if order.note == "COD" %} conditions in the template to display the appropriate label. Limitation: Requires manual input for each order.

  2. Shopify Flow automation: Install the Shopify Flow app to create a workflow that detects the payment gateway and automatically tags COD orders with “COD”. Use {% if order.tags contains 'COD' %} conditions in the template to generate output. Benefit: Fully automates the tagging process.

The discussion remains open with these solutions as the best available options given Shopify’s current template limitations.

Summarized with AI on November 6. AI used: claude-sonnet-4-5-20250929.

I want to mention ‘COD order’ or ‘Prepaid Order’ according to the payment method in my store’s packing slip. For that I’ve tried customising the packing slip template with the variables {{order.gateway}}, {{transaction.gateway}}, {{order.financial_status}} & {{transaction.status}}.

None of the variables worked and I tried to see if it’s even returning any values, and found that all these variables are returning empty values. I checked with actual orders, and still no values returned.

Does anyone know any solution for this?

Latest code i’ve tried is:

{% assign payment_status = "" %}
{% for transaction in order.transactions %}
  {% if transaction.kind == "sale" %}
    {% assign payment_status = transaction.status %}
  {% endif %}
{% endfor %}

  {% if payment_status != "" %}
    Payment Status: {{ payment_status }}
  {% else %}
    Payment Status: Not available
  {% endif %}

This returns ‘Payment Status: Not available’.

After interacting with some Shopify experts, I’ve realized that Shopify currently does not allow the use of payment-related variables in the packing slip template.

However, I found a few solutions:

  1. Add Notes to Orders: Add a standardized note (e.g., COD) to COD orders, and then use the {{ order.note == “COD” }} condition (if-else condition) to return the desired output.

    But this solution requires manual input of order notes. So, if you want to fully automate this process, consider the next solution.

  2. Install the ‘Shopify Flow’ App: Create a workflow that checks the payment gateway and adds a ‘COD’ tag to COD orders. Then use {% if order.tags contains ‘COD’ %} and {% else %} conditions to generate the desired output.

Hope this helps.