Skip to content

Blog ·

How to sell web hosting VPS with Hetzner Cloud

Resell Hetzner Cloud VPS without owning a hypervisor: the list prices, the API token you need, and the catalogue quirks we measured before shipping.

By Provibr

Most of the server-management market assumes you own the iron. Hetzner Cloud is the opposite bet: you rent a virtual machine by the hour from someone else's datacentre, put your own price and your own brand on it, and never rack a thing. Provibr treats that as a first-class case, and this is what selling on it actually involves.

We support Hetzner Cloud live. What "live" means here is deliberately bounded, and we will be exact about it below rather than sell you a capability we did not build.

Why resell instead of own

If you already run a Proxmox or a dedicated fleet, an external provider is a strange fit until you need it. Where it earns its place is the edges of your product: a customer in a region you do not have a rack in, a burst of demand you do not want to buy hardware for, a cheap tier you can offer without a capital outlay. You provision it through the same panel, it lands on the same invoice, and your customer never learns whose datacentre it is.

The tradeoff is honest: you do not own the margin the way you do on your own hardware, and you are one API away from your supplier's outages and price changes. Reselling is a lever, not a foundation.

The money

Hetzner adjusted cloud prices on 15 June 2026, so anything you read from before then is stale. These are the current shared-vCPU list prices, taken from Hetzner's own price notice.

As of the 15 June 2026 adjustment, Hetzner's Intel shared-vCPU line lists CX23 at €5.49/month, CX33 at €8.49, CX43 at €15.99 and CX53 at €29.49; the Ampere ARM line lists CAX11 at €5.99, CAX21 at €10.49, CAX31 at €20.99 and CAX41 at €40.99. All figures exclude VAT and IPv4.

The specs behind those names scale in the usual way: you double the plan, you roughly double what is in it.

Hetzner's entry CX23 and CAX11 each provide 2 vCPU, 4 GB RAM, 40 GB disk and 20 TB of traffic; the plans step up through 4 vCPU / 8 GB / 80 GB and 8 vCPU / 16 GB / 160 GB to the top shared plans CX53 and CAX41 at 16 vCPU, 32 GB RAM and 320 GB disk, all with 20 TB of traffic.

The primary IPv4 address is a separate line item, and it is the one people forget when they set a resale price.

Hetzner charges €0.50 per month ($0.60) for a Cloud Primary IPv4 address, on top of the server price. A server without a public IPv4 is IPv6-only by default.

So the real cost of the smallest useful machine is the server plus the IPv4: a CX23 with a public IPv4 is €5.49 + €0.50 = €5.99 per month before VAT. Your resale price is whatever the market bears above that; Provibr bills you separately for the licence to manage it (€0.20 per virtual machine per month, see pricing), so the arithmetic you sell on is Hetzner's price plus our €0.20 plus your margin.

One thing worth knowing before you build a price list around the cheap ARM tier: CAX11 costs more than CX23 (€5.99 vs €5.49) despite being the "cost-optimized" ARM part. ARM is a compatibility decision, not automatically a cheaper one.

Where the machines are

Hetzner Cloud runs in Germany (Falkenstein and Nuremberg), Finland (Helsinki), Singapore, and the United States (Oregon and Virginia). Not every server type is offered in every location.

That European footprint is the reason a lot of hosters reach for Hetzner specifically: if your customers care about GDPR residency or about latency to European users, the German and Finnish regions are the selling point. If your customers are in the Americas or Asia, the US and Singapore regions exist but the catalogue is thinner.

The credential

Hetzner Cloud is organised into projects, and an API token belongs to one project. You create it in the Hetzner Cloud console under the project's Security → API tokens, and you choose Read & Write. Provibr's setup walks through exactly that: sign in, choose the project, create a Read & Write token, paste it.

Give it write access even if your instinct is least-privilege, and here is the measured reason. A read-only token does not fail cleanly. We measured a read token returning two different errors for two different write attempts: 401 token_readonly on POST /firewalls, but 403 forbidden on POST /ssh_keys and on an action POST. A connection test that checks for one of those codes passes a token that will fail later, on a different call, in production. The token also scopes to a single project, so a token cannot see machines in a project it was not made in; if you split customers across projects, you connect each project as its own integration.

What Provibr does with it

Through an agent that runs inside your own network and dials outward, so Hetzner needs nothing exposed and you install nothing on Hetzner's side. What is live:

  • Order a machine from a plan you defined, using Hetzner's server types and locations.
  • Import machines that already exist in the project, left untouched until you adopt them.
  • Power: start, shut down (ACPI), power off, and status.
  • Console: a real VNC console in the browser. Hetzner's console speaks RFB 3.8, which we confirmed by reading the first bytes off a live machine (RFB 003.008) rather than assuming it.
  • Metrics: CPU, disk and network graphs, pulled on a five-minute window.
  • Delete: removes the machine at Hetzner. Unlike some providers, this is a real deletion, not a cancellation-at-term.

What we deliberately do not do: there is no firewall management (a Hetzner firewall is a separate billed object, not a property of one machine), no separate volume management, and no memory graph, because Hetzner's metrics API returns a 422 for the memory series and we would rather show nothing than draw a flat line that looks like a measurement.

One capability is missing by nature: suspension. Hetzner has no "suspend" state. So when a customer goes over their plan and you need to enforce it, Provibr powers the machine off and locks the start button until the overage is resolved, rather than suspending it. The machine still counts against the plan while it is off, because Hetzner still charges for a stopped server's disk. That is a real difference from your own hardware, and it is worth pricing in.

Two catalogue traps to know before you build a plan picker

These are ours, measured against the live API, and they are the reason ordering took longer to ship than "call POST /servers" suggests.

The available flag does not predict whether an order will succeed. We ordered a cx23 four times in a location where the catalogue reported it as unavailable, and all four were delivered. We are covering that in its own article, Hetzner's available flag predicts nothing. The short version is: never filter your plan picker on it, or you will hide machines your customers can actually buy.

GET /servers?status=off does not find a stopped machine. We measured this three times. If your import routine filters on status, it silently drops exactly the machines that are switched off, which, when you are enforcing overages by powering machines off, is precisely the set you most need to see.

What it is not

Provibr manages the machines; it is not a Hetzner reseller programme and it does not touch your billing relationship with Hetzner. You pay Hetzner for the compute, on your own Hetzner account; you pay us €0.20 per machine per month to manage it; you charge your customer whatever you like. A customer on Hetzner and a customer on your own Proxmox pay us the same per machine, so we have no reason to push you toward either. Reselling Hetzner is a tool for the cases your own hardware does not cover, and it stops being a tool the moment you pretend it is free of your supplier.

Hetzner prices and locations were read from hetzner.com and docs.hetzner.com on 26 August 2026. Everything described about the API (the read-token error codes, the console protocol, the available flag, the status=off gap) was measured against the live Hetzner Cloud API while building and shipping the Provibr integration.

Start with one host and one agent

Create an account, install the agent with a single command and connect your first Proxmox host. The trial runs for 14 days and asks for no payment details.