Partial Delivery for WooCommerce

Partial Delivery for WooCommerce enables merchants to ship parts of an order with one or several items in each delivery.

Your customers can easily keep track of what has been delivered and what hasn't through their My account-page.

Currently this feature is supported if you use Klarna Checkout for WooCommerce, Klarna Payments for WooCommerce or Nets Easy for WooCommerce as your payment method. We will be adding support for more payment solutions in the future.


  1. Login to WordPress Admin. Navigate to Plugins → Add New (in the left column menu).
  2. Click Upload Plugin and then browse to the plugin zip-file on your computer. Click on OK and finally click on the Install Now button.
  3. Activate the plugin.


Go to: WooCommerce → Settings →  General

Partial Delivery options

Send emails with each delivery
If this setting is enabled the customer will receive an email with each partial delivery order that has been set to Completed.
Automatically create deliveries
If this setting is enabled, partial delivery orders are automatically created for orders with products out of stock. When the original order is set to Completed, a partial delivery order is created for the products that are in stock, leaving the backordered products to be fulfilled at a later stage.
If you have the setting Automatically create deliveries activated and are setting a partially delivered order to Complete the plugin runs a check to see that the backordered items now are in stock.
For this check to work you need to have the setting Allow back-orders? set to Allow, but notify customer activated for the product in questions. You find this setting under Products  Your product  Inventory


To create a partial delivery you first need to have a WooCommerce order that is either status On hold or Processing.

On the WooCommerce order admin page the Delivery button will appear next to the Refund button.

Once this button has been clicked, you can select how many of each order line that you want to make a delivery of and also have the option to include the shipping line in this delivery or not. You will then be prompted with an alert box to confirm that you want to continue with this delivery. If you press ok this will reload the page and the delivery is added below in the deliveries metabox.

The delivery order is at this point saved to the database as its own post type in WooCommerce called shop_order_delivery, and the relevant order lines have been duplicated and adjusted and saved with the order as well. All customer data and order data is transferred over to the delivery order as well, and can later be used to complete the order with whatever payment gateway that can support it.
In the table, if there are more than 2 products in the order lines, then this will only display the first of them, with a more… link after. This link triggers the rest of the products to be displayed.

You also have two action buttons here that you can use. Complete and Remove. The Remove button will completely remove the delivery from the database, and you will be able to create a new delivery for the same product.
The Complete button is used to complete the delivery and set the delivery order status to Completed. This triggers the order management process for the order and the order is charged by the payment method, and the customer will receive an email.
When all part deliveries are completed the main order will be set to Complete.

Bulk actions

If you have several orders that you want to complete at the same time, the plugin does have support for Bulk actions. Simply check the orders you want to complete and choose Complete Deliveries in the Bulk actions dropdown menu.

If you bulk complete orders on the Orders page, and some of these have products on backorder, these orders will then get a new Delivery automatically created for the products that are in stock. The parent order will not be completed, but set as Partially Delivered.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.