Personalise your invoices by including details about your store. Printable Invoices supports the following invoice personalisations:

  • Store logo
  • Store address (street, city, state, postcode, country)
  • Store phone
  • Invoice header
  • Invoice message
  • Footer header
  • Footer logo
  • Footer message (e.g. Thank you for shopping with us!)
  • Show/hide template details

As well as standard order details:

  • Order date
  • Order #
  • Order checkout details
  • Product name
  • Product SKU
  • Product quantity
  • Product shipping price
  • Product tax (with Tax included)
  • Total discount
  • Total tax
  • Total shipping
  • Total price
  • Sale notes

WP e-Commerce Compatibility

  • WP e-Commerce 3.7 ready (up to 3.7.8)
  • WP e-Commerce 3.8 ready (up to 3.9.*)


The latest release can be downloaded from your My Account page.


Looking for support, a copy of the readme, Plugin updates, Ideas or usage instructions? Check out our Documentation for Printable Invoices.

197 thoughts on “Printable Invoices

  1. Hello, I just installed this on the newest version of WPEC. Invoices look much better than stock. I’ve found two minor issues I hope you can help address to make this work properly.

    1 – WPEC is still sending generic invoice even though I ticked “Replace WP e-Commerce Purchase Receipt”. Sends both invoices.

    2 – When I click “Resend Receipt to Buyer” it sends the general/basic invoice, not the Printable version.

    Bonus- When I try to include %session_id% it does not show. May be a nice inclusion for next update.

    Thank you!

  2. Purchased your plugin thinking it would send the invoice to both admin and the customer.

    I ticked “Replace WP e-Commerce Purchase Receipt”

    The customer still gets the default wp ecommerce receipt (and not the printable invoice version) and the admin gets both the wp ecommerce receipt and the printable invoice plugin receipt (which shows all of the html code so is impossible to read).

    Can you please help me fix????

  3. Hi there Michael,

    Since upgrading to your most recent plugin (1.6.3) and the latest WP-Ecommerce (, I am now getting the following error:

    Fatal error: Cannot use object of type stdClass as array in /home/buyfenci/public_html/wp-content/plugins/wp-e-commerce-printable-invoices/includes/functions.php on line 291

    Any ideas? Loved the plugin up till this problem – Does the plugin need an update for the new WPEC perhaps?

    With thanks,

  4. I’ve send a e-mail to the support twice now but have not had a single answer so far. So i’ll ask here.

    I am looking to add the order id to the e-mail subject. This is a absolute must!

    Hope so find a answer.

  5. Sorry if this has been asked before, but you have quite a bit of messages. :)

    1. Can this plugin be updated via the backend of the admin site? Or must I log in to your website, input session ID, to update your plugin?

    2. I would like to made my purchase receipt look better, can the styled invoices from this plugin completely replace the plain text purchase receipt?


  6. I managed to fix that problem with this:
    in functions.php (of this plugin) find the line that says:
    wp_mail( $email, wpsc_pi_email_subject(), $output );
    and change it to this:
    if ( ! get_transient( “{$sessionid}_pending_email_sent” ) ) {
    wp_mail( $email, wpsc_pi_email_subject(), $output );

    I also had some issues with this plugin and it’s incompatibility with wp-ajax as wp-ajax functions live in the admin area and this plugin wraps everything with an is_admin() check.

    I got around this by changing the is_admin() checks to this:
    if( is_admin() && !(!empty($_SERVER[‘HTTP_X_REQUESTED_WITH’]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’) ) { …. }

    Hopefully this helps somebody.

    I also had to fix a bunch of stuff that shouldn’t be included in the emails, because this plugin just prints out every checkout form (regardless if it was the one used at checkout). I fixed that by changing the /template/store/wpsc-printable_invoice.php file. I don’t remember exactly what the lines were before i changed what i did, but basically i wrapped one section with a conditional statement to make sure it only printed out the main checkout forms set (0) and not all of them.

    It looks like this now:
    if($form_field[‘checkout_set’] == 0){ ?>
    <tr id=”form_uniquename-” class=”form-default field_type-“>


    Hopefully this helps somebody. I really hate having to hack my wordpress plugins but this plugin didn't really leave any room for not doing that (a couple filters or hooks, or add actions would be great!) Or perhaps you could consider implementing my changes?


    • Adrian,

      It is beyond me why some of you guys even bother to continue to use WPEC, it seems always so full of bugs every time. I always ask for support there, and quite often never get replies. I have since moved to WooCommerce as support is steaming ahead on nearly every question. I simply purchased the plugin that Agus built to import all your products to WooCommerce from WPEC. I never looked back.
      Besides, the variations and tax work flawlessly, and the printable invoices are exquisite to the point they don’t need to be hacked. Just thought I would add this comment as I was getting sick of always looking for fixes and workarounds for WPEC.
      Every week there is something new in WooCommerce, it makes WPEC look quite useless. Then again these are just my thoughts. I get all excited when I talk about Woo, not too sure why, but it gives me the warm fuzzies ;)

    • Hi Adrian, thanks for the contribution. I’ve added your patch for duplicate e-mails, I had left ‘all’ Checkout fields appearing intentionally as some Plugin users use alternate Checkout sets. For now I’ve set the default Checkout Set to 0 and will add an override in a future Plugin update for those using alternate Checkout sets. You can remove your template change to limit Checkout sets as this is done within the logic side of the Plugin.

      Regarding the AJAX requests, I’m playing with this now and will likely use a custom conditional function for this (e.g. wpsc_pi_is_ajax_or_admin() ) in the interim. I’ll push out an urgent Plugin update with the above mentioned items then focus on adding support for other e-mail templates within WP e-Commerce (e.g. Admin Report, Custom Message, etc.)

  7. Hello,

    after the update 3.8.8 of WP-Ecommerce the printable invoice plugin only shows me “This users cart was empty”… would you please fix the compability issue asap… your plugin is part of my daily routine, so I really need it ;)


    • Hi Raffaele, pushing out an urgent Plugin update that adds support for WP e-Commerce 3.8.8 RC2 and above. The Core team changed a simple variable for no other reason than to annoy us… expect a Plugin update shortly. :P

    • Hi Matt, I’m putting together a Post to explain the changes, in summary the template markup mostly remains the same with the logic now separated from the template. In the meantime feel free to send your customised template to me and I’ll send you back the adjusted copy. :)

    • Hi frank, all payment gateways generate a Purchase Receipt for each Sale this Plugin simply intercepts this and replaces it with our own Purchase Receipt. :)

      Printable Invoices uses POT translation files but I’ll be adding additional text fields under Settings > Printable Invoices to replace template labels with your own personalised copy (e.g. Tax to GST, Invoice Total to Estimate Total, etc.).

  8. I’d like to purchase this plugin but would like to know, is it possible to rearrange the template? Are the fields independent and can they be positioned where needed?

    For example, I’d like to arrange the layout so that the billing address and delivery address are besides eachother.


      • Hi Cody, while support for side-by-side layout is now supported you will need to add an if() statement based on the unique ID of the checkout column. If you can e-mail me a detailed description of what you’re after I’ll put a tutorial together or better yet make it a feature for all within the next Plugin update. :)

        • Thanks Michael

          In terms of the side by side, I can happily wait :)

          I had another question (which if its possible – I’ll end up buying straight away) is, is it possible to add a link within the php file which pulls the shipping postcode into the file?

          So that in the code there is:

          which would come out like


          • Hi Cody, I did impliment Google Map support but looking at the current release it’s been commented out. The best way I think to do it is let you fill the ‘data type’ that Google Maps looks for, e.g. there’ll be a checkbox to enable Google Maps and a text field that accepts tags.

            For instance: %shipping_postcode% will use the shipping postcode from Checkout for the Google Maps data.

            I’ll get this in the next major Plugin update.

  9. Hi Michael

    How are things progressing with customising the invoice template, you hinted back in early December that you had a few plans that would be out soon but havent said much since? Because of the two addresses in a single line format, at the moment Im having to scale my invoices when I print so it doesnt roll the footer etc onto a second page once I have more than about 4 items on the invoice, which is a pain. Even if I could remove the shipping address completely that would be a good start?


    • Micheal, I hope all is well as we don’t seem to have had any updates or comments from you on here since around the middle of January, and a quick scan of other areas of the site suggest you’ve not posted anywhere since the end of January?

    • Hi Chris, I’m testing the 1.5.7 Plugin update this weekend adding side-to-side layout for Checkout form fields as well as the default vertical column as it displays now. From here I’ll add visibility controls to show/hide Checkout form items from the Invoice (e.g. hide shipping address, etc.) which will go a long way for store owners wishing to further customise the body of the invoice.


    Ok guys, i think i finally nailed it!

    The /wpsc-theme/functions/wpsc-transaction_results_functions.php file has the following code at line ~364:
    $message = apply_filters('wpsc_email_message', $message, $report_id, $product_list, $total_tax, $total_shipping_email, $total_price_email);

    The Printable Invoices will replace the wpsc_email_message with your custom invoice, but for some reason the set_transient( $sessionid . '_pending_email_sent', true, 60 * 60 * 12 ); and set_transient( $sessionid . '_receipt_email_sent', true, 60 * 60 * 12 ); seems not to be working.

    If you remove the $message=apply_fiters[etc] from line ~364 and put it in the if/else loop, the problem is gone.


Leave a Comment

Can I send an invoice along with the Purchase Receipt sent to the customer?

Sure can, support for sending a Printable Invoice along with the Purchase Receipt at Checkout has been added in the 1.5.2 Plugin update. You can even replace the standard WP e-Commerce Purchase Receipt with Printable Invoices if you choose to.

Can the styled invoices from this plugin completely replace the plain text purchase receipt?

Sure can. Please find the “Replace Purchase Receipt…” option under Settings > Printable Invoices. This will replace the default WP e-Commerce Purchase Receipt template with the one you view via Dashboard > Manage Sales.

Printable Invoices comes with a Quick Start document (readme.txt) to help with installing the Plugin. Additional support can be found from the Contact page or methods below.

Urgent Support

If you find yourself needing immediate support for your purchase use the Premium Support page or Live Support button.

Printable Invoices Forum

If you have any problems, questions or suggestions please join the members discussion on our Printable Invoices forum.

Recent Topics (10)