Skip to content

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:

  1. Open Plugins → Installed Plugins.
  2. Activate Easy Invoice first.
  3. Then activate Easy Invoice Pro.

License activation fails

Symptom: the License page shows Could not connect to license server or Invalid response.

Causes & fixes:

CauseFix
Outbound HTTPS firewall on your hostWhitelist store.mantrabrain.com in your host's outbound rules.
wp_remote_post blocked by a security pluginTemporarily disable Wordfence / iThemes Security and retry.
Site URL changed since purchaseManually deactivate the old URL in your MatrixAddons account, then activate fresh.
License expiredRenew at matrixaddons.com/account.

Public invoice URL shows a 404

Cause: pretty permalinks aren't set, or rewrite rules are stale.

Fix:

  1. Open Settings → Permalinks.
  2. Pick anything except Plain (recommend Post name).
  3. Click Save Changes — this flushes rewrite rules.
  4. 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_slugs

This 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:

  1. Install WP Mail SMTP (or any SMTP plugin).
  2. Configure it with SendGrid, Postmark, Mailgun, Amazon SES, or Gmail SMTP.
  3. Add SPF, DKIM, DMARC records to your domain.
  4. 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_failed actions.
  • 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:

  1. Add to wp-config.php:
    php
    define( 'DISABLE_WP_CRON', true );
  2. 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

CauseFix
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 showsPer-client default gateway is set. Check the client's user profile.

Stripe webhook not received

  1. In Stripe dashboard → Developers → Webhooks, click your endpoint → Send test webhook.
  2. Watch your server's access log for the request.
  3. If the request arrives but Easy Invoice doesn't react, check the Signing secret matches.
  4. 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_client role.

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.