Tax Exemption for WooCommerce

How can we help?

Search the documentation or ask the AI agent anything about the plugin.

Certificate uploads are failing

Updated September 15, 2026

Certificate uploads have a few hard rules, and most failures come down to one of them. The upload field is configured on the Certificates tab at Tax Exemption › Settings.

Only PDF files are accepted

Anything else is rejected with “Only PDF files are allowed.” Customers photographing a paper certificate on their phone will produce a JPEG or HEIC and hit this immediately — it is worth saying so in the field description on the Custom Text tab.

The file is too large

The limit is your WordPress maximum upload size, and the error message names the actual figure. If that number is too low for scanned documents, raise upload_max_filesize and post_max_size in your PHP configuration, or ask your host to.

“Please wait a moment before uploading another file”

There is a short throttle between uploads from the same customer. If they are retrying quickly after a failure, a few seconds’ pause clears it.

A certificate is required but there is no upload field

If Required is on but Show on Checkout is off — or the customer is on the cart checkbox or the block checkout — there is nowhere to upload. The customer is pointed at their Tax Exemption page in My Account to complete it there. Make sure Show on My Account is enabled, or that route is a dead end.

The Certificates settings tab, where the Required, Show on Checkout, Show on My Account and Per-Order Upload options that cause most upload problems are set

A returning customer is asked again

That is Per-Order Upload working as intended — it requests a fresh certificate for every order rather than reusing the one on the account. Turn it off if a single certificate should cover future orders.

The certificate link does not open

Certificate links go through an access-controlled handler rather than a direct uploads URL, so they only work for someone entitled to view that file. If a link 404s, the file may have been superseded — uploading a new certificate deletes the customer’s previous one — or cleared by the daily temporary-file cleanup before it was attached to an order.

If you are on nginx

The directory protection the plugin writes is an .htaccess file, which nginx ignores. Links the plugin renders are still gated, but add a deny block for /wp-content/uploads/tax-exemption/ to your nginx configuration so a direct request to a known path is refused before PHP is reached.

Upgrading from an older version

Several certificate bugs were fixed in 3.1.0, including failed checkout uploads reporting success, the required setting not being enforced on the block checkout, and customers being unable to delete their own certificate. If you are on an earlier version, update before troubleshooting further.

Related

Was this article helpful?