Invoices for WooCommerce
by George Ciobanu 4.7 (469 reviews)

Invoices for WooCommerce

Automatically generate and attach customizable PDF Invoices and PDF Packing Slips for WooCommerce to emails.

Tested up to WP 6.7 (Current: 6.9)
v3.2.1 Current Version v3.2.1
Updated 11 months ago Last Update on 08 Feb, 2025
Synced 11 hours ago Last Synced on
Rank
#2,016
No change
Active Installs
10K+
-28.2%
KW Avg Position
101.7
+0.4 better
Downloads
702.4K
+29 today
Support Resolved
0%
No change
Rating
94%
Review 4.7 out of 5
4.7 (469 reviews)

Next Milestone 20K

Total Progress 36.4%
10K+ 20K+
516
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 6,355 more installs to reach 20K+

Rank Changes

1,911 1,963 2,014 2,065 2,117 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
1,910 1,962 2,014 2,065 2,117 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
1,907 1,959 2,012 2,064 2,116 21-12-2025 22-12-2025 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
2,000 2,005 2,011 2,016 2,021 22-10-2025 23-10-2025 24-10-2025 25-10-2025 26-10-2025 27-10-2025 28-10-2025 29-10-2025 30-10-2025 31-10-2025 01-11-2025 02-11-2025 03-11-2025 04-11-2025 05-11-2025 06-11-2025 07-11-2025 08-11-2025 09-11-2025 10-11-2025 11-11-2025 12-11-2025 13-11-2025 14-11-2025 15-11-2025 16-11-2025 17-11-2025 18-11-2025 19-11-2025 20-11-2025 21-11-2025 22-11-2025 23-11-2025 24-11-2025 25-11-2025 26-11-2025 27-11-2025 28-11-2025 29-11-2025 30-11-2025 01-12-2025 02-12-2025 03-12-2025 04-12-2025 05-12-2025 06-12-2025 07-12-2025 08-12-2025 09-12-2025 10-12-2025 11-12-2025 12-12-2025 13-12-2025 14-12-2025 15-12-2025 16-12-2025 17-12-2025 18-12-2025 19-12-2025 20-12-2025 21-12-2025 22-12-2025 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
Current #2,016
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

10 20 30 40 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
10 20 30 40 50 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
10 20 30 40 50 21-12-2025 22-12-2025 23-12-2025 24-12-2025 25-12-2025 26-12-2025 27-12-2025 28-12-2025 29-12-2025 30-12-2025 31-12-2025 01-01-2026 02-01-2026 03-01-2026 04-01-2026 05-01-2026 06-01-2026 07-01-2026 08-01-2026 09-01-2026 10-01-2026 11-01-2026 12-01-2026 13-01-2026 14-01-2026 15-01-2026 16-01-2026 17-01-2026 18-01-2026 19-01-2026 20-01-2026
10 20 30 40 50 60 22-10-2025 25-10-2025 28-10-2025 31-10-2025 03-11-2025 06-11-2025 09-11-2025 12-11-2025 15-11-2025 18-11-2025 21-11-2025 24-11-2025 27-11-2025 30-11-2025 03-12-2025 06-12-2025 09-12-2025 12-12-2025 15-12-2025 18-12-2025 21-12-2025 24-12-2025 27-12-2025 30-12-2025 02-01-2026 05-01-2026 08-01-2026 11-01-2026 14-01-2026 17-01-2026 20-01-2026
0 500 1K 1.5K 2K 2.5K 3K 3.5K 20-01-2025 01-02-2025 13-02-2025 25-02-2025 09-03-2025 21-03-2025 02-04-2025 14-04-2025 26-04-2025 08-05-2025 20-05-2025 01-06-2025 13-06-2025 25-06-2025 07-07-2025 19-07-2025 31-07-2025 12-08-2025 24-08-2025 05-09-2025 17-09-2025 29-09-2025 11-10-2025 23-10-2025 04-11-2025 16-11-2025 28-11-2025 10-12-2025 22-12-2025 03-01-2026 15-01-2026 20-01-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

4.7
469 reviews
Overall 94%
5
410 (87%)
4
31 (7%)
3
7 (1%)
2
6 (1%)
1
15 (3%)

Tracked Keywords

Showing 3 of 3
Keyword Position Change Type Updated
packing slips 59 Tag 12 hours ago
pdf invoices 87 Tag 12 hours ago
invoices 159 Tag 12 hours ago

Unlock Keyword Analytics

Track keyword rankings, search positions, and discover new ranking opportunities with a Pro subscription.

  • Full keyword position tracking
  • Historical ranking data
  • Competitor keyword analysis
Upgrade to Pro

Support Threads Overview

Resolved
Unresolved
2
Total Threads
0
Resolved
2
Unresolved
0%
Resolution Rate

Track This Plugin

Get detailed analytics, keyword tracking, and position alerts delivered to your inbox.

Start Tracking Free

Plugin Details

Version
3.2.1
Last Updated
Feb 08, 2025
Requires WP
0+
Tested Up To
6.7
PHP Version
7.4 or higher

Support & Rating

Rating
★ ★ ★ ★ ★ 4.7
Reviews
469
Support Threads
2
Resolved
0%

Keywords

Upgrade to Pro

Unlock keyword rankings, search positions, and detailed analytics with a Pro subscription.

Upgrade Now

Frequently Asked Questions

Common questions about Invoices for WooCommerce

Important: Before you update the plugin, always have a look at the Changelog if their have been any changes to the template files. There will be updates that require updating your custom template!
How to add a fee to the invoice?
To add a fee to WooCommerce and your invoice, simply add the following action to your themes functions.php.

function add_woocommerce_fee() {
global $woocommerce;

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;

$amount = 5;
$woocommerce->cart->add_fee( 'FEE_NAME', $amount, true, 'standard' );
}
add_action( 'woocommerce_cart_calculate_fees','add_woocommerce_fee' );
/**
* Hide order itemmeta on Invoices for WooCommerce' invoice template.
*
* @param array $hidden_order_itemmeta itemmeta.
*
* @return array
*/
function bewpi_alter_hidden_order_itemmeta( $hidden_order_itemmeta ) {
$hidden_order_itemmeta[] = '_wc_cog_item_cost';
$hidden_order_itemmeta[] = '_wc_cog_item_total_cost';
$hidden_order_itemmeta[] = '_subscription_interval';
$hidden_order_itemmeta[] = '_subscription_length';
// end so on..
return $hidden_order_itemmeta;
}
add_filter( 'bewpi_hidden_order_itemmeta', 'bewpi_alter_hidden_order_itemmeta', 10, 1 );
function custom_bewpi_mpdf_options( $options ) {
$options['mode'] = '';
$options['format'] = ''; // use [format]-L or [format]-P to force orientation (A4-L will be size A4 with landscape orientation)
$options['default_font_size'] = 0;
$options['default_font'] = 'opensans';
$options['margin_left'] = 14;
$options['margin_right'] = 14;
$options['margin_top'] = 14;
$options['margin_bottom'] = 0;
$options['margin_header'] = 14;
$options['margin_footer'] = 6;
$options['orientation'] = 'P'; // Also try to force with format option

return $options;
}
add_filter( 'bewpi_mpdf_options', 'custom_bewpi_mpdf_options' );

How to change the more advanced PDF options?
To fully customize the PDF, use below code. This filter gives you full control over the mPDF library. Check the mPDF manual for more info.

function bewpi_mpdf( $mpdf, $document ) {
// change the direction of the invoice to RTL
$mpdf->SetDirectionality( 'rtl' );

return $mpdf;
}
add_filter( 'bewpi_mpdf', 'bewpi_mpdf', 10, 2 );

How to display invoice download button on specific template files?
Add below code for example to your "thankyou" page or "customer-completed-order" email template.

echo do_shortcode( '[bewpi-download-invoice title="Download (PDF) Invoice {formatted_invoice_number}" order_id="' . $order->get_id() . '"]' );

For use in WordPress editor use below shortcode. This will only work if you replace "ORDER_ID" with an actual order id.

[bewpi-download-invoice title="Download (PDF) Invoice {formatted_invoice_number}" order_id="ORDER_ID"]

Note: Download button will only be displayed when PDF exists and order has been paid.
How to skip invoice generation based on specific payment methods?
Add the name of the payment method to the array.

function bewpi_attach_invoice_excluded_payment_methods( $payment_methods ) {
return array( 'bacs', 'cod', 'cheque', 'paypal' );
}
add_filter( 'bewpi_attach_invoice_excluded_payment_methods', 'bewpi_attach_invoice_excluded_payment_methods', 10, 2 );
function bewpi_skip_invoice_generation( $skip, $status, $order ) {
// Do your stuff based on the order.

return true; // True to skip.
}
add_filter( 'bewpi_skip_invoice_generation', 'bewpi_skip_invoice_generation', 10, 3 );

How to allow specific roles to download invoice?
Add the name of the role to the array. By default shop managers and administrators are allowed to download invoices.

function bewpi_allowed_roles_to_download_invoice($allowed_roles) {
// available roles: shop_manager, customer, contributor, author, editor, administrator
$allowed_roles[] = "editor";
// end so on..
return $allowed_roles;
}
add_filter( 'bewpi_allowed_roles_to_download_invoice', 'bewpi_allowed_roles_to_download_invoice', 10, 2 );
function alter_formatted_invoice_number( $formatted_invoice_number, $document_type ) {
if ( $document_type === 'invoice/global' ) { // 'simple' or 'global'.
// add M for global invoices.
return 'M' . $formatted_invoice_number;
}

return $formatted_invoice_number;
}
add_filter( 'bewpi_formatted_invoice_number', 'alter_formatted_invoice_number', 10, 2 );

How to add custom fields/meta-data to the PDF invoice template?
Use below code to display meta-data. Replace {META_KEY} with the actual key. If you use another plugin, just ask the key from the author of that plugin.

<?php echo BEWPI()->templater()->get_meta( '{META_KEY}' ); ?>

Important: A custom template is required to add a custom field to the PDF invoice.
How to use a different template based on some order variable?
Use below code to use a different template based on WPML order language. You can for example change the function to use a different template based on the payment method instead.

/**
* Change template based on WPML order language.
* Make sure to create custom templates with the correct names or the templates won't be found.
*
* @param string $template_name template name.
* @param string $template_type template type like global or simple.
* @param int $order_id WC Order ID.
*
* @return string
*/
function change_template_based_on_order_language( $template_name, $template_type, $order_id ) {
$order_language = get_post_meta( $order_id, 'wpml_language', true );

if ( false === $order_language ) {
return $template_name;
}

switch ( $order_language ) {
case 'en':
$template_name = 'minimal-en';
break;
case 'nl':
$template_name = 'minimal-nl';
break;
}

return $template_name;
}
add_filter( 'wpi_template_name', 'change_template_based_on_order_language', 10, 3 );
/**
* Add PDF invoice information meta (from third party plugins).
*
* @param array $info Invoice info meta.
* @param BEWPI_Invoice $invoice Invoice object.
* @since 2.9.8
*
* @return array.
*/
function add_invoice_information_meta( $info, $invoice ) {
$payment_gateway = wc_get_payment_gateway_by_order( $invoice->order );

// Add PO Number from 'WooCommerce Purchase Order Gateway' plugin.
if ( $payment_gateway && 'woocommerce_gateway_purchase_order' === $payment_gateway->get_method_title() ) {
$po_number = WPI()->get_meta( $invoice->order, '_po_number' );
if ( $po_number ) {
$info['po_number'] = array(
'title' => __( 'Purchase Order Number:', 'woocommerce-pdf-invoices' ),
'value' => $po_number,
);
}
}

// Add VAT Number from 'WooCommerce EU VAT Number' plugin.
$vat_number = WPI()->get_meta( $invoice->order, '_vat_number' );
if ( $vat_number ) {
$info['vat_number'] = array(
'title' => __( 'VAT Number:', 'woocommerce-pdf-invoices' ),
'value' => $vat_number,
);
}

return $info;
}
add_filter( 'wpi_invoice_information_meta', 'add_invoice_information_meta', 10, 2 );
/**
* Change invoice date to order date in order to regenerate old invoices and keep the date.
*
* @param string $invoice_date date of invoice.
* @param BEWPI_Abstract_Invoice $invoice invoice object.
*
* @return string needs to be in mysql format.
*/
function change_invoice_date_to_order_date( $invoice_date, $invoice ) {
// get_date_paid() or get_date_created().
$date_completed = $invoice->order->get_date_completed();
if ( null !== $date_completed ) {
return $date_completed->date( 'Y-m-d H:i:s' );
}

return $invoice_date;
}
add_filter( 'wpi_invoice_date', 'change_invoice_date_to_order_date', 10, 2 );

How to update the PDF invoice when it already has been sent to the customer?
Since version 2.9.4 the plugin removed the ability to update the PDF invoice when it already has been sent to the customer. If in what manner you still want to update the invoice, you can do so by resetting a custom field.

Go to Edit Order page.
Change custom field 'bewpi_pdf_invoice_sent' value within custom field widget to 0.
Refresh page and Update button will appear.

Sign In / Register

You need to sign in or register to use this feature.