

The Tax Exemption section on a user's profile screen (Users → Edit User) — the Always/Never/follow-role-rules override and internal note field. Free.
Rankd Tax Exemption Certificates for WooCommerce provides a complete, audit-ready tax exemption workflow for WooCommerce stores.
Compatibility notice: This plugin cannot guarantee compatibility with plugins that write directly to the WooCommerce customer session object rather than using the standard woocommerce_customer_is_vat_exempt filter. If your store uses such a plugin, this plugin may not function correctly for affected customers. See the Plugin Compatibility section below for details and resolution options.
FREE FEATURES:
PRO FEATURES (via Freemius license):
WooCommerce is the only required dependency.
Tax is removed from that customer’s cart and checkout on their next page load.
Customer flow:
Admin flow:
Expiry:
Role compliance (Pro):
WooCommerce Settings Tax Exempt Certs:
Pro adds:
This plugin includes a developer filter for external systems to opt individual users out of its management entirely.
Example — wholesale plugin integration:
add_filter( 'rankd_tx_skip_user', function( $skip, $user_id ) {
// Tell this plugin to ignore users managed by your wholesale system.
if ( has_wholesale_exemption( $user_id ) ) return true;
return $skip;
}, 10, 2 );
The plugin also supports additional exemption sources via:
add_filter( 'rankd_tx_exemption_sources', function( $sources, $user_id ) {
if ( has_wholesale_exemption( $user_id ) ) $sources[] = 'wholesale';
return $sources;
}, 10, 2 );
Exemption is applied if ANY source returns active. This plugin never removes an exemption granted by another system.
USER META (wp_usermeta):
_rankd_tx_is_exempt — String. Per-user override: always, never, or absent (follow role rules). Legacy 1 values from the pre-1.5.0 checkbox are read as always._rankd_tx_exempt_note — String. Admin note. Never shown to customer.CUSTOM TABLES (Pro):
{prefix}rankd_tx_certificates — One row per certificate submission.{prefix}rankd_tx_audit_log — One row per status change event.UPLOADS (Pro):
Tax exemption details are automatically added to PDF invoices for:
The notice includes: Organization name, Certificate number, Jurisdiction, Certificate expiry date. It always reflects the certificate that covered the order at purchase time, even if the customer’s status changes later.
Developer filters:
rankd_tx_show_invoice_notice — return false to suppress entirelyrankd_tx_invoice_document_types — array of document types to show on (default: invoice, proforma, credit-note)rankd_tx_invoice_notice_html — replace the full notice HTML (args: $html, $order)Important: This plugin cannot guarantee compatibility with plugins that write directly to the WooCommerce customer session object rather than using the woocommerce_customer_is_vat_exempt filter. These plugins bypass the filter system entirely and no priority adjustment will resolve the conflict.
WooCommerce determines tax exemption via a single boolean flag on the customer session. This plugin hooks into this system at filter priority 20, which means:
This is by design. This plugin deliberately avoids overriding other systems that have already made an exemption decision.
If you are building or maintaining a plugin that manages tax exemption for certain users, you can tell this plugin to step aside entirely for those users using the rankd_tx_skip_user filter:
add_filter( 'rankd_tx_skip_user', function( $skip, $user_id ) {
if ( my_plugin_manages_this_user( $user_id ) ) {
return true;
}
return $skip;
}, 10, 2 );
When rankd_tx_skip_user returns true for a user:
rankd_tx_skip_user to exclude users managed by the other plugin. This is the cleanest solution and eliminates the conflict at the source.woocommerce_customer_is_vat_exempt filter, adjusting its priority relative to this plugin (priority 20) may resolve the conflict. Contact the other plugin’s developer for guidance.Fully supported. The plugin writes an .htaccess file to the certificate upload directory that blocks all direct HTTP access. No additional configuration required.
The .htaccess file has no effect on Nginx servers. If your site runs Nginx, add the following block to your server configuration to protect uploaded certificate files:
location ~* /uploads/rankd-tax-exempt-certs/ {
deny all;
return 403;
}
The plugin displays a persistent admin notice if it detects an Nginx server or a missing .htaccess file, with instructions for your hosting provider or server administrator. The notice can be dismissed once the configuration is confirmed.
A fallback index.php is also written to the directory to prevent directory listing on servers that process neither .htaccess nor Nginx location blocks.
Certificate expiry enforcement and warning emails run as daily scheduled actions via Action Scheduler — the background job system built into WooCommerce. No hosting configuration, wp-config changes, or extra plugins are required.
You can view, monitor, and manually run the plugin’s scheduled actions at WooCommerce Status Scheduled Actions (search for “rankd_tx”).
As a safety net, if the checks have not completed in over 36 hours the plugin displays an admin notice with a one-click Run checks now button, so a store manager can trigger the expiry check and warning emails immediately from the dashboard.
For additional reliability on very low-traffic sites, a server-side cron job in your hosting control panel is optional hardening:
curl -s "https://yoursite.com/wp-cron.php?doing_wp_cron" > /dev/null<h3>Developer Reference</h3>
Filters:
rankd_tx_skip_user — Return true to exclude a user from this plugin.rankd_tx_exemption_sources — Add external exemption sources.rankd_tx_tax_id_labels — Modify the per-country tax ID label map.rankd_tx_exemption_types_map — Modify the per-country exemption type lists.rankd_tx_generic_exempt_types — Modify the generic exemption type fallback list.rankd_tx_settings — Add/modify settings fields.rankd_tx_review_queue_per_page — Change review queue page size (default 50).rankd_tx_show_invoice_notice, rankd_tx_invoice_document_types, rankd_tx_invoice_notice_html — see Invoice Plugin Integration.Actions:
rankd_tx_certificate_submitted — Fires on new submission. Args: $user_id, $cert_idrankd_tx_certificate_approved — Fires on approval. Args: $user_id, $cert_id, $expiry_daterankd_tx_certificate_rejected — Fires on rejection. Args: $user_id, $cert_id, $reasonrankd_tx_certificate_revoked — Fires on revocation. Args: $user_id, $cert_id, $reasonrankd_tx_certificate_expiry_warning — Fires on warning. Args: $user_id, $cert_id, $expiry_daterankd_tx_certificate_expired — Fires on expiry. Args: $user_id, $cert_idBy default, deleting the plugin via the WordPress admin Plugins screen removes
NOTHING beyond scheduled tasks — deactivating never removes data, and neither
does deleting, unless you explicitly opt in.
To permanently remove all plugin data on uninstall, enable “Remove Data on
Uninstall” at WooCommerce Settings Tax Exempt Certs before deleting the
plugin. With that enabled, uninstalling removes:
_rankd_tx_is_exempt, _rankd_tx_exempt_note)_rankd_tx_was_exempt, _rankd_tx_sources, _rankd_tx_cert_id)Uploaded certificate files are never deleted automatically, even with this
setting enabled — remove them manually if required:
wp-content/uploads/rankd-tax-exempt-certs/
Uploaded certificate files in wp-content/uploads/rankd-tax-exempt-certs/ are NOT automatically deleted as they may be needed for compliance records. Delete the directory manually if required.