Plugins

What plugins are, how to enable, configure, upload, upgrade, disable and remove them, and what to check before you trust one.

Core Tidemark Billing handles invoices, quotes, recurring billing and the client area. Payment gateways, hosting-panel provisioning and licensing are plugins. A plugin is a folder of files; you switch it on in the admin area and its features appear.

Trust warning#

A plugin is PHP code that runs with full access to your database, files and secrets. Install plugins only from sources you trust, and read the code of anything you did not write. The upload checks guard against broken or hostile archives, not against a plugin that is itself malicious.

What comes with the release#

The release includes these plugins: Stripe, PayPal, cPanel & WHM, DirectAdmin, Enhance Control Panel and License Server. They show on Plugins (in the System group of the admin menu) as Bundled, with filters for All, Enabled, Disabled and Updates pending.

Enable, configure and disable#

  1. Open Plugins.
  2. Press Enable on the plugin. The first time, its database migrations run and the plugin sets itself up.
  3. If it has settings, press Settings. Plugins with nothing to configure say No settings. Password fields are stored encrypted.
  4. To switch it off, press Disable and confirm. Its data is kept, but its features stop working until you enable it again.

Only enabled plugins are loaded. If a migration fails while enabling or upgrading, the changes it made are undone where the database allows it and the error tells you what was and was not rolled back.

Install or upgrade by upload#

Administrators can upload a .zip under Install or upgrade a plugin, then press Upload and install.

  1. The zip may have plugin.json at its root or inside one top-level folder (a GitHub "Download ZIP" works).
  2. The archive is checked for size, file count and unpacked size, for unsafe paths and symlinks, and for the required manifest keys and a compatible Tidemark Billing version.
  3. If the plugin is already installed you see the old and new version and confirm before it is replaced. Settings and the enabled state are kept, and the old folder is copied to storage/app/plugin-backups/.
  4. A newly installed plugin is not switched on. Press Enable.

Limits: uploads are capped at 16 MB by default (BILLING_PLUGIN_UPLOAD_MAX_MB), at 5,000 files and at 100 MB unpacked. Your PHP upload_max_filesize and post_max_size apply too.

Uploaded plugins go to the folder named in BILLING_EXTRA_PLUGINS_PATH if that is set (the Docker setup uses /data/plugins), otherwise to the plugins/ folder. Two situations need a manual step:

  • The folder is not writable (common on shared hosting). You get a message with the options: make the folder writable, point BILLING_EXTRA_PLUGINS_PATH at a writable folder, or upload by FTP.
  • The PHP zip extension is missing. Unzip the plugin yourself so that plugin.json is at plugins/<slug>/plugin.json, then press Enable.

To turn uploading and deleting off, set BILLING_ALLOW_PLUGIN_UPLOAD=false. You then add plugin folders by hand.

From the command line#

php artisan plugin list
php artisan plugin install /path/to/plugin.zip
php artisan plugin install https://example.com/acme-widgets.zip
php artisan plugin enable acme-widgets
php artisan plugin disable acme-widgets
php artisan plugin remove acme-widgets --drop-settings

install accepts a path or an https URL. If the plugin is already installed it asks before replacing it; --force skips the question. remove asks for confirmation unless you pass --force, and --drop-settings also erases the plugin's saved settings. A newly installed plugin must still be enabled with plugin enable. See Artisan commands.

Remove a plugin#

Disable it first. For an uploaded plugin, Delete plugin then runs its uninstall step, removes its files (a backup goes to storage/app/plugin-backups/) and forgets it; tick the box beforehand to erase its saved settings as well. Plugins that ship in the release folder can be disabled but not deleted from the screen.

Was this article helpful?
Last updated 10 Nov 2026
Powered by Tidemark Billing