{"id":270053,"date":"2025-12-31T19:05:34","date_gmt":"2025-12-31T19:05:34","guid":{"rendered":"https:\/\/en-gb.wordpress.org\/plugins\/kitgenix-pdf-invoicing-for-woocommerce\/"},"modified":"2026-03-19T10:27:56","modified_gmt":"2026-03-19T10:27:56","slug":"kitgenix-pdf-invoicing-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/nb.wordpress.org\/plugins\/kitgenix-pdf-invoicing-for-woocommerce\/","author":23310025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.6","stable_tag":"1.0.6","tested":"7.0","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Kitgenix PDF Invoicing for WooCommerce","header_author":"Kitgenix","header_description":"Simple, modular PDF invoicing for WooCommerce orders.","assets_banners_color":"c2bcd4","last_updated":"2026-03-19 10:27:56","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/donate.stripe.com\/9B65kDgG3fTQ2Kzcmwf7i00","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/kitgenix-pdf-invoicing-for-woocommerce\/","header_author_uri":"https:\/\/kitgenix.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":395,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"kitgenix","date":"2025-12-31 19:06:14"},"1.0.1":{"tag":"1.0.1","author":"kitgenix","date":"2026-01-01 19:25:08"},"1.0.3":{"tag":"1.0.3","author":"kitgenix","date":"2026-01-06 11:26:33"},"1.0.4":{"tag":"1.0.4","author":"kitgenix","date":"2026-01-27 19:14:59"},"1.0.5":{"tag":"1.0.5","author":"kitgenix","date":"2026-02-19 22:31:17"},"1.0.6":{"tag":"1.0.6","author":"kitgenix","date":"2026-03-19 10:27:56"}},"upgrade_notice":{"1.0.6":"<p>Maintenance and compatibility update. Recommended for all sites.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3465420,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3465420,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3465420,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3465420,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.3","1.0.4","1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3430720,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3430720,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3430720,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3430720,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3430720,"resolution":"5","location":"assets","locale":""},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3430720,"resolution":"6","location":"assets","locale":""}},"screenshots":{"1":"Settings: branding, company details, prefixes, styles, colours, and email attachment mapping.","2":"WooCommerce order screen: admin meta box with download actions.","3":"Invoice HTML preview (template pack).","4":"Generated PDF invoice streamed in the browser.","5":"Credit note actions shown when refunds exist.","6":"Customer order view: Download Invoice \/ Credit Note buttons (when enabled)."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[16236,55959,1764,26411,286],"plugin_category":[45],"plugin_contributors":[246171],"plugin_business_model":[],"class_list":["post-270053","plugin","type-plugin","status-publish","hentry","plugin_tags-invoices","plugin_tags-packing-slips","plugin_tags-pdf","plugin_tags-receipts","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-kitgenix","plugin_committers-kitgenix"],"banners":{"banner":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/banner-772x250.png?rev=3465420","banner_2x":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/banner-1544x500.png?rev=3465420","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/icon-128x128.png?rev=3465420","icon_2x":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/icon-256x256.png?rev=3465420","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-1.png?rev=3430720","caption":"Settings: branding, company details, prefixes, styles, colours, and email attachment mapping."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-2.png?rev=3430720","caption":"WooCommerce order screen: admin meta box with download actions."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-3.png?rev=3430720","caption":"Invoice HTML preview (template pack)."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-4.png?rev=3430720","caption":"Generated PDF invoice streamed in the browser."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-5.png?rev=3430720","caption":"Credit note actions shown when refunds exist."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-6.png?rev=3430720","caption":"Customer order view: Download Invoice \/ Credit Note buttons (when enabled)."}],"raw_content":"<!--section=description-->\n<p>Most WooCommerce stores eventually need proper order documents.<\/p>\n\n<p>You might need a PDF invoice for accounting, a receipt for the customer, a packing slip for fulfilment, or a credit note when a refund is issued. You also want documents that look professional, match your branding, and work reliably across WooCommerce email flows.<\/p>\n\n<p><strong>Kitgenix PDF Invoicing for WooCommerce<\/strong> is a lightweight, security-first PDF invoicing plugin that generates WooCommerce order PDFs on demand \u2014 without heavy background queues, and without filling your uploads folder with permanently stored PDFs.<\/p>\n\n<p>It\u2019s built around practical store requirements:\n- Stable document identifiers\/numbering history (so regenerated PDFs stay consistent)\n- Secure Dompdf rendering defaults (chrooted paths, remote disabled by default, PHP in templates disabled by default)\n- Theme template overrides and developer hooks\n- Clean admin preview\/download workflow on the order screen\n- Customer \u201cMy Account\u201d download buttons and order table actions (optional)\n- Configurable WooCommerce email attachments that clean up temp files automatically<\/p>\n\n<h4>Important: Dompdf dependency<\/h4>\n\n<p>This plugin uses <strong>Dompdf<\/strong> (installed as a Composer dependency). If you are building from source, you must run Composer so the <code>vendor\/<\/code> directory (Dompdf) is present. The WordPress.org release includes the required library.<\/p>\n\n<h4>Documents generated (built-in types)<\/h4>\n\n<ul>\n<li>Invoice (PDF)<\/li>\n<li>Receipt (PDF)<\/li>\n<li>Packing Slip (PDF)<\/li>\n<li>Credit Note (PDF) (only available when refunds exist)<\/li>\n<\/ul>\n\n<p>Document types are registered in a document registry and can be extended via filters.<\/p>\n\n<h4>Why store owners choose Kitgenix PDF Invoicing<\/h4>\n\n<p><strong>Secure by default<\/strong>\n- Dompdf configured with strict defaults:\n  - chroot limited to allowed paths\n  - remote resource fetching disabled by default\n  - PHP execution inside templates disabled by default (opt-in only)\n- All admin\/customer download actions are protected with nonces and permission checks.<\/p>\n\n<p><strong>No bloat<\/strong>\n- PDFs are generated only when needed.\n- Email attachments are created as temporary files and automatically cleaned up at shutdown.\n- No custom database tables.<\/p>\n\n<p><strong>Built for WooCommerce documents<\/strong>\n- Refund-aware credit notes\n- Email attachment mapping\n- Customer download links in the right places\n- Store-friendly templates and template override system<\/p>\n\n<p><strong>Modular + extensible<\/strong>\nModules (Admin \/ Settings \/ Invoicing \/ Email \/ Frontend) are registered through a module manager and can be filtered for extension.<\/p>\n\n<h4>Features<\/h4>\n\n<h3>Admin settings (branding, numbering, styles)<\/h3>\n\n<p>Settings page under the shared Kitgenix menu includes:\n- Company name, address, email\/phone, tax ID\n- Logo upload (WordPress media)\n- Footer text and customer notes\/footer notes\n- Document prefixes:\n  - Invoice prefix\n  - Receipt prefix\n  - Credit note prefix\n- Template style selector (Standard \/ Simple \/ Modern \/ Business)\n- Colour settings:\n  - Primary colour\n  - Accent colour\n  - Text colour\n  - Muted text colour\n  - Border colour\n  - Table header background\n  - Document background\n  - Footer background\n  - Footer text colour<\/p>\n\n<h3>Admin order meta box (preview + PDF downloads)<\/h3>\n\n<p>On WooCommerce order edit screens the plugin adds document actions:\n- Download Invoice (PDF)\n- Download Packing Slip (PDF)\n- Download Receipt (PDF)\n- Download Credit Note (PDF) (only shown when refunds exist)<\/p>\n\n<p>Endpoints are secured using nonce + capability checks.<\/p>\n\n<h3>Stable document identifiers &amp; history<\/h3>\n\n<p>For documents that require stable numbering (invoices\/credit notes), the plugin persists document identifiers and relevant timestamps on first generation so the document remains consistent over time.<\/p>\n\n<h3>Secure Dompdf PDF rendering<\/h3>\n\n<ul>\n<li>Renders HTML templates into PDF (A4 portrait by default)<\/li>\n<li>Remote fetching disabled by default<\/li>\n<li>Dompdf \u201cchroot\u201d restricts filesystem access to allowed paths<\/li>\n<li>PHP in templates disabled by default (advanced opt-in only)<\/li>\n<\/ul>\n\n<h3>Template overrides (theme and agency friendly)<\/h3>\n\n<p>Templates can be overridden without editing plugin files.<\/p>\n\n<p>Template resolution order:\n1) Full override via filter\n2) Theme override path:\n  kitgenix-pdf-invoicing-for-woocommerce\/{style}\/\n3) Plugin templates fallback:\n  templates\/{style}\/<\/p>\n\n<p>Where <code>{style}<\/code> is the active template pack selected in settings: <code>standard<\/code>, <code>simple<\/code>, <code>modern<\/code>, or <code>business<\/code>.\nFor compatibility, the resolver also checks <code>...\/standard\/<\/code> and legacy root locations if a file is not found.<\/p>\n\n<h3>Customer downloads (My Account)<\/h3>\n\n<p>Optional customer-facing downloads for the order owner:\n- Order details page buttons:\n  - Download Invoice (PDF)\n  - Download Credit Note (PDF) (only when refunds exist)\n- My Account \u2192 Orders table actions:\n  - View Invoice\n  - View Credit Note (when refunds exist)<\/p>\n\n<p>Customer downloads are nonce-protected and\/or can be validated by order key for guest access (see \u201cDownload permissions\u201d).<\/p>\n\n<h3>Download permissions &amp; security<\/h3>\n\n<p>PDF rendering supports secure query-arg requests:\n- kitgenix_pdf=1\n- kitgenix_doc={type}\n- order_id={id}\n- _wpnonce=...<\/p>\n\n<p>Guest access (without a nonce) is permitted only when a valid WooCommerce order key is provided:\n- key= or order_key= must match the order\u2019s key<\/p>\n\n<p>Default per-document rules:\n- Invoice + Receipt:\n  - order owner OR shop staff OR valid order key\n- Packing Slip:\n  - shop staff only (by default)\n- Credit Note:\n  - staff OR order owner (only if refunds exist) OR valid order key (only if refunds exist)<\/p>\n\n<p>Final permission gate is filterable.<\/p>\n\n<h3>Email attachments (configurable)<\/h3>\n\n<p>Attach PDFs to WooCommerce emails using settings and filters.\nThe plugin hooks WooCommerce\u2019s email attachment pipeline, generates PDFs as temporary files for each email, attaches them, and cleans up automatically.<\/p>\n\n<p>Sensible defaults (customisable):\n- Invoice: Processing + Completed\n- Receipt: Completed\n- Credit Note: Refunded\n- Packing Slip: New Order (admin email)<\/p>\n\n<h3>Filenames, streaming vs download<\/h3>\n\n<ul>\n<li>Default filename: {type}-{order_number}.pdf (filterable)<\/li>\n<li>Streams inline by default (Attachment=false), unless filtered to force download<\/li>\n<li>Generates temporary files for email attachments, cleaned up automatically<\/li>\n<li>Tracks simple generation metrics in an option (counts successful generations)<\/li>\n<\/ul>\n\n<h3>Customisation hooks (HTML\/CSS\/output)<\/h3>\n\n<ul>\n<li>Full HTML filter<\/li>\n<li>Wrapper hooks before\/after document<\/li>\n<li>Custom CSS injection hook<\/li>\n<li>Language attribute filter<\/li>\n<li>Document title\/body class filters<\/li>\n<li>\u201cShow shipping address\u201d toggle filter<\/li>\n<\/ul>\n\n<h3>Quick Start<\/h3>\n\n<ol>\n<li>Install and activate the plugin (WooCommerce required).<\/li>\n<li>Open any WooCommerce order in wp-admin.<\/li>\n<li>In the Kitgenix PDF Invoicing meta box, click \u201cDownload Invoice (PDF)\u201d to confirm output.<\/li>\n<li>Configure settings:\n\n<ul>\n<li>branding + company details<\/li>\n<li>prefixes<\/li>\n<li>email attachments mapping<\/li>\n<\/ul><\/li>\n<li>Optional: enable customer downloads and order table actions.<\/li>\n<\/ol>\n\n<p>To customise layout, copy templates into your theme override folder and edit them.<\/p>\n\n<h3>Template Overrides<\/h3>\n\n<ol>\n<li><p>Copy templates from:\ntemplates\/{style}\/<\/p><\/li>\n<li><p>Paste into your theme at:\nkitgenix-pdf-invoicing-for-woocommerce\/{style}\/<\/p><\/li>\n<li><p>Edit the theme copies.<\/p><\/li>\n<\/ol>\n\n<p>The plugin will automatically use your theme templates instead of bundled templates.<\/p>\n\n<h3>Developers<\/h3>\n\n<p>Text domain:\nkitgenix-pdf-invoicing-for-woocommerce<\/p>\n\n<p>Architecture:\n- Modular plugin with Admin\/Settings\/Invoicing\/Email\/Frontend modules\n- Document types registry (extendable)\n- Template system with theme overrides + HTML\/CSS filters\n- Secure download endpoints with nonce\/capability checks and optional order key validation<\/p>\n\n<p>Key filters:\n- kitgenix_pdf_invoicing_modules\n- kitgenix_pdf_document_types\n- kitgenix_pdf_document_enabled\n- kitgenix_pdf_document_user_can_download\n- kitgenix_pdf_document_filename\n- kitgenix_pdf_invoice_filename (back-compat)\n- kitgenix_pdf_document_attachment (inline vs download)\n- kitgenix_pdf_document_template_path\n- kitgenix_pdf_document_html\n- kitgenix_pdf_invoice_html (back-compat)\n- kitgenix_pdf_document_custom_css\n- kitgenix_pdf_document_lang\n- kitgenix_pdf_document_title\n- kitgenix_pdf_document_body_class\n- kitgenix_pdf_show_shipping_address\n- kitgenix_pdf_email_document_map\n- kitgenix_pdf_email_attach_document\n- kitgenix_dompdf_enable_php (advanced; default false)<\/p>\n\n<p>Key actions:\n- kitgenix_before_stream_pdf_document\n- kitgenix_after_stream_pdf_document\n- kitgenix_before_stream_pdf_invoice (back-compat)\n- kitgenix_after_stream_pdf_invoice (back-compat)\n- Template hooks:\n  - kitgenix_pdf_before_document \/ kitgenix_pdf_after_document\n  - kitgenix_pdf_before_document_wrapper \/ kitgenix_pdf_after_document_wrapper\n  - kitgenix_pdf_after_notes\n  - kitgenix_pdf_after_order_data_rows<\/p>\n\n<h3>Data Handling<\/h3>\n\n<ul>\n<li>Plugin settings stored in a single option: <code>kitgenix_pdf_invoicing_settings<\/code>.<\/li>\n<li>Anonymous generation metrics stored in: <code>kitgenix_pdf_invoicing_for_woocommerce_metrics<\/code>.<\/li>\n<li>Document identifiers\/history stored on the order to keep documents stable:\n\n<ul>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_invoice_number<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_invoice_date<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_receipt_number<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_receipt_date<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_credit_note_count<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_credit_note_history<\/code><\/li>\n<\/ul><\/li>\n<li>PDFs generated on demand (temporary files).<\/li>\n<li>Email attachments generated as temp files and cleaned up automatically.<\/li>\n<li>No custom database tables created.<\/li>\n<\/ul>\n\n<h3>Security &amp; Privacy<\/h3>\n\n<ul>\n<li>All admin actions protected with nonces and capability checks.<\/li>\n<li>Inputs sanitised; outputs escaped appropriately.<\/li>\n<li>Dompdf PHP execution disabled by default. Enable only if you understand the risk:\nadd_filter( 'kitgenix_dompdf_enable_php', '__return_true' );<\/li>\n<\/ul>\n\n<p>Security identifiers (exact):\n- Admin meta box downloads use <code>admin-post.php<\/code> actions <code>kitgenix_admin_stream_invoice<\/code>, <code>kitgenix_admin_stream_receipt<\/code>, <code>kitgenix_admin_stream_packing_slip<\/code>, <code>kitgenix_admin_stream_credit_note<\/code>, protected by query arg <code>nonce<\/code> created\/verified with nonce action <code>kitgenix_admin_pdf<\/code>.\n- WordPress action hooks for those admin-post actions: <code>admin_post_kitgenix_admin_stream_invoice<\/code>, <code>admin_post_kitgenix_admin_stream_receipt<\/code>, <code>admin_post_kitgenix_admin_stream_packing_slip<\/code>, <code>admin_post_kitgenix_admin_stream_credit_note<\/code>.\n- Frontend document downloads use the optional <code>_wpnonce<\/code> value created\/verified with nonce action <code>kitgenix_download_{doc_type}_{order_id}<\/code>.\n- WooCommerce order action key: <code>kitgenix_download_pdf_invoice<\/code> (hook: <code>woocommerce_order_action_kitgenix_download_pdf_invoice<\/code>).<\/p>\n\n<p>Admin page hook suffix:\n- <code>kitgenix_page_kitgenix-pdf-invoicing-settings<\/code><\/p>\n\n<p>PDF generation is performed locally on your server using Dompdf. This plugin does not send customer data to a third-party PDF generation API.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin includes a shared \u201cKitgenix hub\u201d component in wp-admin which may fetch publicly available plugin metadata from WordPress.org using WordPress core\u2019s <code>plugins_api()<\/code> function.<\/p>\n\n<p>Caching:\n- Transient: <code>kitgenix_hub_wporg_active_installs_v1<\/code>\n- Transient: <code>kitgenix_hub_wporg_ratings_v1<\/code><\/p>\n\n<h3>Uninstall<\/h3>\n\n<p>Uninstall removes the plugin settings option (<code>kitgenix_pdf_invoicing_settings<\/code>) and metrics option (<code>kitgenix_pdf_invoicing_for_woocommerce_metrics<\/code>) when uninstalled via WordPress.\nIt also deletes the activation redirect transient: <code>kitgenix_pdf_invoicing_for_woocommerce_do_activation_redirect<\/code>.\nOrder meta and document history are intentionally preserved to avoid accidental loss of invoice\/credit note history.<\/p>\n\n<h3>Support Development<\/h3>\n\n<p>If this plugin helps you generate clean WooCommerce PDFs and reduces admin work, you can support ongoing development here:\nhttps:\/\/donate.stripe.com\/9B65kDgG3fTQ2Kzcmwf7i00<\/p>\n\n<h3>Credits<\/h3>\n\n<p>Built with \u2764\ufe0e by @kitgenix - https:\/\/kitgenix.com\nBundled library: Dompdf (see vendor\/ for licenses)<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install via Plugins \u2192 Add New (search for \u201cKitgenix PDF Invoicing\u201d), or upload the ZIP file.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Ensure WooCommerce is active.<\/li>\n<li>Go to WooCommerce \u2192 Orders and open an order.<\/li>\n<li>Use the meta box to preview\/download documents.<\/li>\n<li>Configure branding, numbering and email attachments in settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20generate%20pdf%20invoices%20automatically%3F\"><h3>Does this plugin generate PDF invoices automatically?<\/h3><\/dt>\n<dd><p>PDFs are generated on demand and can be generated automatically at send-time by attaching them to WooCommerce emails.<\/p><\/dd>\n<dt id=\"are%20pdfs%20stored%20permanently%20in%20uploads%3F\"><h3>Are PDFs stored permanently in uploads?<\/h3><\/dt>\n<dd><p>No. PDFs are generated to secure temporary files and streamed\/attached when needed. Email temp files are cleaned up automatically.<\/p><\/dd>\n<dt id=\"can%20customers%20download%20invoices%20from%20my%20account%3F\"><h3>Can customers download invoices from My Account?<\/h3><\/dt>\n<dd><p>Yes. The plugin can show customer download buttons on the order details screen and add \u201cView Invoice\u201d\/\u201cView Credit Note\u201d actions in the Orders table. Credit notes only appear when refunds exist.<\/p><\/dd>\n<dt id=\"how%20do%20credit%20notes%20work%3F\"><h3>How do credit notes work?<\/h3><\/dt>\n<dd><p>Credit notes are refund-aware. When an order has refunds, credit note documents become available (admin and optionally customer).<\/p><\/dd>\n<dt id=\"is%20dompdf%20bundled%20and%20safe%3F\"><h3>Is Dompdf bundled and safe?<\/h3><\/dt>\n<dd><p>Dompdf is used for rendering. The plugin configures strict defaults: chroot-limited paths, remote fetching disabled by default, and PHP execution inside templates disabled by default (advanced opt-in only).<\/p><\/dd>\n<dt id=\"how%20do%20i%20override%20templates%3F\"><h3>How do I override templates?<\/h3><\/dt>\n<dd><p>Copy templates from templates\/{style}\/ into your theme at kitgenix-pdf-invoicing-for-woocommerce\/{style}\/ and edit them. <code>{style}<\/code> is the active template pack selected in settings (standard\/simple\/modern\/business). You can also override template resolution via filters.<\/p><\/dd>\n<dt id=\"can%20i%20attach%20pdfs%20to%20woocommerce%20emails%3F\"><h3>Can I attach PDFs to WooCommerce emails?<\/h3><\/dt>\n<dd><p>Yes. You can map different documents to different WooCommerce email types. Attachments are generated as temporary files and cleaned up automatically.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20hpos%3F\"><h3>Will this work with HPOS?<\/h3><\/dt>\n<dd><p>Yes. Order integrations are designed to work with modern WooCommerce order storage and admin workflows.<\/p><\/dd>\n<dt id=\"can%20i%20change%20invoice%20numbering%2C%20prefixes%20or%20filenames%3F\"><h3>Can I change invoice numbering, prefixes or filenames?<\/h3><\/dt>\n<dd><p>Yes. Prefixes are configurable in settings. Filenames and document behaviour can also be filtered by developers.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20certain%20document%20types%3F\"><h3>Can I disable certain document types?<\/h3><\/dt>\n<dd><p>Yes. Document types can be enabled\/disabled in settings and controlled per order via filters.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20custom%20document%20types%3F\"><h3>Does the plugin support custom document types?<\/h3><\/dt>\n<dd><p>Yes. The document registry can be extended via filters to add additional document types (e.g., pro-forma invoice, delivery note).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6 (19 March 2026)<\/h4>\n\n<p>Update: Improved the Kitgenix admin header layout for better alignment and less clutter.\nUpdate: Social links in admin headers now render as compact icon buttons (with accessible labels).\nUpdate: Added responsive header helpers so titles\/description and actions\/links lay out consistently.\nFix: Admin notices now display above the Kitgenix header using the WordPress standard notice area.\nFix: Added defensive notice normalization to prevent notices being relocated into the header by other scripts.\nFix: Restored consistent spacing between settings tabs and section cards.\nUpdate: Admin tables inside Kitgenix pages now use Kitgenix styling for a more consistent branded look.\nFix: Added spacing between adjacent action links\/buttons (e.g., Edit\/Delete).\nMaintenance: Updated the plugin Author URI to the public Kitgenix WordPress.org profile and replaced the old custom admin-menu icon CSS with the native Dashicons icon.<\/p>\n\n<h4>1.0.5 (18 February 2026)<\/h4>\n\n<ul>\n<li>Docs: Overhauled readme.txt.<\/li>\n<li>Docs: Updated WordPress.org screenshots.<\/li>\n<li>UI: Updated the Kitgenix hub cards (added Stock Sync for WooCommerce).<\/li>\n<li>Fix: Normalised Kitgenix hub card output for consistent layout and navigation.<\/li>\n<li>Dev: Regenerated \/languages\/kitgenix-pdf-invoicing-for-woocommerce.pot translation template.<\/li>\n<\/ul>\n\n<h4>1.0.4 (27 January 2026)<\/h4>\n\n<ul>\n<li>New: Added additional template packs (Simple, Modern, Business) and a setting to choose the active template style.<\/li>\n<li>New: Added Receipt and Packing Slip actions to the admin order meta box (download + generate).<\/li>\n<li>Update: Translation loading added (plugin text domain now loads from \/languages).<\/li>\n<li>Improvement: Minor fixes and translation loading improvements.<\/li>\n<li>Change: Declared PHP requirement as 8.1 to match bundled dependency requirements.<\/li>\n<li>Change: Harmonised admin hub enqueue checks and admin branding; shortened readme\/header strings to conform to WordPress.org limits.<\/li>\n<li>Cleanup: PHPCS\/i18n\/security fixes across plugin files (output escaping, translator comments, optional nonce checks) applied.<\/li>\n<li>Cleanup: Uninstall routine now also removes anonymous PDF generation metrics option.<\/li>\n<li>Fix: Fixed Email Attachments settings not persisting when saving other settings tabs (multi-form settings page could overwrite email attachment mapping).<\/li>\n<li>Fix: Fixed public document download permissions to allow guest access via valid WooCommerce order_key links (matching documented behaviour).<\/li>\n<li>Fix: Fixed CSS injection for PDF rendering so valid CSS is not HTML-escaped (prevents broken selectors); hardened by stripping tags and neutralising closing  sequences.<\/li>\n<li>Fix: Regenerated Composer autoload to resolve missing generated file mapping for thecodingmachine\/safe and verified vendor autoload mappings are correct.<\/li>\n<li>Fix: Resolved edge-case settings and template issues affecting PDF generation.<\/li>\n<li>UI: Added a label for the refunded email row in the Email Attachments table.<\/li>\n<\/ul>\n\n<h4>1.0.3 (06 January 2026)<\/h4>\n\n<ul>\n<li>Update: Updated Composer dependencies to the latest compatible versions.<\/li>\n<\/ul>\n\n<h4>1.0.2 (06 January 2025)<\/h4>\n\n<ul>\n<li>Fix: Fixed a WooCommerce compatibility issue that could trigger a fatal error during PDF generation (receipt\/invoice templates) when wc_get_order_item_totals() is not available.<\/li>\n<li>Fix: Totals now use the order API (WC_Order::get_order_item_totals()) with safe fallbacks to prevent admin order saves and transactional emails from failing.<\/li>\n<\/ul>\n\n<h4>1.0.1 (01 January 2025)<\/h4>\n\n<ul>\n<li>New: Added a shared top-level \u201cKitgenix\u201d admin menu (hub) and moved PDF Invoicing settings under it.<\/li>\n<li>New: Added privacy-safe PDF generation counters (totals + by document type) and display them in the Support tab.<\/li>\n<li>Improvement: Redesigned the settings UI with a new header and tabbed navigation (Settings, Brand &amp; Styling, Email Attachments, Preview, Support).<\/li>\n<li>Improvement: Improved admin styling (including dark-mode friendly variables) and updated Kitgenix brand assets used in the admin.<\/li>\n<li>Improvement: Improved settings behaviour \u2014 initialise the WordPress color picker only when relevant tabs are visible.<\/li>\n<li>Improvement: Improved logo upload UI (cleaner preview markup + consistent show\/hide behaviour for the remove button).<\/li>\n<li>Improvement: Hardened admin asset loading to be scoped to the plugin settings page (hook suffix tracking with safe fallbacks).<\/li>\n<\/ul>\n\n<h4>1.0.0 (19 December 2025)<\/h4>\n\n<ul>\n<li>New: Initial release \u2014 generate PDF invoices, receipts, packing slips, and credit notes for WooCommerce orders.<\/li>\n<li>New: Included a standard template set and HTML wrapper with theme override support.<\/li>\n<li>New: Secure Dompdf configuration (chrooted paths, remote fetching disabled by default, PHP evaluation opt-in).<\/li>\n<li>New: Email attachments \u2014 attach PDFs to WooCommerce emails with automatic temporary file cleanup.<\/li>\n<li>New: Admin order meta box with preview, download\/stream, and generate actions (protected by nonces and capability checks).<\/li>\n<li>New: Settings UI for branding, company details, prefixes, and email attachment mapping.<\/li>\n<li>New: Stable invoice numbering stored on first generation; credit notes tied to refund history.<\/li>\n<li>New: Developer-friendly filters and actions for templates, filenames, HTML, enablement, and module registration.<\/li>\n<li>New: Translation-ready with localisation support.<\/li>\n<\/ul>","raw_excerpt":"Generate WooCommerce PDF invoices, receipts, packing slips, and credit notes with secure downloads and configurable email attachments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/270053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=270053"}],"author":[{"embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kitgenix"}],"wp:attachment":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=270053"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=270053"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=270053"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=270053"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=270053"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=270053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}