A user is attempting to create a Shopify Flow that automatically sends invoices to customers after order fulfillment, but encounters persistent issues.
Initial Problem:
Flow triggers correctly on fulfilled orders but fails with error: “Order is closed”
Shopify prevents sending invoices after orders are marked as closed, which often happens automatically upon fulfillment
Attempted Solutions:
Changed trigger from “Order fulfilled” to “Order paid” with conditions checking for fulfillment status and success
Flow now shows “status completed” but still sends no emails
Test emails to shop’s own address also fail to arrive
Root Cause Identified:
The “Send order invoice” action in Shopify Flow only works for customers with Payment Terms enabled (a B2B/Shopify Plus feature). It cannot be used for standard prepaid orders via Shopify Pay or PayPal.
Resolution:
This workflow is fundamentally incompatible with the user’s setup, as their customers are all prepaying consumers without Payment Terms. The invoice-sending functionality requires a B2B configuration that isn’t applicable to their business model.
Summarized with AI on October 29.
AI used: claude-sonnet-4-5-20250929.
There are few things that you are doing right but at some places it’s not correct.
What’s working:
Your Shopify Flow correctly triggers on “Order Fulfilled.”
The email content and setup look correctly configured using the appropriate {{ order.customer.email }}, {{ shop.contactEmail }}, and {{ order.name }} variables.
What’s causing the issue:
The error message GraphQL Response User Errors: “Order is closed” is the key here. This means:
Shopify does not allow sending invoices via the Send order invoice action after the order is marked as “Closed.”
When an order is fulfilled, it may automatically be marked as closed depending on your store’s settings or other workflows.
How to fix it:
You have two main options:
Option 1: Trigger the flow before the order is closed
Modify the trigger to something like:
Order paid OR
Order created → followed by a delay (e.g., wait until fulfillment is complete)
Then check for fulfillment inside the flow using a condition.
Option 2: Reopen the order before sending the invoice
This is not ideal and likely not scalable — it would involve:
A custom app or manual intervention to reopen the order, send the invoice, then close it again.
Recommended fix:
Change your trigger from Order fulfilled to:
Trigger: Order paid
Condition: If order is fulfilled
Action: Send invoice
Or add a wait step after order creation:
Trigger: Order created
Action: Wait until order is fulfilled
Action: Send invoice
Hope this will help. Let me know if you need more help.