PD AWS S3 for WHMCS

PD AWS S3 — Sell Amazon S3 Storage as a Native WHMCS Product

Sell AWS S3-backed object storage under your own brand — provisioned, metered and billed from your billing system

Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.

Object Storage

PD AWS S3 lets a hosting company sell Amazon S3 object storage as its own product. Your customer orders a storage plan in your WHMCS cart, and a private bucket with its own access key is created in your AWS account within minutes. The customer manages it from your client area, you set the price, AWS bills you at cost, and the difference is your margin.

It is built for hosts who want to offer S3-compatible storage for backups, websites and applications without handing out AWS logins, without writing scripts to create buckets, and without a support ticket every time a customer needs a new access key.

Why hosts choose PD AWS S3

Every customer is isolated by AWS itself. Each order gets its own bucket and its own dedicated IAM user whose policy covers that customer's buckets only. A customer's key cannot list other buckets in your account, create or delete buckets it does not own, or reach any other AWS service. Isolation is enforced by AWS, not by convention.

Orders set themselves up. The bucket and key are created as soon as WHMCS sets the order up, in the region the customer chose at checkout. Suspend, unsuspend and terminate follow your normal WHMCS billing, so storage follows payment without you touching it.

Fifteen AWS regions, chosen by the customer. Offer North America, Europe, Asia-Pacific and South America from one product. Every region offered is generally available and needs no opt-in in your AWS account.

Usage that bills itself. A daily sweep reads each customer's real storage use from AWS and writes it into WHMCS's own disk-usage fields, so native overage billing, quota warnings and the client-area usage graph work with nothing extra to configure.

Customers help themselves. Extra buckets, versioning, automatic clean-up rules, browser access (CORS), expiring share links and key rotation are all on the customer's own service page. That removes most of the tickets a storage product normally creates.

Nothing is deleted by accident. Termination revokes access at once, but files are kept for a window you set, from 7 to 90 days. Deleting them needs your approval, and an immediate purge needs the exact bucket name typed in.

How it works

  1. Connect your AWS account. Add your Access Key ID and Secret Access Key once on a WHMCS server record. We ship the exact policy to use. Test Connection checks S3, IAM and CloudWatch separately and names whichever permission is missing, without creating anything.
  2. Create your products. Create a WHMCS product of type Other, choose the module, and let it generate your cart options: Storage Quota, Max Buckets, Versioning and Region. Set your own prices on them.
  3. Your customer orders. They pick a quota and a region and pay. The bucket and key are created, and their page shows progress until the storage is ready, usually within a couple of minutes.
  4. You get paid, they manage it. WHMCS keeps billing as usual, with usage measured daily. Upgrades and downgrades go through WHMCS's normal flow and keep the customer's data.
The product settings page: quota behaviour, default region, the controls your customers get and the cart options generated for the product
The product settings page: quota behaviour, default region, the controls your customers get and the cart options generated for the product

What you get in WHMCS

Selling and pricing

  • Cart options generated in one click: Storage Quota from 10 GB to 5 TB or Unlimited, Max Buckets from 1 to 10, Versioning on or off, and Region
  • Choose which options customers see at checkout; anything you hide is fixed to your product's default, and your prices are kept
  • Soft quota mode (the default) warns but keeps uploads working; hard mode pauses uploads at 100% while downloads and deleting keep working, so the customer can free space themselves
  • Customers are emailed at 80% and again at 100% of their quota, and you can copy those emails to your administrators
  • Usage feeds WHMCS's native overage billing, so you can charge for what customers actually use
  • Customer bucket names start with a prefix you choose, so your brand is on every bucket
  • More than one AWS account, so you can grow past a single account's IAM user limit

Provisioning you can trust

  • Each service creates one IAM user with an inline policy scoped to that customer, and the AWS admin keys never leave your WHMCS server
  • A failed setup is never shown as done: the customer sees a plain message and the exact provider error is kept for you in the Activity tab
  • Moving a customer to a smaller plan than they already use never deletes anything
  • Data is preserved in both directions when a customer upgrades or downgrades
  • Nothing is installed on any customer server, and no daemon runs: the module talks to AWS over HTTPS

Running it day to day

  • Clients & Storage lists every service with its client, state, access mode, quota percentage, usage and last measurement
  • Set any service to read and write, read-only or disabled without changing the customer's credential or touching their data
  • Rotate a customer's keys in one click, with the old key stopped immediately
  • Retention lists terminated services with a countdown to purge eligibility, the size and object count at termination, and approve and hold controls
  • Reconcile compares your AWS account with WHMCS and flags orphan buckets, missing buckets and stray IAM users. It only reports and never changes anything
  • A health report covers the licence, AWS connection, services by state and usage metering, and an Activity log records every provisioning, lifecycle and admin action

What your customers get

  • Connection details with copy buttons for the endpoint, bucket, region and access key, and the secret key whenever they need it
  • Their own buckets, created and removed within the plan limit, with a typed confirmation before a bucket is deleted
  • Versioning per bucket, to recover files that were overwritten or deleted
  • Automatic clean-up rules to delete files after a number of days or remove stalled uploads
  • Browser access (CORS) rules for web apps, with no AWS console needed
  • Expiring share links to download a file, or to let someone send one in, with no account on their side
  • Ready-made setups for the AWS CLI, rclone, s3cmd, Cyberduck and WinSCP, cPanel backups and WordPress backup plugins, with the endpoint and keys already filled in
  • Usage against their quota, with a 30-day history and a Refresh now button
The customer's storage page in your client area: endpoint, bucket, region, usage against quota and a ready-made connection guide
The customer's storage page in your client area: endpoint, bucket, region, usage against quota and a ready-made connection guide
Storage settings: versioning, automatic clean-up rules and browser access, managed by the customer without touching AWS
Storage settings: versioning, automatic clean-up rules and browser access, managed by the customer without touching AWS
Share links: a customer creates an expiring download or upload link for any file
Share links: a customer creates an expiring download or upload link for any file

Each of the bucket, share link and storage settings sections is a switch on the product. Turn one off and it disappears from the customer's page and its actions are refused. The pages render on WHMCS's Six, Twenty-One and Nexus themes and are fully translatable.

Security built in

  • Your AWS admin credentials are stored encrypted and are never sent to the customer or shown on any client page.
  • Customers' secret keys are encrypted at rest.
  • Customers cannot change their own bucket policy, and cross-bucket replication, Transfer Acceleration and Multi-Region Access Points are not available to them.
  • Suspension changes only what the customer's key may do. Read-only keeps downloads working and denies uploads and deletes. Disabled blocks all access. Files are never touched either way.
  • While a service is suspended, rotating its keys never hands out a working key.

One product, every feature

PD AWS S3 is one paid module with everything included: provisioning, metering, quotas, versioning, clean-up rules, CORS, share links, retention and reconcile. There is no free tier and no add-on tier to compare. There are no per-gigabyte fees to us: your buckets live in your own AWS account, you pay Amazon at cost and set your own sell price.

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 being served, and only after that do customer features pause behind a neutral message. Terminated services stay retained and are never purged while the module is unlicensed.

Requirements

  • WHMCS 9 or later on PHP 8.2 or later, with the ionCube Loader
  • An AWS account. A dedicated account is not needed; the module works inside any existing one. It uses Amazon S3, IAM and CloudWatch with the policy we provide
  • The WHMCS cron running, for the daily usage sweep
  • PD Modules, the free control panel every PD module installs into

Questions

Whose Amazon S3 account is used?

Yours. You connect your own account, and every customer bucket is provisioned into it. You pay the provider at cost, set your sell price in WHMCS, and keep the difference.

How is each customer isolated?

Every order gets its own bucket and an IAM user scoped to that bucket alone. One customer's credential cannot reach another's data, and your master credentials stay on your WHMCS server — they are never sent to the customer or stored in the client area.

How does billing work?

A daily task measures each service's real usage and writes it into WHMCS's disk-usage fields. Native overage billing, quota warnings and the client-area usage graph then work exactly as they do for hosting products — there is nothing extra to configure.

What happens when a customer hits their quota?

That depends on the quota mode you set: soft (the default) only warns the customer at 80% and 100%; hard pauses new uploads. Either way downloads and deletes keep working, so a customer over quota can still retrieve everything they have stored. Raising their plan restores uploads immediately with all data preserved.

Is data ever deleted automatically?

Only if you choose that. By default, terminating a service revokes access instantly but keeps the bucket and its contents for a retention window you set. Purging then needs your approval (Manual, the default), and an immediate purge needs the bucket name typed to confirm.

Can customers upgrade or downgrade?

Yes, through the standard WHMCS upgrade/downgrade flow. Quota changes apply with data preserved in both directions; downgrading below current usage never deletes anything (with a hard quota it pauses uploads until they are back under).

What do I need on my WHMCS server?

PHP 8.2+ and a working WHMCS cron. The module talks to Amazon S3 over its standard HTTPS API — there is nothing to install on the server and no daemon to run.

How is this different from PD Object Storage?

PD Object Storage is the flagship covering Amazon S3, Cloudflare R2, MinIO and DigitalOcean Spaces in one module. This edition is the same engine focused on Amazon S3 alone — choose it if that is the only backend you sell, and move up to the flagship if you later add another.

What happens if my subscription lapses?

Nothing of yours is touched, and nothing is deleted. The module steps down in stages instead: a 14-day grace period where everything still works and you get a renewal reminder, then admin management locks while your customers carry on being served, and only after that do the customer-facing features stop — behind a neutral "temporarily unavailable, please contact support" message that never mentions licensing to your customer. Anything the module provisioned keeps running in your own account throughout, and your data and settings stay exactly where they are. Renewing restores everything immediately.

What’s new in 0.1.81

  • Cancelling an order that AWS refused (the access key may not create IAM users) now works with that same key.
  • When AWS refuses to create a customer's IAM user, Activity now says it was IAM and which statement to add to the access key's policy.
  • Re-activating a terminated service now restores the customer's access instead of failing.
  • Option-price hints on the Products screen no longer show stray asterisks.
  • Creating a customer's AWS access key no longer fails when AWS is briefly slow to recognise the new user.
  • The Products screen now lists exactly the options Generate builds for this provider, including the region or location choice, and no longer mentions options the provider does not offer.
  • Saving a bucket name prefix that cannot be used (it must be 2–12 letters, numbers and hyphens) now shows a message instead of quietly falling back to "storage".
  • The setup steps now say where option prices are set: System Settings → Products/Services → Configurable Options.
  • Rebuilding the options from the Products tab keeps hidden options off the order form.
  • An option kept off the order form now provisions the product's own default, not the option's first value.
  • Clean-up rules that cannot be read no longer clear a customer's existing rules; nothing changes.
  • Collect usage now reads the service's storage as it is at that moment.
  • The Retention tab no longer says nothing is deleted without approval when purging is automatic.
  • Suspend and Terminate always work, whatever the state of your PD Modules licence.
  • Each storage service's provider credentials are now encrypted with your installation's own key on every platform.
  • Rotating keys on a suspended service no longer issues a working key.
  • Test Connection now also checks the IAM and CloudWatch access orders need.
  • Extra bucket names get a short unique ending, so they cannot clash with buckets elsewhere on AWS.
  • Usage now counts old file versions, and a very large bucket is never recorded as smaller than it is.
  • A service unsuspended while over its quota comes back with uploads paused and deleting still open.
  • Test Connection checks every connected account and names the one that fails.
  • Failed tasks are labelled as failed for you and your customers.
  • You can switch the 80%/100% quota emails off, or copy them to your administrators.
  • Moving a customer to a smaller plan than they already use no longer stops them deleting files to get back under it.
  • The feature list describes usage metering as it works on every platform: each customer sees their usage against their quota, with emails at 80% and 100%.
  • The Connect page explains the placeholder in its snippets only when a snippet actually shows one — normally your real key is filled in.
  • You can choose to delete a terminated service's storage immediately, instead of keeping it for a retention period.
  • Setup guidance, health checks and messages name the right screens for your billing platform.
  • Generate this module's order options for a Blesta package in one click, as on WHMCS; rebuilding them keeps the choices your existing customers made.
  • Links on this module's screens open the right client, service and product pages on every platform.

Get your website online with PD Hosting

UK hosting, domains and support from a real team. From a first site to a full server.

Terms and Conditions  ·  Privacy Policy

PD Hosting is the trading name of Projektif Digital Ltd, registered in England and Wales, company number 12482555.

PD Hosting
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.