Troubleshooting
A symptom-based guide. Find the closest match, follow the steps, and you'll have it sorted in minutes.
Activation & license
Pro deactivates immediately on activation
Symptom: clicking Activate on Easy Invoice Pro shows Plugin auto-deactivated because Easy Invoice is required.
Cause: the free Easy Invoice plugin is not active.
Fix:
- Open Plugins → Installed Plugins.
- Activate Easy Invoice first.
- Then activate Easy Invoice Pro.
License activation fails
Symptom: the License page shows Could not connect to license server or Invalid response.
Causes & fixes:
| Cause | Fix |
|---|---|
| Outbound HTTPS firewall on your host | Whitelist store.mantrabrain.com in your host's outbound rules. |
wp_remote_post blocked by a security plugin | Temporarily disable Wordfence / iThemes Security and retry. |
| Site URL changed since purchase | Manually deactivate the old URL in your MatrixAddons account, then activate fresh. |
| License expired | Renew at matrixaddons.com/account. |
Permalinks & 404s
Public invoice URL shows a 404
Cause: pretty permalinks aren't set, or rewrite rules are stale.
Fix:
- Open Settings → Permalinks.
- Pick anything except Plain (recommend Post name).
- Click Save Changes — this flushes rewrite rules.
- Reload the invoice URL.
If still 404, run the maintenance flush:
yoursite.com/wp-admin/admin-post.php?action=flush_easy_invoice_rewrite_rules(Logged-in admin only; redirects back to dashboard.)
Quote URL still shows old slug after rename
Fix: visit:
yoursite.com/wp-admin/admin-post.php?action=fix_easy_invoice_quote_slugsThis re-syncs the quote slugs after a CPT rename.
PDF problems
PDF download is blank or shows only the first page
Cause: jsPDF + html2canvas's canvas-capture struggles with very tall content.
Fixes:
- Reduce line items if the invoice has 50+.
- Switch the browser to Chrome or Edge (the canvas implementation is more forgiving than older Safari).
- Use Print → Save as PDF (Cmd-P / Ctrl-P) as a fallback — produces a faithful copy.
PDF font looks weird / boxed
Cause: Custom theme font is not embedded.
Fix: use a Google Font that's already loaded on the site, or set a system font (Arial, Helvetica, Georgia) under Settings → PDF Options (Pro).
Email not arriving
Cause: WordPress's wp_mail falls back to PHP's mail() function, which most hosts throttle or block.
Fix:
- Install WP Mail SMTP (or any SMTP plugin).
- Configure it with SendGrid, Postmark, Mailgun, Amazon SES, or Gmail SMTP.
- Add SPF, DKIM, DMARC records to your domain.
- Test deliverability at mail-tester.com.
If emails still don't fire:
- Check Settings → Email → General — make sure each template is enabled.
- Watch the WP debug log for
easy_invoice_email_failedactions. - Verify the recipient email isn't on a corporate filter list.
Reports / charts blank
Symptom: Easy Invoice → Reports shows headings but no charts.
Causes:
- Browser blocked Chart.js (uBlock Origin sometimes does).
- Mixed-content warning (your site is HTTP but a chart asset is HTTPS, or vice versa).
Fix: open browser dev tools → Console tab. Look for blocked scripts. Whitelist cdn.jsdelivr.net if needed, or move the site to HTTPS.
WP-Cron isn't running
Symptom: recurring invoices aren't generated, payment reminders never fire.
Cause: WP-Cron only fires on page visits. Low-traffic sites barely run cron.
Fix: switch to a real cron job:
- Add to
wp-config.php:phpdefine( 'DISABLE_WP_CRON', true ); - Add a system cron entry (cPanel → Cron Jobs):
*/5 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1
This pings WP-Cron every 5 minutes, regardless of visitors.
Gateway issues
Gateway not showing on the public invoice
| Cause | Fix |
|---|---|
| Gateway not enabled in Settings → Payment. | Toggle on. |
| Missing API key / credential. | Fill in the credentials and save. |
| Currency mismatch. | Switch invoice currency to one the gateway supports. |
| Pro license expired. | Renew. |
| Multiple gateways enabled, only one shows | Per-client default gateway is set. Check the client's user profile. |
Stripe webhook not received
- In Stripe dashboard → Developers → Webhooks, click your endpoint → Send test webhook.
- Watch your server's access log for the request.
- If the request arrives but Easy Invoice doesn't react, check the Signing secret matches.
- If the request never arrives, your firewall blocks Stripe's IPs — whitelist the Stripe webhook IPs.
Moneris not showing
The Moneris gateway files exist in the Pro plugin but may not load if the require list is gapped. Workaround: contact support; they'll provide a small mu-plugin that explicitly requires the Moneris gateway file.
PayPal IPN sometimes missed
PayPal Standard's IPN can drop notifications. Mitigations:
- Enable IPN history retry in your PayPal account.
- Fall back to manual reconciliation: PayPal → Activity → match against unpaid invoices.
Builder & data
Invoice doesn't save
Symptom: clicking Save shows Saving… forever, or returns an error.
Causes:
- Browser console shows a 403 or 401 → nonce expired (refresh the page).
- Console shows a 500 → check
wp-content/debug.log. Typical causes: a malformed line item field, a custom hook throwing. - Browser shows nothing → check Network tab for the AJAX request to
admin-ajax.php.
Items lost after save
Cause: a third-party plugin altered _easy_invoice_items meta in a save_post hook.
Fix: temporarily deactivate other plugins one by one to find the offender.
Client search returns nothing
Cause: the user role excludes them from the autocomplete query.
Fix: ensure the client has either:
- An invoice already attached to them, or
- The
easy_invoice_clientrole.
If you're using a custom role, hook easy_invoice_client_repository_args and add it to the role include list.
Listing & filters
All Invoices is empty after filtering
Cause: filter combo with no matches (e.g. Status: Paid + Date: today when nothing was paid today).
Fix: clear filters with the Reset button.
Updates & versions
Pro update notification doesn't appear
Cause: License is inactive or expired.
Fix: Easy Invoice → License → re-activate. Updates will appear within 12 hours.
Free vs Pro version mismatch
The Free plugin sometimes ships at a different version number than Pro (e.g. Free 2.1.20, Pro 2.1.6). This is intentional — Pro releases follow their own cadence. Compatibility is tested across the supported pair on each release.
Multisite
Each site needs its own license?
Yes — license seats are tracked per site. A Personal license = 1 site, Professional = 5, Agency = 25. Subsite activations count individually.
Where to go next
- ❓ FAQs — quick answers to common questions.
- 💬 Get support — when you need a human.
- 🪝 Hooks & filters — extend behaviour to fix edge cases.