# Complete Processing Orders After a Set Number of Days

> Marks processing orders as completed automatically a number of days after purchase, for stores where you do not update orders when they are delivered.

- Type: PHP
- Runs: Run everywhere
- Category: [WooCommerce](https://wpide.com/library/category/woocommerce/)
- Requires: WooCommerce
- Tags: woocommerce, orders, automation, status
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/woo-auto-complete-after-days/

## Code

```php
$wpide_complete_after_days = 10; // Days after the order date.

add_action( 'init', function () {
    if ( ! wp_next_scheduled( 'wpide_auto_complete_orders' ) ) {
        wp_schedule_event( time() + HOUR_IN_SECONDS, 'daily', 'wpide_auto_complete_orders' );
    }
} );

add_action( 'wpide_auto_complete_orders', function () use ( $wpide_complete_after_days ) {
    if ( ! function_exists( 'wc_get_orders' ) ) {
        return;
    }

    $orders = wc_get_orders( array(
        'status'       => 'processing',
        'date_created' => '<' . ( time() - $wpide_complete_after_days * DAY_IN_SECONDS ),
        'limit'        => 50,
    ) );

    foreach ( $orders as $order ) {
        $order->update_status( 'completed', sprintf( 'Completed automatically %d days after purchase.', $wpide_complete_after_days ) );
    }
} );
```

## Notes

Runs daily through WP-Cron, 50 orders per run, and customers get the "Order completed" email if it is enabled.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Complete Processing Orders After a Set Number of Days" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
