Print invoices and delivery notes for WooCommerce orders.
You can print out invoices and delivery notes for the WooCommerce orders. You can also edit the Company/Shop name, Company/Shop postal address and also add personal notes, conditions/policies (like a refund policy) and a footer imprint.
The plugin adds a new side panel on the order page to allow shop administrators to print out the invoice or delivery note. Registered customers can also print their order with a button that is added to the order screen.
Support can take place in the public support forums, where the community can help each other out.
If you have a patch, or stumbled upon an issue with the source code that isn’t a WooCommerce issue, you can contribute this back on GitHub.
When your language is missing you can contribute a translation to the GitHub repository.
Some of our Pro plugins:
Some of our other free plugins:
Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of WooCommerce, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.
In the search field type “WooCommerce Print Invoice” and click Search Plugins. Once you’ve found the plugin you can view details about it such as the the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.
The manual installation method involves downloading the plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains instructions on how to do this here.
You can find an option in the print window of your browser to hide those. This is a browser specific option that can’t be controlled by the plugin. Please read the browser help for more information.
Your browser is to old to create the page breaks correctly. Try to update it to the latest version or use another browser.
It depends on your WooCommerce settings. Addresses are displayed the same way as on the WooCommerce account page. Only one address is printed in case you disabled alternative shipping addresses or the whole shipping. In all other cases both addresses are shown.
This is most probably due to the permalink settings. Go either to the WordPress Permalink or the WooCommerce Print Settings and save them again.
If that didn’t help, go to the WooCommerce ‘Accounts’ settings tab and make sure that for ‘My Account Page’ a page is selected.
You can change the font with CSS. Use the wcdn_head
hook and then write your own CSS code. It’s best to place the code in the functions.php
file of your theme.
An example that changes the font and makes the addresses very large. Paste the code in the functions.php
file of your theme:
function example_serif_font_and_large_address() { ?> <style> #page { font-size: 1em; font-family: Georgia, serif; } .order-addresses address { font-size: 2.5em; line-height: 125%; } </style> <?php } add_action( 'wcdn_head', 'example_serif_font_and_large_address', 20 );
Sure, the easiest way is to hide them with some CSS that is hooked in with wcdn_head
.
An example that hides the whole price column and the totals. Paste the code in the functions.php
file of your theme:
function example_price_free_delivery_note() { ?> <style> .delivery-note .head-item-price, .delivery-note .head-price, .delivery-note .product-item-price, .delivery-note .product-price, .delivery-note .order-items tfoot { display: none; } .delivery-note .head-name, .delivery-note .product-name { width: 50%; } .delivery-note .head-quantity, .delivery-note .product-quantity { width: 50%; } .delivery-note .order-items tbody tr:last-child { border-bottom: 0.24em solid black; } </style> <?php } add_action( 'wcdn_head', 'example_price_free_delivery_note', 20 );
Sure, you can style with CSS, very much the same way as the delivery note or invoice.
An example that hides the addresses. Paste the code in the functions.php
file of your theme:
function example_address_free_receipt() { ?> <style> .content { padding: 4% 6%; } .company-address, .order-addresses { display: none; } .order-info li span { display: inline-block; float: right; } .order-thanks { margin-left: inherit; } </style> <?php } add_action( 'wcdn_head', 'example_address_free_receipt', 20 );
Yes, use the wcdn_order_info_fields
filter hook. It returns all the fields as array. Unset or rearrange the values as you like.
An example that removes the ‘Payment Method’ field. Paste the code in the functions.php
file of your theme:
function example_removed_payment_method( $fields ) { unset( $fields['payment_method'] ); return $fields; } add_filter( 'wcdn_order_info_fields', 'example_removed_payment_method' );
Use the wcdn_order_info_fields
filter hook. It returns all the fields as array. Read the WooCommerce documentation to learn how you get custom checkout and order fields. Tip: To get custom meta field values you will most probably need the get_post_meta( $order->get_id(), 'your_meta_field_name', true);
function and of course the your_meta_field_name
.
An example that adds a ‘VAT’ and ‘Customer Number’ field to the end of the list. Paste the code in the functions.php
file of your theme:
function example_custom_order_fields( $fields, $order ) { $new_fields = array(); if( get_post_meta( $order->get_id(), 'your_meta_field_name', true ) ) { $new_fields['your_meta_field_name'] = array( 'label' => 'VAT', 'value' => get_post_meta( $order->get_id(), 'your_meta_field_name', true ) ); } if( get_post_meta( $order->get_id(), 'your_meta_field_name', true ) ) { $new_fields['your_meta_field_name'] = array( 'label' => 'Customer Number', 'value' => get_post_meta( $order->get_id(), 'your_meta_field_name', true ) ); } return array_merge( $fields, $new_fields ); } add_filter( 'wcdn_order_info_fields', 'example_custom_order_fields', 10, 2 );
Yes, use the wcdn_order_item_before
action hook. It allows you to add html content before the item name.
An example that adds a 40px large product image. Paste the code in the functions.php
file of your theme:
function example_product_image( $product ) { if( ( '' !== $product->get_id() ) && has_post_thumbnail( $product->get_id() ) ) { echo get_the_post_thumbnail( $product->get_id(), array( 40, 40 ), array( 'loading' => false ) ); } } add_action( 'wcdn_order_item_before', 'example_product_image' );
The body
tag contains a class that specifies the template type. The class can be invoice
or delivery-note
. You can prefix your style rules to only target one template. For example you could rise the font size for the addresses on the right side:
.invoice .billing-address { font-size: 2em; } .delivery-note .shipping-address { font-size: 2em; }
You can use the techniques from the questions above. Or you consider the wcdn_head
hook to enqueue your own stylesheet. Or for full control, copy the file style.css
from woocommerce-delivery-notes/templates/print-order
to yourtheme/woocommerce/print-order
and start editing it.
Note: Create the woocommerce
and print-order
folders if they do not exist. This way your changes won’t be overridden on plugin updates.
Well, first try it with CSS and some filter/action hooks, maybe the questions above can help you. If this isn’t enough, you are free to edit the HTML and CSS of the template. Consider this solution only, if you really know some HTML, CSS and PHP! Most probably you want to edit the print-content.php
and style.css
. Copy the files from woocommerce-delivery-notes/templates/print-order
to yourtheme/woocommerce/print-order
and start editing them.
Note: Create the woocommerce
and print-order
folders if they do not exists. This way your changes won’t be overridden on plugin updates.
Unfortunately there isn’t yet. But you can look directly at the template files to see what is available.
You can use the functions from WordPress, WooCommerce and every installed plugin or activated theme. You can find all plugin specific functions in the wcdn-template-functions.php
file. In addition the $order
variable in the template is just a normal WC_Order
instance.
No, this isn’t possible. Look for another plugin that can do this.
The plugin uses the exact same content as WooCommerce. If the content isn’t available in WooCommerce, then it will neither be in the delivery note and invoice. In case you have some special needs, you first have to enhance WooCommerce to solve your issue. Afterwards you can integrate the solution into the invoice and delivery note template via hooks.
Upload your language file to /wp-content/languages/plugins/
(create this folder if it doesn’t exist). WordPress will then load the language. Make sure you use the same locale as in your configuration and the correct plugin locale i.e. woocommerce-delivery-notes-it_IT.mo/.po
.
Please contribute your translation to include it in the distribution.
This release contains a major update for the plugin, focusing primarily on the all-new backend user interface, along with several bug fixes.
Major Updates:
Bug fixes :
Enhancement :- Added an option to insert the print link in the admin emails.
Fix :- Strings of Bulk Printing options were not getting translated. This is fixed now. Props to @pomegranate
Fix :- Finnish language locale name was incorrect. This is fixed now.
Fix :- Custom fields on WooCommerce product page from Product Input Fields for WooCommerce plugin were not coming in the invoice. This is fixed now.
Fix :- The BULK printing options of WooCommerce DYMO Print (PRO version) stopped working after installing our Print invoices plugin. This has been fixed. Props to @pepbc
Tweak :- In FAQ page changed the code snippet to add the products image in the invoice.
This version has 1 bug fix.
Fix – PHP short tag was inadvertently added in the plugin in v4.4, which was causing an error. This has been fixed.
This version has 1 bug fix.
Fix – Earlier with WooCommerce Local Pickup Plus v2.x.x, pickup locations were not displayed on the invoices, delivery notes & receipts. Now, the plugin is compatible with it and it will display the pickup locations.
Code Enhancement – Now, the plugin has the uninstall file for deleting the plugin options.
Fix – The unwanted attributes from products were getting displayed in the invoice.
Fix – Notice of deprecated function get_item_downloads() in the invoice for downloadable products.
In this version deprecated functions and classes have been removed. Because of that attributes were missing and attribute slug was getting printed on Invoice page. This has been fixed.
Fix – There was no line break before SKU element for variable products on Invoice page. This has been fixed.
Fix – The deprecated function WC_Order::get_order_currency has been removed and replaced with get_currency().
This version has 1 bug fix.
Fix – The attributes of variable product were not displayed with the variation name in the Print screen. This has been fixed.
This version has 1 bug fix.
Fix – Warnings were displayed on My Account, Checkout, Orders page with WooCommerce version 3.0.x. This has been fixed.
Note: The template was modified. Please check your print-content.php if you copied it to your theme directory.
Note: Template changes had to be made. Please control your template after the update in case you applied some custom styling.
Known issue: Printing won’t work when your account uses SSL and the rest of the page doesn’t. The issue will be fixed in a future version.
Attention: This update works only with WooCommerce 2.1 (or later) and WordPress 3.8 (or later). Install it only if your system meets the requirements.