Resell Amazon Lightsail as your own VPS — provisioned, billed and managed in WHMCS
Find out which services you are losing money on — and which resources nobody is paying for
Made and supported by Projektif Digital Ltd. Runs inside PD Modules, the panel every module installs into.
PD Cloud Cost & Margin shows a hosting company which of its resold cloud services are losing money, and which cloud resources are still billing with nobody paying for them. It reads your real cloud bill, matches every charge to the WHMCS service that caused it, and sets that against what you charge the customer.
It is built for hosts who resell cloud servers, databases and storage with PD provisioning modules, and who would otherwise find out about a wrong price, or a volume left behind by a cancellation, only when the provider's invoice arrives.
Know which services lose money. Margin lists, for one month at a time, what each service costs against what you charge for it, worst first, with links to the service, its client and its product. A service costing more than it charges is flagged "Losing money", and one earning less than your margin floor (20% by default) is flagged "Below your floor".
Find what a cancellation left behind. "Paying for nothing" lists disks, snapshots and addresses that have been billing for at least the number of days you set (7 by default) with no service attached, most expensive first, with what each is, its region, this month's cost and since when it has been billing.
Your bill, not an estimate. Nothing is guessed. A service with revenue and no measured cost is listed as "No cost data yet", never as a healthy margin, and the headline figures count only services whose cost was actually measured.
Matched exactly, never by guessing. A charge is matched to a service through the names and tags the PD module gave the resource when it built it. Anything built by hand carries no marker and shows under "Paying for nothing" until you set it aside, so you can trust a match when you see one.
One customer or one plan is one row. Margin rolls up per product and per client, so a customer or a whole plan that loses money is a single line.
Read-only, always. The module never deletes or changes anything at your provider. It only reads the bill, and what to switch off stays your decision.
PD Cloud Cost & Margin is one paid module with everything included. There are no add-on tiers. It installs into PD Modules in one click, updates itself, and adds its own tables and scheduled job without modifying WHMCS files. AWS cost reads cost a small amount per request at AWS; the once-a-day refresh keeps that to pennies a month, and pasting an export costs nothing.
If your subscription ever lapses, you get 14 days of grace with everything working. After that, the margin figures already worked out stay readable, while refreshing, importing, the orphan list and the digest pause until it is active again.
For the headline feature, yes — this is a companion to them. Per-service margin and orphan detection rely on each resource being recorded against the service that owns it, which is what PD Lightsail, PD EC2, PD AWS S3, PD Azure VM, PD DigitalOcean Droplets and the rest of the PD cloud range do when they provision. With none of them installed the module still reads your bill and totals it accurately per provider, but no charge can be attributed to a customer: Margin stays empty and everything lands under “Paying for nothing”. The Providers tab and the module report tell you which situation you are in.
Our modules never recorded them, so they are never matched — they appear under “Paying for nothing” until you mark them as expected. That is deliberate: guessing would put one customer's cost against another customer's revenue and make both figures wrong at once.
No. For AWS it uses the server credentials your PD AWS modules already hold, so there is nothing new to set up and no second copy of a secret. For every other provider it reads a cost export you paste in — no credentials at all.
Either the IAM user your AWS server uses cannot read Cost Explorer (provisioning permissions do not include it — add ce:GetCostAndUsageWithResources), or resource-level granularity is not switched on in your AWS account (Billing → Cost Explorer → Preferences). The module names which one it hit rather than showing you a zero — the Providers tab shows what AWS said on the last refresh.
Because the month is not over, and because providers publish billing data hours to a day behind. Compare completed months; the current one is always partial.
Then no charge on the bills read so far has been matched to it. Either the provider has not billed it yet — DigitalOcean invoices arrive after the month ends, and AWS is a day behind — or its resource is not one our module recorded (created outside the PD module, or replaced by hand), in which case its charge is under “Paying for nothing”. We do not guess: attributing a charge to the wrong customer would make two figures wrong at once. Services with no cost data are left out of every total.
No, deliberately. Nothing here writes to your provider. A resource can legitimately have no service attached — your own backups, a shared load balancer, something a colleague is mid-way through. Mark those as expected and they stop appearing; delete the rest in your provider console.
From the service's recurring price in WHMCS, turned into a monthly figure (a yearly plan divided by twelve, any other term by its length in months), converted to your default currency at WHMCS's own rate if the client is billed in another of your currencies, and then into your provider's billing currency at the rate you set. One-time and free services have no monthly revenue, so any cloud cost they carry shows as a loss.
Because a wrong rate makes every margin on the page wrong, and a live rate that quietly went stale is worse than one you chose on purpose and know the age of.
AWS charges a small amount per Cost Explorer request. The refresh runs once a day, which keeps that to pennies a month. The cost-export path costs nothing.
The margin figures you already have stay readable — that is your business data, not ours. Refreshing, importing and the orphan list pause until the licence is active again.
Your customers' data stays in your WHMCS. To confirm your licence, the platform sends us four things and nothing else: your licence key, the domain, your server's own IP address and the directory it is installed in — the four values recorded against your licence in your client area. Alongside that we see which module and version you run and whether its licence is healthy, so we can ship compatible updates. We never receive your clients' personal data, your credentials, or the contents of your WHMCS. Crash reports are off unless you turn them on, and a diagnostic report is only ever sent when you send one, after showing you a preview you can edit.
WHMCS 9 or later, on PHP 8.2 or later. It installs alongside whatever else you run — it adds its own tables and templates rather than modifying WHMCS files, so it does not collide with other vendors' modules or with a customised theme. Uninstalling removes its own tables and settings and leaves no orphans behind.
Open a ticket from your client area, or use Get help inside the PD Modules panel, which attaches a diagnostic report — you see a preview of exactly what it contains, and can exclude any part of it, before anything is sent. Support is included with an active subscription; bug reports are welcome whatever your licence state.