{"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-05-07T14:09:26","modified_gmt":"2026-05-07T14:09:26","slug":"kitgenix-pdf-invoicing-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ja.wordpress.org\/plugins\/kitgenix-pdf-invoicing-for-woocommerce\/","author":23310025,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.2","stable_tag":"1.1.2","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-05-07 14:09:26","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/buymeacoffee.com\/kitgenix","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":531,"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"},"1.1.0":{"tag":"1.1.0","author":"kitgenix","date":"2026-05-07 13:22:27"},"1.1.1":{"tag":"1.1.1","author":"kitgenix","date":"2026-05-07 13:49:06"},"1.1.2":{"tag":"1.1.2","author":"kitgenix","date":"2026-05-07 14:09:26"}},"upgrade_notice":{"1.1.2":"<p>Adds localization, tax, and legal formatting packs, additional document types with rule-based availability, a visual template designer, email attachment preview\/test-send tools, advanced document numbering, expanded document-field controls, immutable archived PDFs, and WooCommerce batch ZIP exports.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3465420,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3465420,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3465420,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3465420,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.3","1.0.4","1.0.5","1.0.6","1.1.0","1.1.1","1.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3525580,"resolution":"1","location":"assets","locale":"","width":2696,"height":1462},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3525580,"resolution":"2","location":"assets","locale":"","width":2696,"height":1462},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3525580,"resolution":"3","location":"assets","locale":"","width":3020,"height":1548},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3525580,"resolution":"4","location":"assets","locale":"","width":3020,"height":1548},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3525580,"resolution":"5","location":"assets","locale":"","width":3020,"height":1428}},"screenshots":{"1":"Settings: branding, company details, prefixes, styles, colours, and email attachment mapping.","2":"WooCommerce order screen: admin meta box with download actions.","3":"Generated PDF invoice streamed in the browser.","4":"Credit note actions shown when refunds exist.","5":"Customer order view: Download Invoice \/ Credit Note buttons (when enabled)."}},"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=3525580","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=3525580","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=3525580","caption":"Generated PDF invoice streamed in the browser."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-4.png?rev=3525580","caption":"Credit note actions shown when refunds exist."},{"src":"https:\/\/ps.w.org\/kitgenix-pdf-invoicing-for-woocommerce\/assets\/screenshot-5.png?rev=3525580","caption":"Customer order view: Download Invoice \/ Credit Note buttons (when enabled)."}],"raw_content":"<!--section=description-->\n<p>Kitgenix PDF Invoicing for WooCommerce helps stores generate professional PDF documents from WooCommerce orders without a heavy stack.<\/p>\n\n<p>It supports core document workflows out of the box:\n- Invoices\n- Receipts\n- Packing Slips\n- Credit Notes\n- Pro Forma Invoices\n- Delivery Notes\n- Statements<\/p>\n\n<p>Key capabilities include:\n- Secure admin and customer downloads with nonce and capability checks\n- Batch ZIP exports from the WooCommerce orders list\n- Optional archived PDF reuse for stable re-downloads\n- Numbering controls with prefixes, padding, and reset periods\n- Rule-based document availability by status\/payment state\n- Email attachment support for selected document types\n- Bundled templates with style and branding controls<\/p>\n\n<p>The plugin is built for practical operations: support teams can quickly re-deliver documents, fulfilment teams can work with packing slips and delivery notes, and finance teams can keep consistent invoice\/credit-note references.<\/p>\n\n<p>For setup details and advanced options, see the bundled documentation and support links in this readme.<\/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>Template packs<\/h3>\n\n<p>Choose between four bundled design packs:\n- Standard\n- Simple\n- Modern\n- Business<\/p>\n\n<p>Each pack has its own document templates and stylesheet, while still using the same company details, logo, footer, notes, and colour settings from the plugin options.<\/p>\n\n<h3>Visual template designer<\/h3>\n\n<p>Non-technical stores can now reshape the bundled document layouts without editing PHP templates.<\/p>\n\n<p>The Brand &amp; Styling tab includes no-code controls for:\n- header alignment across the logo, company block, and document title\n- logo scale for compact or brand-led layouts\n- document density for tighter or more spacious tables and notes\n- boxed or tinted information panels around address\/order-data sections\n- clean, striped, or grid-style item tables\n- boxed totals panels or highlighted final totals\n- footer alignment for legal text, bank details, or closing notes<\/p>\n\n<p>These controls layer on top of the bundled Standard, Simple, Modern, and Business packs, so stores can fine-tune the presentation without creating a theme override.<\/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 + Pro Forma Invoice + Statement:\n  - order owner OR shop staff OR valid order key\n- Packing Slip + Delivery Note:\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, and document availability can also be narrowed through the built-in rules table or the <code>kitgenix_pdf_document_enabled<\/code> filter.<\/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<p>Email workflow tools in settings:\n- Preview the currently mapped document set against a specific WooCommerce order\n- Open live PDF previews for each eligible mapped document from the email settings tab\n- Send an attachment-only test email to a safe inbox before relying on the live WooCommerce workflow\n- Reuse the same mapping, eligibility checks, and PDF-generation pipeline as production email attachments<\/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>Reuses archived immutable PDFs when available before falling back to fresh rendering<\/li>\n<li>Generates temporary files for email attachments, cleaned up automatically<\/li>\n<li>Generates temporary ZIP archives for batch exports, 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, numbering tokens, and fiscal-year reset rules<\/li>\n<li>field visibility, tax detail, and custom fulfilment\/order-meta rows<\/li>\n<li>email attachments mapping<\/li>\n<\/ul><\/li>\n<li>Generate a document once, then reuse the same archived PDF and stored document number for later admin\/customer downloads when you need immutable record keeping.<\/li>\n<li>Use the WooCommerce orders list plus the batch ZIP bulk actions when you need invoices, packing slips, receipts, or credit notes for a filtered set of orders.<\/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) with built-in invoice, receipt, packing slip, credit note, pro forma invoice, delivery note, and statement types\n- Template system with theme overrides + HTML\/CSS filters\n- Secure download endpoints with nonce\/capability checks and optional order key validation\n- Token-based numbering engine for invoices, receipts, packing slips, and credit notes using stored order meta and a shared sequence-counter option\n- Rule-based document availability controls by type, order status, and payment state\n- Shared template display helper for configurable order rows, note blocks, and line-item metadata across bundled document templates<\/p>\n\n<p>Numbering tokens available in settings:\n- {prefix}\n- {order_number}\n- {order_id}\n- {sequence}\n- {refund_sequence}\n- {year}\n- {yy}\n- {month}\n- {day}\n- {country}\n- {billing_country}\n- {shipping_country}\n- {fiscal_year}\n- {fiscal_year_short}\n- {fiscal_year_start}\n- {fiscal_year_end}<\/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_batch_archive_filename\n- kitgenix_pdf_persistent_archive_enabled\n- kitgenix_pdf_archive_relative_root\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- kitgenix_pdf_document_archived\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>Sequence counters for resettable numbering stored in: <code>kitgenix_pdf_invoicing_for_woocommerce_number_sequences<\/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_packing_slip_number<\/code><\/li>\n<li><code>_kitgenix_pdf_invoicing_for_woocommerce_packing_slip_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><code>_kitgenix_pdf_invoicing_for_woocommerce_archived_documents<\/code><\/li>\n<li>Archived PDFs stored in uploads and reused as immutable document copies when available.<\/li>\n<li>Batch ZIP exports 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>, <code>kitgenix_admin_stream_pro_forma_invoice<\/code>, <code>kitgenix_admin_stream_delivery_note<\/code>, and <code>kitgenix_admin_stream_statement<\/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>, <code>admin_post_kitgenix_admin_stream_pro_forma_invoice<\/code>, <code>admin_post_kitgenix_admin_stream_delivery_note<\/code>, and <code>admin_post_kitgenix_admin_stream_statement<\/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>).\n- WooCommerce bulk action keys: <code>kitgenix_pdf_batch_export_invoice<\/code>, <code>kitgenix_pdf_batch_export_packing_slip<\/code>, <code>kitgenix_pdf_batch_export_receipt<\/code>, <code>kitgenix_pdf_batch_export_credit_note<\/code>, <code>kitgenix_pdf_batch_export_pro_forma_invoice<\/code>, <code>kitgenix_pdf_batch_export_delivery_note<\/code>, and <code>kitgenix_pdf_batch_export_statement<\/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>\n- Transient: <code>kitgenix_hub_wporg_media_v1<\/code><\/p>\n\n<h3>Uninstall<\/h3>\n\n<p>Uninstall removes the plugin settings option (<code>kitgenix_pdf_invoicing_settings<\/code>), metrics option (<code>kitgenix_pdf_invoicing_for_woocommerce_metrics<\/code>), and numbering sequence option (<code>kitgenix_pdf_invoicing_for_woocommerce_number_sequences<\/code>) when uninstalled via WordPress.\nIt also deletes the activation redirect transient: <code>kitgenix_pdf_invoicing_for_woocommerce_do_activation_redirect<\/code>.\nOrder meta, archived document metadata, and archived PDF files are intentionally preserved to avoid accidental loss of invoice, receipt, packing slip, or 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:\/\/buymeacoffee.com\/kitgenix<\/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, email attachments, and the email preview\/test workflow 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>Yes. The plugin can retain immutable archived PDF copies in uploads for future re-delivery, while still using temporary working files for email attachments and batch ZIP creation. Stored document identifiers remain aligned with those archived copies.<\/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=\"can%20i%20export%20a%20zip%20for%20multiple%20orders%20at%20once%3F\"><h3>Can I export a ZIP for multiple orders at once?<\/h3><\/dt>\n<dd><p>Yes. From the WooCommerce orders list you can select orders, keep any status\/date filters you already use, and run a batch ZIP export for invoices, packing slips, receipts, credit notes, pro forma invoices, delivery notes, or statements.<\/p><\/dd>\n<dt id=\"can%20i%20show%20tracking%20numbers%2C%20warehouse%20references%2C%20or%20other%20custom%20order%20fields%20on%20pdfs%3F\"><h3>Can I show tracking numbers, warehouse references, or other custom order fields on PDFs?<\/h3><\/dt>\n<dd><p>Yes. In the settings page you can add custom order meta rows using one entry per line in the format <code>meta_key|Label<\/code>. For example, <code>_tracking_number|Tracking Number<\/code> or <code>_warehouse_pick_ref|Warehouse Pick Ref<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20switch%20documents%20between%20vat%2C%20gst%2C%20or%20sales%20tax%20wording%3F\"><h3>Can I switch documents between VAT, GST, or Sales Tax wording?<\/h3><\/dt>\n<dd><p>Yes. The settings page now includes localization\/tax\/legal formatting packs for VAT, GST, and Sales Tax styles, plus manual overrides for the displayed tax term and tax-registration label.<\/p><\/dd>\n<dt id=\"can%20i%20show%20tax-inclusive%20prices%2C%20custom%20date%20formats%2C%20or%20iso%20currency%20codes%3F\"><h3>Can I show tax-inclusive prices, custom date formats, or ISO currency codes?<\/h3><\/dt>\n<dd><p>Yes. You can switch invoices, receipts, and credit notes between tax-exclusive and tax-inclusive display, choose a custom document date format, and append ISO currency codes such as EUR, USD, GBP, or AUD after formatted amounts.<\/p><\/dd>\n<dt id=\"will%20repeat%20downloads%20regenerate%20a%20different%20pdf%20later%3F\"><h3>Will repeat downloads regenerate a different PDF later?<\/h3><\/dt>\n<dd><p>No. Once an archived document copy exists, later downloads and batch exports can reuse that immutable file instead of regenerating a different version.<\/p><\/dd>\n<dt id=\"can%20guests%20download%20documents%20with%20an%20order%20key%3F\"><h3>Can guests download documents with an order key?<\/h3><\/dt>\n<dd><p>Yes. Invoice, receipt, pro forma invoice, and statement downloads can be authorised with a valid WooCommerce order key. Credit notes can also use the order key when refunds exist. Packing slips and delivery notes remain staff-only by default.<\/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=\"can%20i%20choose%20different%20document%20styles%20without%20editing%20code%3F\"><h3>Can I choose different document styles without editing code?<\/h3><\/dt>\n<dd><p>Yes. The settings page includes four built-in style packs: Standard, Simple, Modern, and Business. It also now includes a visual template designer for header alignment, logo scale, spacing density, panel styles, totals emphasis, and footer alignment.<\/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=\"can%20i%20preview%20or%20test%20email%20attachments%20before%20going%20live%3F\"><h3>Can I preview or test email attachments before going live?<\/h3><\/dt>\n<dd><p>Yes. The Email Attachments tab now includes an order-based preview tool that shows which PDFs are mapped to a WooCommerce email, opens live document previews for eligible files, and can send an attachment-only test email to a safe recipient before you rely on the live workflow.<\/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, token-based number formats, sequence padding, reset rules, and the fiscal year start month are configurable in settings. Existing issued documents keep their stored identifiers. Filenames and document behaviour can also be filtered by developers.<\/p><\/dd>\n<dt id=\"can%20i%20hide%20sku%2C%20payment%20details%2C%20or%20customer%2Finternal%20notes%20without%20editing%20templates%3F\"><h3>Can I hide SKU, payment details, or customer\/internal notes without editing templates?<\/h3><\/dt>\n<dd><p>Yes. The settings page now includes field controls for SKU, item meta, line-item tax, payment method, transaction ID, shipping method, customer notes, internal notes, and tax-total visibility.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20fiscal-year%20or%20country-based%20numbering%20rules%3F\"><h3>Does the plugin support fiscal-year or country-based numbering rules?<\/h3><\/dt>\n<dd><p>Yes. Numbering formats support tokens such as {sequence}, {refund_sequence}, {year}, {yy}, {month}, {country}, {billing_country}, {shipping_country}, {fiscal_year}, {fiscal_year_short}, {fiscal_year_start}, and {fiscal_year_end}. This makes it possible to implement fiscal-year resets and country-aware numbering rules without editing templates.<\/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. Each built-in document type can be enabled or disabled in settings, limited to selected WooCommerce order statuses, and restricted to paid or unpaid orders only. Developers can also override availability 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 custom document types, and the plugin now includes built-in support for pro forma invoices, delivery notes, and statements in addition to invoices, receipts, packing slips, and credit notes.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1 (7 May 2026)<\/h4>\n\n<ul>\n<li>Update: Composer dependencies<\/li>\n<\/ul>\n\n<h4>1.1.0 (7 May 2026)<\/h4>\n\n<ul>\n<li>New: Added localization, tax, and legal formatting packs for VAT, GST, and Sales Tax terminology, including regional document-title variations such as Tax Invoice and Adjustment Note in the bundled templates.<\/li>\n<li>New: Added no-code controls for tax-inclusive versus tax-exclusive amount display, custom document date formats, ISO currency-code suffixes, and tax-label overrides across invoices, receipts, credit notes, and packing slips.<\/li>\n<li>Improvement: Bundled document templates now use a shared localization\/display helper so tax labels, document titles, date formatting, and amount presentation stay consistent across all built-in styles.<\/li>\n<li>New: Added built-in Pro Forma Invoice, Delivery Note, and Statement document types that plug into the existing registry, admin downloads, batch ZIP exports, and template system.<\/li>\n<li>New: Added document-generation rules in settings so each built-in document type can be enabled or disabled, limited to specific WooCommerce order statuses, and restricted by paid\/unpaid state.<\/li>\n<li>Improvement: Invoice-style and packing-slip-style template packs now render document-type-aware titles, references, and dates so aliased document types display correctly without duplicate template stacks.<\/li>\n<li>New: Added admin order-screen download actions and secured admin-post routes for Pro Forma Invoice, Delivery Note, and Statement PDFs.<\/li>\n<li>New: Added a visual template designer with no-code controls for header alignment, logo scale, layout density, information-panel styling, item-table presentation, totals emphasis, and footer alignment across the bundled PDF template packs.<\/li>\n<li>New: Added an Email Attachments preview and test-send workflow so admins can inspect mapped PDFs for a specific order, open live document previews, and send attachment-only test emails before using live WooCommerce email flows.<\/li>\n<li>New: Added field controls for SKU visibility, item meta, per-line tax details, payment\/shipping metadata, tax totals, customer notes, and the latest internal WooCommerce order note across bundled PDF templates.<\/li>\n<li>New: Added settings-based custom order field rows using <code>meta_key|Label<\/code>, so stores can surface tracking numbers, fulfilment references, warehouse picks, and other order meta without overriding templates.<\/li>\n<li>Improvement: Receipt and credit note templates now support the same configurable line-item detail controls used by invoices and packing slips.<\/li>\n<li>New: Added advanced numbering controls for invoices, receipts, packing slips, and credit notes with configurable prefixes, token-based formats, sequence padding, and calendar-year or fiscal-year resets.<\/li>\n<li>New: Added fiscal-year and country-aware numbering tokens so stores can build region-specific compliance formats without editing plugin code.<\/li>\n<li>Improvement: Credit notes now support refund-aware numbering formats while issued documents keep their first generated identifiers for immutable re-delivery and audit consistency.<\/li>\n<li>Improvement: Packing slip templates and the WooCommerce admin meta box now show stored document identifiers instead of assuming order-number based document numbers.<\/li>\n<li>New: Added persistent archived PDF storage so generated documents can be reused as immutable copies for later downloads, emails, and batch exports.<\/li>\n<li>Improvement: Added packing slip archive identifiers and timestamps so stored packing slips stay stable after first generation.<\/li>\n<li>Dev: Added archive metadata on orders and developer hooks for controlling archive retention paths and off-site archive workflows.<\/li>\n<li>New: Added WooCommerce order-list bulk actions for exporting invoice, packing slip, receipt, and credit note ZIP batches.<\/li>\n<li>Improvement: Added shared batch archive generation on top of the existing on-demand PDF renderer so batch exports reuse the same document templates, numbering, and security rules.<\/li>\n<li>Improvement: Credit note batch exports now skip non-refunded orders automatically instead of generating empty credit note downloads.<\/li>\n<li>Dev: Added a developer filter for customizing generated batch ZIP filenames.<\/li>\n<\/ul>\n\n<h4>1.0.6 (19 March 2026)<\/h4>\n\n<ul>\n<li>UI: Improved the Kitgenix admin header layout for better alignment and less clutter.<\/li>\n<li>UI: Social links in admin headers now render as compact icon buttons (with accessible labels).<\/li>\n<li>UI: Added responsive header helpers so titles\/description and actions\/links lay out consistently.<\/li>\n<li>Fix: Admin notices now display above the Kitgenix header using the WordPress standard notice area.<\/li>\n<li>Fix: Added defensive notice normalization to prevent notices being relocated into the header by other scripts.<\/li>\n<li>Fix: Restored consistent spacing between settings tabs and section cards.<\/li>\n<li>UI: Admin tables inside Kitgenix pages now use Kitgenix styling for a more consistent branded look.<\/li>\n<li>Fix: Added spacing between adjacent action links\/buttons (e.g., Edit\/Delete).<\/li>\n<li>Maintenance: 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.<\/li>\n<\/ul>\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>Improvement: 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>Maintenance: 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, templates, and email attachments.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/270053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=270053"}],"author":[{"embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/kitgenix"}],"wp:attachment":[{"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=270053"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=270053"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=270053"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=270053"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=270053"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ja.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=270053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}