{"id":319074,"date":"2026-05-31T11:40:19","date_gmt":"2026-05-31T11:40:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ninja-pdf-invoices-packing-slips\/"},"modified":"2026-05-31T11:39:50","modified_gmt":"2026-05-31T11:39:50","slug":"ninja-docsmith-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ninja-docsmith-for-woocommerce\/","author":20627914,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.0","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"NINJA Docsmith for WooCommerce","header_author":"ninja.si","header_description":"Generate branded PDF invoices and packing slips for WooCommerce orders, attach invoices to order emails, and print or download from the admin.","assets_banners_color":"f4ecd8","last_updated":"2026-05-31 11:39:50","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ninja.si\/plugins\/ninja-docsmith-for-woocommerce","header_author_uri":"https:\/\/ninja.si","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.0":{"tag":"1.4.0","author":"sstucl","date":"2026-05-31 11:39:50"}},"upgrade_notice":{"1.4.0":"<p>Bundled FPDF library is now prefixed (<code>Ninjapdf_FPDF<\/code>) so it cannot conflict with any other plugin&#039;s copy.<\/p>","1.3.0":"<p>Safer FPDF loading (avoids conflicts when another plugin also bundles FPDF).<\/p>","1.2.0":"<p>Adds color and footer customization for the PDF documents.<\/p>","1.1.0":"<p>Adds a one-click preview of a sample invoice and packing slip on the settings screen.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3555457,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3555457,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3555457,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3555457,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Invoice PDF \u2014 company block, billing address, line-items table with tax and totals, and sequential invoice number.","2":"Settings page \u2014 company details, logo URL, invoice numbering, and email attachment selection."}},"plugin_section":[],"plugin_tags":[16236,16281,51080,57399,286],"plugin_category":[45],"plugin_contributors":[264287],"plugin_business_model":[],"class_list":["post-319074","plugin","type-plugin","status-publish","hentry","plugin_tags-invoices","plugin_tags-orders","plugin_tags-packing-slip","plugin_tags-pdf-invoice","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sstucl","plugin_committers-sstucl"],"banners":{"banner":"https:\/\/ps.w.org\/ninja-docsmith-for-woocommerce\/assets\/banner-772x250.png?rev=3555457","banner_2x":"https:\/\/ps.w.org\/ninja-docsmith-for-woocommerce\/assets\/banner-1544x500.png?rev=3555457","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ninja-docsmith-for-woocommerce\/assets\/icon-128x128.png?rev=3555457","icon_2x":"https:\/\/ps.w.org\/ninja-docsmith-for-woocommerce\/assets\/icon-256x256.png?rev=3555457","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>NINJA Docsmith for WooCommerce<\/strong> gives your WooCommerce store professional, sequentially numbered PDF documents \u2014 entirely on your own server, with no cloud dependency.<\/p>\n\n<p><strong>Invoice PDF<\/strong> \u2014 contains your company logo, name, address and tax\/VAT details; the customer's billing address; a line-items table with unit prices, quantities, subtotals, shipping, tax, discounts and a bold total row; and the payment method. Every invoice receives a persistent sequential number (e.g. INV-00042) that is stored on the order so it never changes on regeneration.<\/p>\n\n<p><strong>Packing Slip PDF<\/strong> \u2014 a price-free pick\/pack document showing the shipping address, item names, quantities, and the chosen shipping method. Ideal for warehouse staff.<\/p>\n\n<p><strong>Email attachment<\/strong> \u2014 choose which WooCommerce emails (Completed Order, Processing Order, Customer Invoice, New Order, or any other) should automatically include the invoice PDF as an attachment. The PDF is generated on the fly and attached before the email is sent.<\/p>\n\n<p><strong>Admin download &amp; print<\/strong> \u2014 every order row gains two action links (\"Invoice PDF\" and \"Packing Slip PDF\") that stream the document inline so you can view or print it directly from the browser. A bulk action (\"Download Invoice PDFs\") lets you grab a ZIP of invoices for multiple selected orders at once.<\/p>\n\n<p><strong>Settings<\/strong> (under WooCommerce \u2192 PDF Invoices):<\/p>\n\n<ul>\n<li>Company name, address, and tax\/VAT\/registration details printed in the document header<\/li>\n<li>Optional logo \u2014 paste the URL of any JPEG or PNG from your media library<\/li>\n<li>Invoice number prefix (e.g. \"INV-\") and configurable starting number<\/li>\n<li>Checkboxes for which WC email notifications should carry the invoice attachment<\/li>\n<\/ul>\n\n<p><strong>Compatibility<\/strong> \u2014 HPOS-safe (Custom Order Tables supported), tested on WordPress 6.8\u20137.0 and WooCommerce 8.0+. Requires PHP 7.4 or later.<\/p>\n\n<p><strong>Privacy<\/strong> \u2014 the plugin makes <strong>zero<\/strong> external requests during normal operation. PDF generation runs entirely on your server. The only optional network call is the consent-gated \"NINJA Updates\" subscription (see below).<\/p>\n\n<h4>Third-party library: FPDF<\/h4>\n\n<p>This plugin bundles <strong>FPDF 1.86<\/strong> by Olivier PLATHEY (http:\/\/www.fpdf.org). FPDF is free software distributed under a permissive licence that permits free use for any purpose, commercial or not, with no attribution required. The library is included as a single PHP file (<code>includes\/lib\/fpdf.php<\/code>) with no Composer or external autoloader needed.<\/p>\n\n<h3>Stay updated (optional)<\/h3>\n\n<p>The settings screen has an optional \"NINJA Updates\" card: tick the consent box and enter your email to hear about plugin updates and new NINJA modules. Nothing is sent unless you submit that form. You can unsubscribe with one click at any time.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong>, search for \"NINJA Docsmith for WooCommerce\", and click <strong>Install Now<\/strong> \u2014 or upload the ZIP under <strong>Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Click <strong>Activate<\/strong>.<\/li>\n<li>Open <strong>WooCommerce \u2192 PDF Invoices<\/strong>, fill in your company details and logo, choose which emails should attach the invoice, and click <strong>Save Changes<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20make%20any%20external%20requests%3F\"><h3>Does it make any external requests?<\/h3><\/dt>\n<dd><p>Not during normal operation. Everything the plugin does \u2014 PDF generation, email attachment, admin download \u2014 runs inside your own WordPress install. The single exception is the optional \"NINJA Updates\" card: only if you tick its consent box and submit your email does the plugin contact ninja.si. Leave it alone and nothing is ever sent.<\/p><\/dd>\n<dt id=\"how%20are%20invoice%20numbers%20assigned%3F\"><h3>How are invoice numbers assigned?<\/h3><\/dt>\n<dd><p>Each order receives a unique, sequential invoice number the first time its invoice is generated. The number (e.g. INV-00042) is saved on the order so it stays the same no matter how many times the document is regenerated. You can set the prefix and starting number under WooCommerce \u2192 PDF Invoices \u2192 Invoice Numbering.<\/p><\/dd>\n<dt id=\"which%20emails%20can%20carry%20the%20invoice%20attachment%3F\"><h3>Which emails can carry the invoice attachment?<\/h3><\/dt>\n<dd><p>Any WooCommerce email can be selected in the \"Email Attachments\" section. By default the Completed Order email is pre-selected. Tick as many as your workflow requires.<\/p><\/dd>\n<dt id=\"what%20is%20a%20packing%20slip%20and%20how%20does%20it%20differ%20from%20an%20invoice%3F\"><h3>What is a packing slip and how does it differ from an invoice?<\/h3><\/dt>\n<dd><p>A packing slip is a warehouse document: it shows the shipping address, item names, and quantities but <strong>no prices<\/strong>. It is intended for the person packing the box, not the customer. Download it from the order row action \"Packing Slip PDF\" \u2014 it is not emailed automatically (you can email an invoice instead).<\/p><\/dd>\n<dt id=\"is%20this%20compatible%20with%20woocommerce%20hpos%20%28custom%20order%20tables%29%3F\"><h3>Is this compatible with WooCommerce HPOS (Custom Order Tables)?<\/h3><\/dt>\n<dd><p>Yes. The plugin fetches orders exclusively via <code>wc_get_order()<\/code> and <code>wc_get_orders()<\/code>, which are HPOS-safe WooCommerce APIs. HPOS compatibility is declared to WooCommerce at load time so no warnings appear in the WooCommerce \u2192 Features screen.<\/p><\/dd>\n<dt id=\"can%20i%20bulk-download%20invoices%20for%20multiple%20orders%3F\"><h3>Can I bulk-download invoices for multiple orders?<\/h3><\/dt>\n<dd><p>Yes. On the Orders list, tick the orders you want, choose \"Download Invoice PDFs\" from the bulk-actions dropdown, and click Apply. The plugin generates all selected invoices and streams them as a single ZIP file.<\/p><\/dd>\n<dt id=\"where%20do%20i%20configure%20it%3F\"><h3>Where do I configure it?<\/h3><\/dt>\n<dd><p>Under <strong>WooCommerce \u2192 PDF Invoices<\/strong>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Fix: Prefixed the bundled FPDF class (now <code>Ninjapdf_FPDF<\/code>) and its version constant so the library can never clash with another plugin's copy of FPDF, regardless of load order.<\/li>\n<li>Internal: Renamed plugin slug, folder, main file and text domain to <code>ninja-docsmith-for-woocommerce<\/code> for the WordPress.org submission.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Fix: Guard the bundled FPDF include with <code>class_exists( 'FPDF' )<\/code> to prevent \"cannot redeclare class\" fatals when another plugin loads its own copy of FPDF first.<\/li>\n<li>Internal: Renamed under a new, distinctive slug for the WordPress.org directory.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: Document Design settings \u2014 accent color, header\/table color (color pickers) and custom footer text, applied to invoices and packing slips. Check the result with the Preview buttons.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: \"Preview\" buttons on the settings screen generate a sample invoice and packing slip from your current settings (logo, company details, numbering) using placeholder data \u2014 so you can check the layout without a real order. No invoice number is consumed.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: invoice + packing slip generation via bundled FPDF 1.86, sequential numbering, email attachment filter, order row actions, bulk download.<\/li>\n<\/ul>","raw_excerpt":"Generate branded PDF invoices and packing slips for WooCommerce orders, attach to emails, and download or print from the admin.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/319074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=319074"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sstucl"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=319074"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=319074"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=319074"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=319074"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=319074"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=319074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}