{"id":371410,"date":"2026-10-12T04:35:13","date_gmt":"2026-10-12T04:35:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/cnb-order-pdf-receipts-for-woocommerce\/"},"modified":"2026-10-12T04:19:49","modified_gmt":"2026-10-12T04:19:49","slug":"cnb-order-pdf-receipts-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/cnb-order-pdf-receipts-for-woocommerce\/","author":17771672,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.1","stable_tag":"trunk","tested":"7.1.3","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"CNB Order PDF Receipts for WooCommerce","header_author":"Esoftinfo Technologies","header_description":"Generates a branded PDF receipt for each WooCommerce order and attaches it to order emails, without changing your existing email templates. Automatically includes booking\/attendee custom fields (e.g. from event and booking plugins). No Composer or command line required.","assets_banners_color":"","last_updated":"2026-10-12 04:19:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/esoftinfo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.2.2":"<p>Plugin renamed to &quot;CNB Order PDF Receipts for WooCommerce&quot; - update your bookmarks\/shortcuts if referencing the old name. No functional changes.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page - branding, template picker, and section toggles","2":"Classic Invoice template example, including a Booking \/ Attendee Details section","3":"Modern Card template example","4":"Minimal Receipt template example","5":"Order screen - Download PDF Receipt and Send Test Email tools"}},"plugin_section":[],"plugin_tags":[285951,13525,285950,57399,176758],"plugin_category":[],"plugin_contributors":[285952],"plugin_business_model":[],"class_list":["post-371410","plugin","type-plugin","status-publish","hentry","plugin_tags-booking-attendee","plugin_tags-event-booking","plugin_tags-order-receipt","plugin_tags-pdf-invoice","plugin_tags-woocommerce-pdf","plugin_contributors-khilendrasahu","plugin_committers-khilendrasahu"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/cnb-order-pdf-receipts-for-woocommerce.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>CNB Order PDF Receipts for WooCommerce attaches a professional PDF receipt\/invoice to WooCommerce order emails - without changing your existing email templates. It hooks into WooCommerce's native email attachment system, so your order confirmation emails stay exactly as they are; the PDF is simply attached alongside them.<\/p>\n\n<p>Unlike most WooCommerce PDF invoice plugins, this one is built with <strong>booking and event plugins in mind<\/strong>: many of them (for example calendar\/event-booking plugins) create a standard WooCommerce order per booking and store attendee details - name, email, phone, VAT-exempt status, and similar - as order-level custom fields. This plugin automatically detects those fields and lists them in a \"Booking \/ Attendee Details\" section on the PDF, so attendee information travels with the receipt without any extra setup.<\/p>\n\n<p><strong>Key features<\/strong><\/p>\n\n<ul>\n<li>Attaches automatically to the WooCommerce order emails you choose (Processing, Completed, Invoice, On-hold)<\/li>\n<li>Automatically includes booking\/attendee custom fields (from event and booking plugins that store attendee data as order meta) in a dedicated section - toggle-able on or off<\/li>\n<li>Three built-in PDF layouts: Classic Invoice, Modern Card, and Minimal Receipt<\/li>\n<li>Customize company name, address, logo, accent color, invoice number prefix, date format, and footer text<\/li>\n<li>Fees and shipping are automatically itemized alongside products, so totals always reconcile<\/li>\n<li>A \"Download PDF Receipt\" button and a \"Send Test Email Now\" tool on the order edit screen, so you can preview and test without emailing real customers<\/li>\n<li>Advanced: a <code>wcpr_template_path<\/code> filter for developers who want to supply their own template entirely<\/li>\n<li>No configuration required to get started - sensible defaults are applied on activation<\/li>\n<li>No Composer, SSH, or command line needed - everything required is bundled in the plugin<\/li>\n<\/ul>\n\n<h4>External services<\/h4>\n\n<p>This plugin does not send any data to third-party servers, and does not track usage or phone home.<\/p>\n\n<p>It bundles the <a href=\"https:\/\/github.com\/dompdf\/dompdf\">Dompdf<\/a> library to render PDFs entirely on your own server. If you set a <strong>Logo URL<\/strong> in the plugin's settings, Dompdf will fetch that single image URL at the moment each PDF is generated, in order to embed it in the document. No other network requests are made. If you do not set a logo, no external request occurs.<\/p>\n\n<h4>Credits \/ bundled libraries<\/h4>\n\n<p>This plugin bundles the following open-source libraries, each under a GPL-compatible license:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/dompdf\/dompdf\">Dompdf<\/a> - LGPL-2.1<\/li>\n<li><a href=\"https:\/\/github.com\/dompdf\/php-font-lib\">php-font-lib<\/a> - LGPL-2.1<\/li>\n<li><a href=\"https:\/\/github.com\/dompdf\/php-svg-lib\">php-svg-lib<\/a> - LGPL-2.1<\/li>\n<li><a href=\"https:\/\/github.com\/sabberworm\/PHP-CSS-Parser\">PHP-CSS-Parser<\/a> - MIT<\/li>\n<li><a href=\"https:\/\/github.com\/Masterminds\/html5-php\">html5-php<\/a> - MIT<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin (via Plugins &gt; Add New &gt; Upload Plugin, or by extracting to <code>wp-content\/plugins\/<\/code>).<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Go to WooCommerce &gt; PDF Receipts to set your company details, choose a template, and select which order emails should receive the PDF attachment.<\/li>\n<li>Open any order and use the \"Download PDF Receipt\" button (in the side meta box) to preview the result, or \"Send Test Email Now\" to test the full email + attachment flow without emailing a real customer.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"will%20this%20change%20my%20existing%20order%20emails%3F\"><h3>Will this change my existing order emails?<\/h3><\/dt>\n<dd><p>No. The plugin only adds a PDF file attachment via WooCommerce's <code>woocommerce_email_attachments<\/code> hook. Your email subject, body, and template are never modified.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20booking%2Fevent%20plugins%3F\"><h3>Does this work with booking\/event plugins?<\/h3><\/dt>\n<dd><p>Yes, as long as the booking plugin creates a standard WooCommerce order (most do). Attendee\/booking details stored as order-level custom fields are automatically included in the \"Booking \/ Attendee Details\" section of the PDF (this section can be turned off in settings if not needed).<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20install%20anything%20else%20%28composer%2C%20ssh%2C%20a%20pdf%20library%29%3F\"><h3>Do I need to install anything else (Composer, SSH, a PDF library)?<\/h3><\/dt>\n<dd><p>No. The PDF library (Dompdf) is bundled inside the plugin. Just install, activate, and configure from the WordPress admin.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20pdf%20design%20further%3F\"><h3>Can I customize the PDF design further?<\/h3><\/dt>\n<dd><p>Yes. Copy one of the files in the <code>templates\/<\/code> folder into your theme and use the <code>wcpr_template_path<\/code> filter to point to your own version for full control over the design.<\/p><\/dd>\n<dt id=\"where%20are%20generated%20pdfs%20stored%3F\"><h3>Where are generated PDFs stored?<\/h3><\/dt>\n<dd><p>In a protected folder at <code>wp-content\/uploads\/wcpr-invoices\/<\/code>, which is blocked from public directory listing via <code>.htaccess<\/code>. PDFs are regenerated automatically whenever your settings or the order data change.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens to my data if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>Uninstalling removes the plugin's own settings and any cached PDF files it generated. It does not modify or remove any WooCommerce order data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Fixed: removed the <code>Requires Plugins: woocommerce<\/code> header, which could cause WordPress to refuse activation in some bulk-activation\/automated test environments even when WooCommerce was active. The plugin already checks for WooCommerce at runtime and shows a clear admin notice instead of a fatal error if it's missing, so this check alone now governs activation.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Removed: the \"Custom CSS\" setting has been removed per WordPress.org guidelines, which no longer permit plugins to accept arbitrary user-supplied CSS\/JS\/PHP. Use the <code>wcpr_template_path<\/code> filter with your own copied template file for custom styling instead.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Reliability: PDF generation errors can no longer interrupt WooCommerce's email\/checkout flow. All PDF generation steps (not just the final render) are now wrapped in error handling - any failure silently skips the attachment instead of risking a fatal error during checkout. Payment processing itself was never affected by this (it completes before this code runs), but this closes a theoretical gap that could have disrupted the post-payment email\/redirect step.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Fix: removed the \"Plugin URI\" header, which duplicated \"Author URI\" and was rejected during submission (\"plugin and author URIs are the same\"). Only Author URI is now set.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Fix: replaced direct filesystem calls (readfile, unlink, rmdir) with WP_Filesystem API and wp_delete_file(), per WordPress.org coding standards.<\/li>\n<li>Fix: uninstall.php database queries now fully use $wpdb-&gt;prepare() (including table identifiers via %i), and variables are properly scoped\/prefixed.<\/li>\n<li>Improvement: debug logging is now gated behind WP_DEBUG.<\/li>\n<li>Improvement: added composer.json documenting the bundled Dompdf dependency.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Renamed plugin to \"CNB Order PDF Receipts for WooCommerce\" ahead of WordPress.org submission, to follow trademark-naming guidance and better reflect the booking\/attendee-details differentiator.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Update plugin author credit to Esoftinfo Technologies (https:\/\/esoftinfo.com).<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Add: proper uninstall cleanup (removes plugin settings and cached PDFs when deleted, per WordPress.org guidelines). WooCommerce order data itself is never touched.<\/li>\n<li>Prepared for WordPress.org Plugin Directory submission (readme.txt, licensing, external-services disclosure).<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix: settings changes (template, colors, toggles) now correctly invalidate cached PDFs, so changes take effect immediately.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add: three selectable PDF templates (Classic Invoice, Modern Card, Minimal Receipt).<\/li>\n<li>Add: flexible settings - accent color, logo width, paper size, date format, section toggles, and a Custom CSS field.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Add: automatic cache invalidation when the template file changes.<\/li>\n<li>Add: default company details pre-filled on activation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: PDF receipt generation and attachment to WooCommerce order emails, with a Classic Invoice layout, order-level custom field support, and admin tools to preview\/test.<\/li>\n<\/ul>","raw_excerpt":"Attaches a branded PDF receipt to WooCommerce order emails, automatically including booking\/attendee details from event and booking plugins.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371410","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=371410"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/khilendrasahu"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371410"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371410"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371410"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371410"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371410"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}