{"id":302938,"date":"2026-08-17T23:41:19","date_gmt":"2026-08-17T23:41:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/axagen-bulk-invoice-generator\/"},"modified":"2026-08-17T23:54:30","modified_gmt":"2026-08-17T23:54:30","slug":"axagen-bulk-invoice-generator","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/axagen-bulk-invoice-generator\/","author":23484021,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.4.5","stable_tag":"0.4.5","tested":"7.0.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Axagen Bulk Invoice Generator","header_author":"Axagen","header_description":"Generate and download bulk PDF invoices for WooCommerce orders \u2014 filter by date, status, or order number, then get a single ZIP. Supports Latin, Extended Latin (\u00e4, \u00f6, \u00fc, \u00e6, \u00f8, \u00e5) and Cyrillic scripts.","assets_banners_color":"","last_updated":"2026-08-17 23:54:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.youtube.com\/channel\/UCY9nRy0lLXiFEb8N0q-9csw","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.4.5":{"tag":"0.4.5","author":"axagen","date":"2026-08-17 23:54:30"}},"upgrade_notice":{"0.4.0":"<p>Redesigned invoice layout and PHP 8.4 compatibility fixes. Recommended update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3651842,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3651842,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.4.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Plugin settings page \u2014 configure seller info, logo, language, and colors","2":"Generate ZIP form \u2014 filter by date, status, order number, and count","3":"Example generated invoice PDF"}},"plugin_section":[],"plugin_tags":[3236,12480,16281,1764,286],"plugin_category":[45,50],"plugin_contributors":[276179],"plugin_business_model":[],"class_list":["post-302938","plugin","type-plugin","status-publish","hentry","plugin_tags-bulk","plugin_tags-invoice","plugin_tags-orders","plugin_tags-pdf","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_category-media","plugin_contributors-axagen","plugin_committers-axagen"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/axagen-bulk-invoice-generator\/assets\/icon-128x128.png?rev=3651842","icon_2x":"https:\/\/ps.w.org\/axagen-bulk-invoice-generator\/assets\/icon-256x256.png?rev=3651842","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Bulk Invoice Generator lets you export WooCommerce orders as PDF invoices in bulk. Filter by date range, order status, starting order number, or limit the count \u2014 then download everything as a single ZIP file with one click.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li>Filter orders by date range, status, starting order number, and max count<\/li>\n<li>Live progress bar during generation<\/li>\n<li>Download all invoices as a single ZIP<\/li>\n<li>Seller info, logo, IBAN, VAT number configurable in settings<\/li>\n<li>Supports Latin, Extended Latin, and Cyrillic scripts (Estonian, Russian, English, and more)<\/li>\n<li>Automatic table header color picker<\/li>\n<li>Works with both legacy WooCommerce order storage and HPOS (High-Performance Order Storage)<\/li>\n<li>Compatible with PHP 8.4<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>WooCommerce 7.0 or later<\/li>\n<li>For styled PDF invoices: <a href=\"https:\/\/github.com\/dompdf\/dompdf\">dompdf<\/a> (optional \u2014 plain text fallback included)<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>axagen-bulk-invoice-generator<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Go to <strong>WooCommerce \u2192 Bulk Invoices<\/strong> to configure your seller info<\/li>\n<li>Use the Generate ZIP form to filter and download invoices<\/li>\n<\/ol>\n\n<p><strong>Optional \u2014 styled PDF invoices:<\/strong><\/p>\n\n<p>By default the plugin generates simple plain-text PDFs. For formatted invoices with your logo, colors, and proper layout, install dompdf:<\/p>\n\n<ol>\n<li>Download <a href=\"https:\/\/github.com\/dompdf\/dompdf\/releases\">dompdf v3.x<\/a> as a ZIP<\/li>\n<li>Extract and rename the folder to <code>dompdf<\/code><\/li>\n<li>Place it inside the plugin folder: <code>axagen-bulk-invoice-generator\/dompdf\/<\/code><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20hpos%3F\"><h3>Does this work with HPOS?<\/h3><\/dt>\n<dd><p>Yes. The plugin automatically detects whether your store uses legacy order storage (wp_posts) or High-Performance Order Storage and queries accordingly.<\/p><\/dd>\n<dt id=\"what%20pdf%20library%20does%20it%20use%3F\"><h3>What PDF library does it use?<\/h3><\/dt>\n<dd><p>It uses <a href=\"https:\/\/github.com\/dompdf\/dompdf\">dompdf<\/a> if available in the plugin folder. If not found, it falls back to a built-in plain-text PDF generator that requires no external libraries.<\/p><\/dd>\n<dt id=\"how%20many%20invoices%20can%20it%20generate%20at%20once%3F\"><h3>How many invoices can it generate at once?<\/h3><\/dt>\n<dd><p>Tested with 1,000+ orders. Memory usage is kept low by processing orders one at a time and running garbage collection every 10 orders. For very large batches (2,000+), increase your PHP <code>memory_limit<\/code> and <code>max_execution_time<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multiple%20languages%3F\"><h3>Does it support multiple languages?<\/h3><\/dt>\n<dd><p>Yes \u2014 the plugin renders Latin, Extended Latin, and Cyrillic scripts (covering Estonian, Russian, English, and more). Select the invoice language in plugin settings.<\/p><\/dd>\n<dt id=\"where%20is%20the%20generated%20zip%20stored%3F\"><h3>Where is the generated ZIP stored?<\/h3><\/dt>\n<dd><p>The ZIP is written to <code>wp-content\/uploads\/bulk-invoices-tmp\/<\/code> and deleted immediately after download.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.4.5<\/h4>\n\n<ul>\n<li>Added uninstall.php \u2014 deletes all plugin settings (the 14 axagbuin_invoice_* options), any leftover axagbuin_job_* transients, and the temporary ZIP working folder when the plugin is deleted from Plugins screen.<\/li>\n<\/ul>\n\n<h4>0.4.4<\/h4>\n\n<ul>\n<li>Replaced raw ini_set('memory_limit', ...) calls with WordPress's own wp_raise_memory_limit('admin') helper in handle_download() and handle_stream() \u2014 this only ever raises (never lowers) the limit, respects the site's configured ceiling, and is the WordPress-native way to do this instead of a direct PHP ini_set() call.<\/li>\n<\/ul>\n\n<h4>0.4.3<\/h4>\n\n<ul>\n<li>Fixed load_dompdf() checking the wrong paths for the bundled dompdf library \u2014 it never checked dompdf\/vendor\/autoload.php (the actual location Composer installs to), only dompdf\/autoload.inc.php and vendor\/dompdf\/autoload.inc.php, neither of which exist in this bundle. Invoices were silently falling back to plain-text PDFs instead of styled ones.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Fixed phpcs:ignore comments on ini_set() calls to also suppress Squiz.PHP.DiscouragedFunctions.Discouraged (previously only listed WordPress.PHP.IniSet.Risky, leaving 5 Plugin Check warnings unsuppressed)<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Moved inline admin JS\/CSS to properly enqueued assets (wp_enqueue_script\/wp_enqueue_style)<\/li>\n<li>Replaced WP_CONTENT_DIR usage in dompdf chroot with wp_upload_dir()<\/li>\n<li>Bounded memory_limit increase (was unlimited) to 512M, scoped and restored after generation<\/li>\n<li>Renamed all functions, classes, options, transients, and hooks to use a unique axagbuin_ prefix<\/li>\n<li>Namespaced client-supplied job keys under a plugin-specific transient prefix to prevent arbitrary transient overwrites<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Redesigned invoice layout: logo + seller top, ARVE title standalone, buyer + order meta two-column<\/li>\n<li>Added product variation\/meta lines under product names<\/li>\n<li>Fixed date and status filters using direct SQL (compatible with PHP 8.4)<\/li>\n<li>Transient-based live progress bar (works with buffered Apache servers)<\/li>\n<li>Settings now save via wp_ajax (admin-post.php bypass fix)<\/li>\n<li>Added cancel button during generation<\/li>\n<\/ul>\n\n<h4>0.3.6<\/h4>\n\n<ul>\n<li>Initial public release<\/li>\n<li>Support for HPOS and legacy WooCommerce storage<\/li>\n<li>EN\/ET\/RU language support<\/li>\n<li>Dual-path SQL filtering<\/li>\n<\/ul>","raw_excerpt":"Bulk PDF invoices for WooCommerce \u2014 filter by date, status, or order number and download a ZIP. Supports Latin, Extended Latin and Cyrillic.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/302938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=302938"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/axagen"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=302938"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=302938"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=302938"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=302938"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=302938"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=302938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}