Jump to content

WHMCS.Community

  1. WHMCS Beta Program

    1. WHMCS 9.1 Beta Discussion

      We're excited to announce the beta release of WHMCS 9.1. Be among the first to try out the new features and functionality by getting involved in the release candidate today.

      The purpose of this board is to ask any questions, raise issues or provide feedback on the WHMCS V9.1 Beta. This board will remain open until we reach release day, at which point they be archived. WHMCS V9.1 includes Invoice Immutability Control, Unattended Automatic Updates, New Admin Theme "Iris", New Password Strength & Reuse Controls, PHP 8.4 Support and much more!

      Check out the release highlights for an overview and the release notes for full details.

      As always, RC releases are intended for testing only and are not recommended for production use

      24
      posts
  2. WHMCS.Community

    1. Community Announcements

      Our WHMCS Community Announcements with everything from our community rules to updates on making our community more awesome

      162
      posts
    2. Introduce Yourself

      Introduce yourself here and be sure to come back to welcome others.

      1.3k
      posts
    3. MarketConnect Partner Product Status Updates

      This board is used to communicate any planned or unplanned MarketConnect partner product status updates, this board is read-only and will be updated via the MarketConnect Team when issues arise.  If you are experiencing an issue that is not reported in this board please review the MarketConnect Help Centre or Open a Ticket with our team

      37
      posts
  3. Using WHMCS

    1. Pre-Sales Questions

      Considering purchasing WHMCS but have some questions? Ask them here.

      13.2k
      posts
    2. Admin & Configuration Questions

      This is your space for any questions about WHMCS configuration settings.
       

      6.5k
      posts
    3. Installation, Upgrade, and Import Support

      Get help from the community with installing, upgrading and migrating to WHMCS here

      6.2k
      posts
    4. Using WHMCS

      Have a question about how something works or need help configuring and using WHMCS? Here's the place to do it.

      96.4k
      posts
    5. Troubleshooting Issues

      Use this board to discuss any issues or problems you are encountering. If you think you've found a bug, please report it here

      28.6k
      posts
    6. Vendor Discussions

      Discuss Control panels, payment gateways and domain registrars here

      855
      posts
  4. WHMCS Showcase

    1. Showcase Your Site

      Customized and integrated WHMCS in some way? Show the WHMCS Community here!
       

      8.1k
      posts
    2. Share Your Best Practices & Tips

      Share your tips and advice to the rest of the WHMCS community.
       

      363
      posts
  5. Developing & Extending WHMCS

    1. Third Party Add-ons

      A place to discuss third party modules, add-ons and extensions for the WHMCS platform.

      18.7k
      posts
    2. Service Offers & Requests

      A place to post offers & requests for services related to WHMCS. Rules apply.

      22.9k
      posts
    3. Developer Corner

      Integration, customization and module development, if you have questions, ask them here.

      59.1k
      posts
    4. Building Modules

      Need help while building an extension? Ask your questions here.

      636
      posts
    5. Share Ideas for WHMCS Modules

      Looking for an extension that doesn't exist? Share your ideas and vote on others.

      184
      posts
  6. Community Competitions

    1. News, Announcements & Blogs from WHMCS

      The latest WHMCS News, Announcements & Blog Posts from WHMCS are shared here

      626
      posts
    2. Competitions

      From time to time we run community competitions this is the place you'll find them

      • No posts here yet
  7. General Discussions

    1. General Discussion

      Board for general conversation, share interests, discuss industry related news, etc...

      40.1k
      posts
  8. General Feedback & Assistance

    1. Feedback

      WHMCS Community Feedback helps us to continue improving WHMCS software.

      8.7k
      posts
    2. WHMCS.Community Tips & Tricks

      This board provides an overview of some features and functionality that WHMCS.Community provides.  We add new content from time to time.

      6
      posts
  9. Club Forums

      • No posts here yet
    1. Katamaze Free Scripts

      Perfect your WHMCS with free action hooks, reports and modules. Follow us on Github for more contents.

      52
      posts
    2. Katamaze Module Support

      This board acts as a place where you can get support by us (no guarantee) or by fellow users using your same module.

      149
      posts
    3. 17
      posts
    4. 523
      posts
    5. 494
      posts
    6. 108
      posts
    7. RactStudio Club Topics

      RactStudio is a software development company that offers a range of WHMCS and WordPress products and services that are designed to enhance the functionality and user experience of these platforms. With a focus on quality, affordability, and customer support, RactStudio is the perfect partner for any web hosting company, blogger, and other online businesses who want to take their online presence to the next level.

      • No posts here yet
    8. 69
      posts
    9. 90
      posts
    10. 6
      posts
    11. 7
      posts
    12. 5
      posts
      • No posts here yet
    13. 29
      posts
      • No posts here yet
    14. 30
      posts
    15. 298
      posts
    16. 20
      posts
    17. 22
      posts
  • Member Statistics

    116409
    Total Members
    11199
    Most Online
    betrepubiccasinoone
    Newest Member
    betrepubiccasinoone
    Joined
  • Community Statistics

    82k
    Total Topics
    376.8k
    Total Posts
  • Who's Online   3 Members, 0 Anonymous, 4520 Guests (See full list)

  • Popular Contributors

  • Our picks

    • [From the Blog] WHMCS 9.1 Is Now Available
      WHMCS 9.1 is here! The latest release is now available and supported for use in production environments, bringing new ways to manage billing, simplify routine maintenance, and build more flexible customer experiences. Whether you want greater control over invoice handling, an easier way to get started with MarketConnect, or less manual work keeping your installation up to date, WHMCS 9.1 has something for you. The release also introduces PHP 8.4 support and expands the possibilities for...View the full blog post
      • 0

        Reputation Points

      • 0 replies
    • [From the Blog] WHMCS 9.1 Beta Now Available
      The WHMCS 9.1 Beta is now available for testing on staging environments. Whether you're testing your own integrations and templates, running it on staging to see how it affects your day-to-day work, or just want to help us catch issues before general availability, here's what's changed. Please don't run this build in production. Get it on the WHMCS 9.1 Beta landing page. WHMCS 9.1 Beta includes the following new functionality and enhancements: Credit and Debit Notes, with Invoice Immutability...View the full blog post
      • 0

        Reputation Points

      • 0 replies
    • [From the Blog] WHMCS 9.0 Release Candidate OUT NOW
      We're excited to announce the availability of the WHMCS 9.0 Release Candidate!
      • 1

        Reputation Points

      • 0 replies
  • Topics

  • Posts

    • Though I appreciate the response, I also could have asked AI and copy/pasted the entire thing. All all of your replies I checked appear to be 100% AI generated, please don't bother replying to my posts, if possible. 
    • This caught me out after moving to 9 as well. The 9.0 docs page on Credit and Debit Notes explains what changed: when client credit is applied to an invoice (by hand, or automatically when the invoice is generated), WHMCS now creates a credit note for that amount and settles the invoice through the ledger. That's where your "Applied Credit Note funded by Client Credit" line comes from. The old {$invoice_credit} merge field doesn't seem to follow it, so the email shows 0.00 even though the credit did the paying.   Until WHMCS maps this into the template, my workaround is to work the figure out in an EmailPreSend hook and hand it to the template as a new merge field. EmailPreSend can return extra merge fields, so something like this in /includes/hooks/invoice_credit_mergefield.php:   <?php add_hook('EmailPreSend', 1, function ($vars) {     if (!in_array($vars['messagename'], ['Invoice Payment Confirmation', 'Invoice Created'])) {         return [];     }     $inv = localAPI('GetInvoice', ['invoiceid' => (int) $vars['relid']]);     if (($inv['result'] ?? '') !== 'success') {         return [];     }     $paid = 0.0;     foreach ($inv['transactions']['transaction'] ?? [] as $t) {         $paid += (float) $t['amountin'] - (float) $t['amountout'];     }     $covered = max(0, (float) $inv['total'] - $paid - (float) $inv['balance']);     return ['invoice_credit_applied' => number_format($covered, 2)]; });   Then in the template: Credit Applied: {$invoice_credit_applied}   One thing to check before you rely on it: run GetInvoice on one of the affected invoices and see whether the credit application shows up in the transactions array. If 9 records it there as a transaction (your "Client Account Debit" type suggests it might), the subtraction above will come out as 0. In that case, sum just those rows by their gateway/description instead. Test it on a dev copy or with a test client first, because a broken EmailPreSend hook affects every outgoing email.   About the statement error: "lte() on false" means a date comparison ran on a date that failed to parse, so the 0000-00-00 datepaid on those old cancelled invoices is a very likely cause. I'd send WHMCS support that stack trace along with the two invoice IDs and report it as a bug, rather than editing the rows in the database. In 9 the ledger and the immutability checks depend on those records.  
    • @Rajan Maharaj the two symptoms you describe (an invoice that doesn't generate on time, then a credit nobody expected getting applied to it) very often have the same root cause, so I'd look at them together rather than as two bugs. 1. Check the client's Log tab around the month that went wrong. Every time an invoice is marked paid, WHMCS moves the service's Next Due Date forward one cycle. If the same invoice got marked paid twice (a subscription payment plus a manual card payment, a gateway callback arriving twice, or an admin reactivating and re-paying it), the Next Due Date jumps two months. The system then has nothing to invoice for the "skipped" month, which looks exactly like "the invoice didn't raise". WHMCS has a help article on this: "Why did a service Next Due Date move forward several billing cycles?" 2. Look at where the credit came from. Go to the client's Summary > Manage Credits (and the Transactions tab) and find the entry that created it. If it's a gateway transaction landing on an invoice that was already paid, or arriving before the renewal invoice existed, that's your duplicate payment. With "monthly subscriptions" I'd check the gateway side first: a recurring subscription at PayPal/Stripe still running alongside the client paying invoices by hand is the classic way to get both effects. 3. Rule out the boring causes on the affected services: Status must be Active (with Continuous Invoice Generation on, only Active is invoiced), no pending cancellation request, Next Due Date within your Invoice Generation days (Automation Settings), and no deleted invoice for that due date (an invoice deleted by an admin won't be regenerated automatically). 4. Confirm the cron really finishes. Automation Status should be green, and System Logs should show "Cron Job: Completed" at the end of every day. If the daily run times out halfway on some days, the invoicing task can be the one that doesn't run. If the Log tab shows a double "marked paid" for that service, you've found it. Cancel the duplicate subscription at the gateway, refund or keep the extra payment as credit by agreement with the client, and set the Next Due Date back to the date it should be so the next renewal generates normally.
    • @Web Host Pro, as far as the current docs go, there's still no native Turnstile option. The 9.1 Captcha Protection page lists the built-in captcha types as the default 6-character image code, reCAPTCHA v2 (checkbox and invisible), reCAPTCHA v3, hCaptcha and Invisible hCaptcha, so Turnstile only comes in through a third-party module or your own hooks for now. Before buying anything, I'd try the native options properly, because a lot of the "captcha is a mess" pain I've seen on WHMCS installs comes from the setup around it rather than the captcha itself: 1. Switch to reCAPTCHA v3 or Invisible hCaptcha and tune the score threshold. WHMCS's own docs recommend reCAPTCHA v3 or hCaptcha over the older types, and with an invisible type most real customers never see a challenge. Start a bit lenient and tighten it if spam orders get through. 2. Only protect the forms that actually get abused. Under Captcha for Select Forms, tick checkout, registration, login, contact and tickets as needed, and set Captcha Form Protection to "Enabled for Unauthenticated Visitors Only" so logged-in clients aren't challenged at all. 3. If the site is behind Cloudflare, make sure Rocket Loader and script minification are off for the WHMCS hostname. WHMCS calls these out as incompatible, and Rocket Loader rewrites how page scripts load, which can stop the captcha widget from rendering or submitting properly. That looks exactly like "captcha is broken". 4. Also behind Cloudflare: add Cloudflare's ranges as trusted proxies under the same Security tab, otherwise every login, order and fraud check sees a Cloudflare IP instead of the visitor. If you still want Turnstile, there are a couple of modules for it on the WHMCS Marketplace now. When picking one, I'd check three things: that it verifies the token server-side (siteverify) and doesn't just render the widget, that it covers checkout and not only login and registration, and that it lists your exact WHMCS 9.x version and your template, since these modules hook into the order form and client area templates and are the first thing to break after an upgrade. Test it on a staging copy first. Either way, if you add Turnstile, set the native Captcha Type back to off for the same forms so customers don't get two challenges stacked on top of each other.
    • WhatsApp Notification WHMCS Module – v1.1.3 Released Automate WhatsApp notifications from WHMCS to keep customers informed about important account activities, service updates, and billing events. Changelog highlights: Updated the module for compatibility with WHMCS 9.1. Added support for PHP 8.4.x. Added support for ionCube Loader 15.x. Updated the module for compatibility with the latest Twilio API. Compatibility: WHMCS 9.1, PHP 8.4, ionCube Loader 15.x Buy Now | View Changelog  
    • Hetzner Cloud WHMCS Provisioning Module – v1.4.2 Automate Hetzner Cloud server provisioning and management directly through WHMCS. Changelog highlights: Updated the module for compatibility with WHMCS 9.1. Added support for PHP 8.4.x. Added support for ionCube Loader 15.x. Compatibility: WHMCS 9.1, PHP 8.4, ionCube Loader 15.x Buy Now | View Changelog
    • Your hook will work, but I wouldn't run it in production as is. It fires a hidden iframe GET at the admin "close client" URL for each row, so you get no error back if one fails, several requests can run in parallel if you add bulk selection, and you depend on an internal admin URL and token handling that can change between versions.   The cleaner way is to call the official API instead of replaying the admin page:   1. Build it as a small addon module (or at least a dedicated admin-only endpoint). An addon gives you an admin page plus access control by admin role, so not every staff member gets a "close clients" button. 2. Your list button only collects the selected client IDs and POSTs them, with the CSRF token, to that addon page. 3. On the server side, loop over the IDs and call localAPI('CloseClient', ['clientid' => $id]) for each one, collecting the result per client so you can show "closed 14, failed 1 (reason)" instead of reloading blindly.   Per the API docs, CloseClient does the same thing as the Close button: it closes the client, cancels their invoices and sets all their products to Cancelled or Terminated. It also fires the ClientClose hook, so anything else you have tied to closing still runs. One thing to test on a single client first: the docs only talk about statuses, so check whether the account is actually removed from the server (cPanel/Plesk etc.) or whether you still need to run Terminate on those services separately.   About SQL: please don't do it by setting the status to Closed in tblclients. That only changes the label. Services stay Active, unpaid invoices stay open, the cron keeps generating renewals and sending reminders, nothing is written to the activity log and no hooks run. Going through CloseClient avoids all of that.   If you just need this occasionally rather than daily, the same loop works as a one-off script that reads a list of client IDs. Take a database backup before the first big batch either way.
    • Passkey Authentication Module v1.1.2 Released We’ve released version 1.1.2 of our Passkey Authentication Module with latest WHMCS 9.1 compatible and supported PHP 8.4.' More details: https://whmcsglobalservices.com/whmcs-modules/passkey-authentication/ Update the module to latest. Upgrade to Open Source and avail 50% flat off today.
    • WGS VMware Module v5.1.2 Released! We're pleased to announce the release of WGS VMware Module v5.1.2, bringing several bug fixes, security improvements, and compatibility updates. This update focuses on improving snapshot management, VM operations, console functionality, and overall module stability. What's New & Improved? Snapshot Management: Added individual snapshot revert functionality and fixed issues with snapshot deletion and revert operations. Client Area Fixes: Resolved blank tabs and loading issues affecting Snapshot, Migrate, Console, Reinstall, and Backup. VM Termination: Improved handling of suspended VMs and the "Enable suspend VM on terminate" setting. Security Enhancements: Improved security across the client area, VNC console, and admin area. Console PIN Security: Added PIN expiration and account lockout after repeated incorrect attempts. Cron Security: Restricted module cron execution to command-line access. PHP 8 Compatibility: Fixed PHP 8 errors affecting VM upgrades, OS reinstalls, IP cron, cart, and admin pages. Compatibility Updates WHMCS 9.1x PHP 7.4 – 8.4 jQuery 4 ionCube 15x We've also cleaned up unused files from the module package. Release Date: 11 November 2026 Version: 5.1.2 For the complete changelog and module details, visit: https://whmcsglobalservices.com/vmware-whmcs-module/ If you're already using our VMware Module, we recommend updating to the latest version to benefit from these improvements. Upgrade Notes - Back up the existing files & Database before uploading. - After uploading, go to Utilities > System > System Cleanup and click Empty Template Cache. Upgrade your license to Open source and save flat 50% OFF on open source (One time) service. Thank you for your continued support!
    • At 40-60 clients WHMCS is worth it mainly for the boring parts you're already fighting: recurring invoices, overdue reminders, suspensions, and domain renewals that line up with the registrar. Most of the "overhead" is a one-off setup weekend, not ongoing work. I run hosting billing day to day, and the switch goes fine if you treat it as a data import, not as placing new orders.   What I'd check before committing:   1. Export everything from your tool first: clients, each service with its billing cycle, recurring amount and next due date, and each domain with its registrar expiry date. That spreadsheet is your source of truth for the move.   2. Set up products, pricing, payment gateway, currencies/tax and email templates before importing anyone. Make sure each product's billing cycles match what clients actually pay today.   3. Import without triggering anything. Either add orders from the admin area with invoice generation, the order confirmation email and module create unticked, or script it with the API (AddClient, then AddOrder with noinvoice and noemail). Then set the real next due date and registration date on every service and domain (UpdateClientProduct / UpdateClientDomain take nextduedate, regdate and, for domains, expirydate). This step is what keeps renewals from breaking: WHMCS bills off the next due date, so if that's wrong you either double-bill or miss a renewal.   4. Check the recurring amount on each service. If someone is on an old price, keep that amount on the service rather than letting it recalculate to the current product price.   5. Hook up your registrar module and run domain sync so expiry dates come from the registrar, not from memory. Decide per domain whether it should auto-renew.   6. Keep invoice generation and emails cautious for the first cycle. Look at the invoice generation lead days in Automation Settings, let the cron run for a day or two, and look at what it would invoice before clients start getting emails. Running the old tool in parallel for one billing cycle is cheap insurance.   7. Card details generally can't be moved from a home-built tool. Plan for clients to re-enter them, or use a gateway that stores them on its side, so the first auto-charge doesn't fail.   Things that usually surprise people: how much time goes into email templates and the order form, and that the cron has to run every 5 minutes for automation to behave. Plan for a weekend of setup plus a week of checking, not more.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated