Payment due date in email only shows when "upon receipt" not when Net7 or custom date

Topic summary

Payment due date not appearing in order emails when using Net7/Net15/Net30 or custom terms; only “upon receipt” showed a date. The original Liquid pulled payment_terms.next_payment.due_at, which returned nothing for these cases.

One participant noted Shopify’s payment_terms filter is intended for use on a form object (product/cart forms). However, a working approach for notifications was shared using payment_terms object logic with fallbacks.

Solution: If payment_terms.type is ‘receipt’ and next_payment.due_at is nil, set due_date to ‘now’. Otherwise, set due_date to payment_terms.next_payment.due_at. If payment_terms.type is ‘fulfillment’ and next_payment.due_at is nil, output “due on fulfillment”; else output the formatted due date. A code snippet implementing this logic was provided (code is central to the thread).

Date formatting can be customized using the Liquid date filter (e.g., ‘%d/%m/%Y’), or via theme template formatting: {{ due_date | date: ‘template.formatDate’ }}. Links to Shopify’s date filter docs were included.

Outcome: A practical, working snippet resolves the email display for Net terms and custom dates. Thread appears resolved.

Summarized with AI on December 15. AI used: gpt-5.

Hi I know this is old, but I have been looking for the same thing. I found this:

The payment_terms filter must be used on the form object within a product form or cart form.

{{ form | payment_terms }}

https://shopify.dev/api/liquid/filters/payment_terms