WooCommerce sets offline payment methods (Check, Direct Bank Transfer, COD, etc.) to "On Hold" status by default. ShipStation only syncs orders with "Completed" status, which means offline orders never reach ShipStation without manual intervention.
The solution is a lightweight custom PHP plugin that hooks into the WooCommerce thank-you page and automatically transitions offline orders from "On Hold" (or "Pending"/"Processing") to "Completed" at the moment of order submission.
This pattern was first built and deployed for [1] B2B site in January 2026.
| Step | What Happens |
|---|---|
| Customer checks out with offline payment | WooCommerce sets order status → On Hold |
| ShipStation polls for new orders | Only picks up Completed orders |
| Result | Offline orders are invisible to ShipStation |
Without intervention, Lucy (or any operator) would need to manually open each order in WooCommerce and change the status before ShipStation would see it — an unacceptable workflow at any order volume.
A custom plugin hooks into the WooCommerce woocommerce_thankyou action (the thank-you page load, immediately after order submission). If the order's payment method is any of the configured offline types, the plugin changes the order status to Completed and logs a note.
cheque — Check Paymentsbacs — Direct Bank Transfercod — Cash on DeliveryAdditional payment method IDs can be added to the array as needed.
payment_method is in the offline methods list$order->update_status('completed', 'Auto-completed by offline orders plugin — [payment method] payment')After activation, a test order placed with Check Payments showed the following in WooCommerce order notes:
Order status changed from pending payment to on hold
Order status changed from on hold to completed — Auto-completed offline orders plugin, check payment
The order appeared in ShipStation on the next sync cycle (typically within a few minutes).
The plugin was created as a standalone folder/file (not added to the theme's functions.php) and installed via Plugins → Add New → Upload Plugin in the WordPress admin. This keeps it isolated from theme updates and easy to deactivate or modify independently.
Plugin folder name: autocomplete-offline-orders
Activation: Standard WordPress plugin activation