Last verified against provider docs: October 17, 2026
The Forgotten VPS: How to Find Rented Servers You're Still Paying For
Of all the things a side project leaves behind, a rented server is one of the easiest to forget and one of the most reliable to keep billing. A Discord bot you hosted for a friend, a game server for one weekend, a box for testing a deploy script, a Mac host for one iOS build. Each made sense at the time, and many are still running.
This guide covers why servers keep billing, what the major providers' own docs say about it, how to find the ones you forgot, and how to shut them down without losing anything you need.
Why servers are the easiest thing to forget
Out of sight once they work
Once a server works, you stop logging into it. Unlike a web app, it has no URL you visit and nothing that breaks visibly. Usually the only sign it exists is a line on an invoice.
"I turned it off" usually isn't enough
Many people assume a server that's powered off doesn't cost anything. At most VPS providers, that's wrong. The provider keeps the server's resources reserved, so it keeps billing until you delete (or "destroy") it. Here's what each provider's documentation says.
What the providers say about powered-off servers
DigitalOcean
DigitalOcean's pricing docs say billing for a bundled-plan CPU Droplet starts when you create it and ends when you destroy it, and that you're still billed while it's powered off because its compute resources stay reserved on the hypervisor. GPU Droplets work the same way. To end billing, destroy the Droplet. On the newer v5 Droplet configurations, the public IPv4 address is billed as its own invoice line. (DigitalOcean docs)
Vultr
Vultr's docs say stopping an instance does not halt billing, because it still reserves CPU, RAM, storage and IP addresses. You have to destroy it to stop the charges, and destroying permanently deletes its data. (Vultr docs)
Linode / Akamai
Akamai's billing FAQ says you pay for any service on your account even if it's inactive or powered off, and that you stop the charges by deleting the service. (Akamai docs)
Hetzner Cloud
Hetzner's FAQ says you pay for a server for as long as it exists, whether it's on or off, until you delete it. Hetzner suggests taking a snapshot and deleting the server if you'll be off for a long time. (Hetzner docs) The same FAQ says Primary IPs are billed separately from servers, including Primary IPv4s that aren't assigned to any server, until you delete them. Its cancellation docs add that floating IPs and volumes also bill for as long as they exist, and that deleted resources can't be recovered. To delete a server in Hetzner Console, open the project, select Server, open the server, then click Delete and confirm. (Hetzner docs)
AWS EC2
AWS works a little differently. A stopped EC2 instance isn't charged for instance usage, but attached EBS volumes are still charged for storage. (AWS docs) Elastic IP addresses are charged whether they're in use or idle. (AWS docs) If you terminate an instance, any Elastic IPs attached to it stay allocated to you until you release them. By default, terminating deletes the root volume but keeps any other EBS volumes. Deleting a volume doesn't delete its snapshots. (AWS docs)
The pattern: stopping a server is not cancelling it. Deleting it is.
How to find the servers you forgot
Check every provider you've ever signed up for
The server you forgot is often at the provider you forgot. Search your email for welcome and invoice emails from hosting companies, then log into each account and list what's there.
Check every project and region
Most providers group resources into projects or teams, and AWS splits them by region. A server in a project or region you never look at is easy to miss.
Look at what's around the server, too
At each provider, also check for leftovers that bill separately: volumes, snapshots, backups, reserved or floating IPs, and load balancers.
Use your card statement as a backstop
If a recurring charge from a hosting company is on your statement, there's something in that account, even if you don't remember it.
Before you destroy a server
Deleting is usually permanent. Go through this list first:
- Do you need anything on it? Copy off data, configs or databases. A provider snapshot is another option, but snapshots usually cost money too.
- Is anything still pointing at it? Check DNS records, webhooks, and other apps that call it. Remove or update them so nothing breaks or points at an IP that gets reassigned to someone else.
- Does it hold credentials? Revoke any API keys or tokens that were set up only for that server.
- Delete the server, then its leftovers. Volumes, snapshots and IPs may not be deleted automatically.
- Check the next invoice to confirm the charge is gone.
Tracking servers alongside everything else
A server is only one part of what an app costs. The useful question is "what does each of my apps cost, and which ones am I paying for without using?" That's the question CobwebCheck answers.
CobwebCheck is a cost tracker for all your apps. It tracks what every app costs you, and catches the ones quietly billing you after you've stopped using them. It flags rented servers and machines prominently (VPS, game servers, Mac hosts, runners), because they're so easy to forget.
What it can see, by provider:
| Provider | What CobwebCheck gets |
|---|---|
| DigitalOcean | Real cost (read-only token: account, billing, droplet, project) |
| Vultr | Real cost (Vultr keys are full-access by design; CobwebCheck only makes GET calls) |
| Linode / Akamai | Real cost (Account and Linodes: Read Only) |
| Scaleway | Real cost (BillingReadOnly + ProjectReadOnly) |
| AWS | Real cost via ce:GetCostAndUsage only (AWS charges $0.01 per request; each scan makes one) |
| Hetzner Cloud | Servers and published price, but no billing API, so cost shows "cost not connected" |
| Kamatera | Server list only (no billing API) |
| MacStadium | Server list only (no billing API; read calls only, never power actions) |
Where there's no billing API, you can upload a card statement CSV. Only recurring tech charges are kept, and raw rows are never stored. You can also enter a cost yourself, and it's shown separately as "entered by you". CobwebCheck never estimates.
CobwebCheck's connectors are read-only. Where a provider can't issue a read-only key (Vultr, Kamatera, MacStadium), it only makes GET calls, and on MacStadium it never runs power actions. So you do the shutdown yourself, using the checklist above. Full details are on the permissions page, and the sample report shows what results look like, using fictional data and no login.
The free scan shows your totals (verified spend, entered, and unknown) and your top 3 apps. Paid plans ($9/mo or $90/yr) add per-app costs, verdicts, next steps, exports and ongoing tracking. That includes a weekly re-check of connected key-based billing sources (cloud providers, Cloudflare, AI admin keys) and a weekly digest email, sent only when something changed, such as a new charge or an increase over 20%.
See what every app costs you. Read-only, about two minutes, nothing to install.
Sources
- DigitalOcean, "Droplet Pricing": https://docs.digitalocean.com/products/droplets/details/pricing/
- Vultr, "Are Stopped Instances Still Billed on Vultr?": https://docs.vultr.com/support/platform/billing/are-stopped-instances-still-billed-on-vultr
- Akamai, "Billing FAQ": https://techdocs.akamai.com/cloud-computing/docs/billing-faqs
- Hetzner, "Cloud Billing FAQ": https://docs.hetzner.com/cloud/billing/faq/
- Hetzner, "Cancellations on Hetzner Console": https://docs.hetzner.com/general/billing-and-account-management/cancellation/cancellations-hetzner-console/
- AWS, "Amazon EC2 instance state changes": https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html
- AWS, "Elastic IP addresses": https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html
- AWS, "Understanding unexpected charges": https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/checklistforunwantedcharges.html
- CobwebCheck product details: https://cobwebcheck.com/permissions and https://cobwebcheck.com/sample