Sell S3-compatible object storage on your own MinIO server — provisioned, metered and billed from your billing system
Sell object storage on Amazon S3, Cloudflare R2, DigitalOcean Spaces or MinIO — any mix, from one WHMCS module
Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.
PD Object Storage lets a hosting company sell S3-compatible object storage on Amazon S3, Cloudflare R2, DigitalOcean Spaces or your own MinIO server, in any mix, from one WHMCS module. Your customer orders in your WHMCS cart, a private bucket and a scoped access key are created at the backend you chose for that product, and your customer manages their storage from your client area. You set the price, the provider bills you for what is stored, and the difference is your margin.
It is built for hosts who want more than one storage offer: a premium Amazon S3 product next to a lower-cost Spaces plan, an EU-resident R2 product for customers who need it, or a self-hosted MinIO plan on their own hardware, without installing and learning a different module for each.
One module, four backends. Amazon S3, Cloudflare R2, DigitalOcean Spaces and MinIO are all built in. Choose the backend per product, and run several side by side in one WHMCS. An Amazon S3 product and a Cloudflare R2 product can sit in the same cart, each connected to its own account.
One experience for your customers. Whatever sits behind the product, your customer gets the same client area: connection details, usage, buckets, share links and ready-made setups. Your team learns one module and your customers learn one screen.
Placement that cannot fail. The checkout offers only the locations that suit the backend: AWS regions, DigitalOcean datacenters or Cloudflare data locations, curated so a customer is never offered a choice that will fail. Cloudflare R2's EU-only choice is a hard data-residency boundary, which is what lets you promise it to customers.
Only what the backend can do. The module offers only the features a backend supports. Cloudflare R2 does not expose object versioning, so an R2 product simply does not show the Versioning option. Nothing appears that would not work.
Isolation the provider enforces. Each order gets its own bucket and its own scoped credential: an access key, a token or a user, depending on the backend. One customer's credential cannot reach another's data on any backend.
Nothing is deleted by accident. Terminating a service revokes access at once but keeps the data through a retention window you choose, and nothing is purged without your approval unless you switch on automatic purging.




Bucket management, share links and storage settings are each a switch on the product. The pages render on WHMCS's Six, Twenty-One and Nexus themes and are fully translatable.
On Amazon S3 and MinIO, hard mode pauses uploads at 100% while downloads and deleting keep working. On DigitalOcean Spaces and Cloudflare R2, uploads are never paused: the customer is emailed at 80% and 100% and you see the overage. Downloads always work.
PD Object Storage is one paid module with all four backends and every feature included. There are no tiers to compare. If you sell only one backend, the single-provider modules offer the same engine focused on that provider. It installs into PD Modules in one click and updates itself.
If your subscription ever lapses, nothing is deleted. You get a 14-day grace period with everything working, then admin management locks while customers keep their storage, and only after that do customer features pause, behind a neutral message that never mentions licensing.
Four, all built in: Amazon S3, Cloudflare R2, MinIO, and DigitalOcean Spaces. You choose the backend per product, and you can run several backends side by side in the same WHMCS — each product on its own server.
No. PD Object Storage is the single flagship covering all four backends. If you only ever sell one, the focused editions (PD AWS S3, PD Cloudflare R2, PD MinIO S3, PD DigitalOcean Spaces) offer the same engine for that one provider.
Yours. You connect your own account for each backend, and every customer bucket is provisioned into it. You pay the provider at cost, set your sell price in WHMCS, and keep the difference.
Every order gets its own bucket and a credential scoped to that bucket only — an S3 access key, an R2 token, an IAM user, or a Spaces key depending on the backend. One customer's credential cannot reach another customer's data. Your master credentials never leave your WHMCS server.
A daily task measures each service's real storage use and writes it into WHMCS's disk-usage fields, so native overage billing, quota warnings and the client-area usage graph all work automatically — on every backend.
They are emailed at 80% and again at 100% of their quota, and you see the overage in the admin panel. With hard mode on an Amazon S3 or MinIO backend, uploads are also paused while downloads and deleting keep working, so the customer can free up space. On DigitalOcean Spaces and Cloudflare R2 uploads are never paused, because their keys cannot allow deleting files without also allowing uploads. Raising their plan raises the quota with all data preserved.
Only if you choose automatic purging. By default, terminating a service revokes access instantly but retains the bucket and files for a window you set (7–90 days, or delete immediately); purging then requires your approval (Manual, the default), and an immediate purge requires typing the bucket name.
Yes, honestly. The module only offers what each backend actually supports — for example Cloudflare R2 has no object versioning, so that option and control simply aren't shown for an R2 product. Regions and data-location choices adapt too (including Cloudflare R2's EU-only residency).
Yes — through WHMCS's standard upgrade/downgrade flow. Quota and bucket-count changes apply with all data preserved; downgrading below current usage never deletes anything; the customer is warned, and on Amazon S3 and MinIO with hard mode uploads pause until they are back under the new quota.
PHP 8.2+ and a normal WHMCS cron. The module talks to each backend over standard HTTPS APIs — nothing else to install.