This is an info Alert.
x402 Logo
  • Product
    • Become Agent-Ready
      • Merchants
        Agentic Commerce — list your store across ChatGPT, Gemini, Claude & Perplexity
      • Publishers
        Monetize your content when AI agents read, cite, or train on it
      • SaaS Companies
        Treat AI agents as first-class customers with agent-priced checkout
    • Monetize
      • Monetize MCP Server
        Charge per call on any MCP server in 2 minutes
      • Monetize AI Agents
        Turn n8n, Zapier, Activepieces workflows into revenue
      • Agent Feed
        Pay-per-query access to licensed publisher content for your agents
  • Resources
    • xpay Ecosystem
      • xpay✦ Tools
        1,000+ pay-per-use tools for your AI agents
      • Agent-Ready SaaS Index
        25,481 SaaS scored on agent-buyability
      • SaaS Pricing Database
        Pricing pages indexed across 1,000+ categories
      • Shopify Apps Directory
        Every Shopify app, with its full review history
      • WooCommerce Plugins Directory
        Every WooCommerce plugin, scored on how well it is maintained
      • GitHub
        Open source repositories
    • Agent Building
      • Agent Frameworks
        AI frameworks for building multi-agent systems
      • x402 Integration
        AI frameworks with x402 payment integration
      • Networks
        Blockchain networks supporting x402
    • Company
      • About xpay✦
        Our mission, products, and protocols
      • Blog
        Latest insights and updates
      • Docs
        Complete xpay documentation
  • Pricing
  • Blog
  • Docs
Get Started
  1. xpay✦ Commerce

  2. Directory

  3. WooCommerce plugins

  4. Invoices for WooCommerce

Invoices for WooCommerce

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

10K+ active installs
4.7
(469 ratings)
Free on WordPress.org
View on WordPress.orgSupport forum
Will this break my store?

What the WordPress.org registry says about keeping Invoices for WooCommerce running.

WordPress compatibility
Tested to 6.7.5 — 3 branches behind 7.0
A branch or two behind — normal for a plugin between releases.
Last updated
18 months ago
At least 8.5 releases a year since launch. WordPress.org only lists versions still available for download, so the real number may be higher.
Requires PHP
7.4
Your host must be running at least this version.
Requires WordPress
false
Requires other plugins
woocommerce
These must be installed and active first.
Contributors
2

10K+ active installsWordPress.org reports installs in bands, not exact counts.
Maintenance & trust

Scored on how Invoices for WooCommerce is looked after — not on how many stores run it.

56

out of 100
Mixed signalsSome ratings or support history.

Maintenance
15 / 35
Last update 1y ago.
WordPress compatibility
7 / 20
3 WP branches behind.
Support responsiveness
Not enough data
Only 1 support thread(s) — not enough to judge.
Merchant satisfaction
13 / 15
4.7/5 across 469 rating(s).
Listing transparency
10 / 10
Provides: screenshots, description, homepage
1 of 5 measures had too little evidence to score. They are left out of the total rather than counted as zero — otherwise a plugin would be marked down for being small rather than for being poorly kept.Measured 2026-08-01 from the WordPress.org plugin registry.
Ratings

4.7

469 ratings
5★410
4★31
3★7
2★6
1★15
Every rating WordPress.org holds for this plugin, not a sample. Written reviews live in the plugin's WordPress.org reviews forum.

Invoicing can be time consuming. Well, not anymore! Invoices for WooCommerce automates the invoicing process by generating and sending it to your customers.

This WooCommerce plugin generates PDF invoices and PDF packing slips, attaches it to WooCommerce email types of your choice and sends invoices to your customers’ Dropbox, Google Drive, OneDrive or Egnyte. Choose between multiple clean and customizable templates.

Main features

  • Automatic PDF invoice generation and attachment.
  • Manually create or delete PDF invoice.
  • Attach PDF invoice to multiple WooCommerce email types of your choice.
  • Generate PDF packing slips.
  • Connect with Google Drive, Egnyte, Dropbox or OneDrive.
  • Multiple clean and highly customizable PDF Invoice templates.
  • WooCommerce order numbering or built-in sequential invoice numbering.
  • Many invoice and date format customization options.
  • Advanced items table with refunds, discounts, different item tax rates columns and more.
  • Download invoice from My Account page.
  • Mark invoices as paid.

Invoices for WooCommerce Premium

This plugin offers a premium version which comes with the following features:

– Attach PDF invoices to many more email types including third party plugins
– Send credit notes and cancelled PDF invoices
– Fully customize PDF invoice table content by modifying line item columns and total rows
– Automatically send a reminder email configurable within a specific period of time and display a payment due date
– Bulk generate PDF invoices
– Bulk export and/or download PDF invoices
– Bill periodically by generating and sending global invoices
– Let customers decide to generate a PDF invoice on checkout
– Change the font of the PDF invoices
– Add additional PDF files to PDF invoices
– Send customer invoices directly to multiple recipients
– Compatible with WooCommerce Subscriptions plugin emails.

– Upgrade to Invoices for WooCommerce Premium >>

Support

Support can take place on the forum page, where we will try to respond as soon as possible.

Contributing

If you want to add code to the source code, report an issue or request an enhancement, feel free to use GitHub.

Translating

Contribute a translation on GitHub.

How to add your custom template?

Copy the default template files (including folder) you’ll find in plugins/woocommerce-pdf-invoices/includes/templates/invoice/simple to uploads/woocommerce-pdf-invoices/templates/invoice/simple. The plugin will automatically detect the template and makes it available for selection within the Template Settings. Now go ahead and start making some changes to the template files! 🙂

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' );

How to hide order item meta?

To hide order item meta from the invoice, simply add the following filter to your themes functions.php.

/**
 * 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 );

How to change the common PDF options?

To change the more common options of the PDF, use below example.

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 );

How to skip invoice generation in general?

Add below function to your themes ‘functions.php’ file.

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 );

How to alter formatted invoice number?

Add following filter function to your ‘functions.php’ within your theme.

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 );

How to add invoice information meta?

Use below code to add invoice information meta to the PDF invoice template.

/**
 * 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 );

How to change the invoice date?

Use below filter to change the invoice date.

/**
 * 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.

  1. Go to Edit Order page.
  2. Change custom field ‘bewpi_pdf_invoice_sent’ value within custom field widget to 0.
  3. Refresh page and Update button will appear.

Categories
Invoicing & accounting
Plugin details
Version3.2.1
Last updated2025-02-08 12:09pm GMT
Added2013-12-07
Requires WordPressfalse
Tested up to6.7.5
Requires PHP7.4

Tags on WordPress.org
invoices
packing slips
pdf invoices
woocommerce
Alternatives
Other plugins in the same categories.
PDF Invoices & Packing Slips for WooCommerce
300K+ installs
5.0(1,859)
WebToffee WooCommerce PDF Invoices, Packing Slips, Delivery Notes & Shipping Labels
50K+ installs
4.9(284)
Fattura24
500+ installs
4.9(96)
WebPlanex: GST Invoice India
400+ installs
5.0(34)
Printus – Automatic Cloud Printing for WooCommerce
800+ installs
5.0(26)
Print Invoice & Delivery Notes for WooCommerce
30K+ installs
4.4(137)
x402 Logo

The agent-readiness stack for the AI shopping era — helping merchants, publishers and SaaS companies get discovered, cited and transacted with by ChatGPT, Perplexity, Claude, Gemini and the custom shopping agents underneath them.

CompanyAgentically Inc. (d/b/a xpay✦)1875 Mission St, Ste 103San Francisco, CA 94103, United Stateslegal@xpay.sh · privacy@xpay.sh
or ask your AI app
Company
About xpayAgency PartnersGitHubDiscordllms.txt
DevelopersDocumentationAPI ReferenceSDKs & LibrariesQuickstart GuideOpenAPI Spec
Stay Updated
Occasional product updates and agent-readiness playbooks from xpay (Agentically Inc.) — typically a couple of emails a month. Double opt-in: we email you a link to confirm before sending anything, and every email has one-click unsubscribe.
Social
  • For Publishers
    • News
    • Finance
    • Dev / Tech
    • Travel
    • View all verticals
  • Agent Feed
    • AI Search Engines
    • RAG Builders
    • Browser Agents
    • Vertical Research
    • Browse full catalog
  • Agent-Ready Index
    • SaaS Pricing Database
    • Agent-Ready SaaS Index
    • Verified band
    • AI & ML
    • Sales & CRM
  • Products
    • Pricing Widget
    • Monetize MCP Server
    • Paywall
    • Smart Proxy
    • Monetize AI Agents
    • xpay x402 Facilitator
  • Agentic Economy
    • Timeline
    • Resources
    • Manifesto
    • Stack
  • Agentic Commerce
    • Get listed
    • ChatGPT Ads
    • How ChatGPT Ads work
    • ChatGPT Ads · Apparel
    • ChatGPT Ads · Health & Beauty
    • xpay Listings · Amazon + Google
    • Pricing
    • Free audit
    • Shopify
    • WooCommerce
    • Apparel & Accessories
    • Health & Beauty
    • Overview
  • Commerce Index
    • Shopify apps directory
    • Agentic Commerce Ready Index
    • Methodology
    • Pet brands · WooCommerce
    • Pet brands · Shopify
  • Marketplace
    • 🛍️ xpay.deals — agentic storefront for deals
  • Protocols
    • Overview
    • x402
    • MPP
    • UCP
    • ACP
    • AP2
    • TAP
    • A2A
  • Agent Frameworks
    • Overview
    • LangChain
    • CrewAI
    • Claude MCP
    • AutoGPT
    • LangChain vs Mastra
    • LangGraph vs Pydantic AI
  • Company
    • About xpay
    • Blog
    • Docs
    • GitHub
  • Free prompts
    • Ecommerce prompts
    • Email marketing prompts
    • Product description prompts
    • Facebook ad prompts
    • Skincare prompts
    • Supplement prompts
    • Wine prompts
    • Electronics prompts

© 2025 Agentically Inc. All rights reserved.
Privacy PolicyTerms of UseAcceptable Use Policy