Billing
Sell your packages with Stripe and PayPal, open the order page, make discount codes and referrals, issue invoices and chase unpaid ones.
Billing turns HF Panel into a shop for your hosting. Customers order a package on the order page, pay by card (Stripe) or with PayPal, and get their account automatically. The same screen holds your discount codes, the referral programme, the order list, the invoices the panel issues, and what happens to unpaid invoices.
Where: Server Admin › Billing › Billing (on the official edition: the Invoices tab of Server Admin › Business)

The figures at the top show the Status (Selling or Off, with the ways to pay that are set up), the Monthly revenue with the number of paying accounts, and the number of Orders (the latest 50). Click Order page to open your public order page.
Before you start: set up Stripe and PayPal once
The Set up (once) card lists the steps with your server's own addresses filled in.
Stripe
- In the Stripe Dashboard, go to Developers → Webhooks → Add endpoint and enter the webhook address shown on the card.
- Choose these events:
checkout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,invoice.paid,invoice.payment_failed,customer.subscription.updated,customer.subscription.deleted. - Copy the endpoint's Signing secret (
whsec_…) into the Stripe form. - In Settings → Billing → Customer portal, turn the portal on. Allow plan switching between your products if you want customers to upgrade themselves.
PayPal
- At developer.paypal.com → Apps & Credentials, click Create App (Merchant) and copy its client ID and secret into the PayPal form.
- Click Connect PayPal. The panel checks the keys and sets up the webhook itself.
- Test with Sandbox first, then switch to Live with the live app's keys and connect again.
Then put a link to your order page on your website.
Note: if your panel's API has its own address, the card also shows the old webhook address, which keeps working.
Connect Stripe
- In Stripe — card payments, paste the Secret key (it starts with
sk_live_,sk_test_, orrk_for a restricted key). Find it under Stripe Dashboard → Developers → API keys. - Paste the Webhook signing secret (
whsec_…). - Click Save.
- Click Check Stripe & sync packages. The panel tests the key and makes every paid package ready to sell in Stripe. The message says whether Stripe is in test or live mode.
Saved keys are never shown again: the form shows only the first characters and the mode. Leave a field empty to keep the saved value.
Important: with a secret key saved, you must also save the webhook signing secret. Without it, new card orders do not become accounts.
Connect PayPal
- In PayPal, paste the Client ID and Secret from developer.paypal.com → Apps & Credentials → your app.
- Choose the Mode: Sandbox — test payments or Live — real payments. Use the client ID and secret of the same mode.
- Tick Offer PayPal on the order page, the licence shop and invoices when you are ready to show it to customers.
- Click Save.
- Click Connect PayPal. Later, the button reads Check PayPal again.
Note: changing to another PayPal account or mode disconnects PayPal. Click Connect PayPal again afterwards.
Open the order page
- In Selling, choose the Currency your package prices are charged in: GBP — £, EUR — € or USD — $.
- Tick Open the order page and take payments.
- Click Save.
Customers choose how to pay: by card (Stripe) or with PayPal, whichever you have set up. You need at least one of them before you can open the order page.
Tip: to sell in more currencies, or to charge VAT by country, use Tax & currencies.
Make a discount code
Tip: Discount codes has every rule a code can have (start date, uses per customer, packages, billing periods, new customers only, free months) and the usage report. A Discount code typed when you make an invoice by hand adds a discount line to it.
- In New discount code, type the Code, for example
SPRING20(3–30 letters, numbers,-or_). - Enter how much Off and choose
%or an amount in your currency. - Choose For: The first payment, A number of months (then set Months, 1 to 36) or Every payment.
- Optionally set Most uses (0 = no limit) and an Ends date.
- Click Make code.
The Discount codes list shows each code, its discount, how often it was used, and when it ends. Click Link to copy an order link with the code already filled in. To stop a code, click End and confirm. Customers who already have the discount keep it.
You need Stripe or PayPal connected before you can make codes.
Run a referral programme
Every customer gets a link under Refer a friend in their Control Panel. When someone orders through it and makes their first payment, the customer who shared it gets a credit off their next invoices.
- In Referral programme, tick Switch on.
- Set the Credit per referral (0 to 1,000 in your currency).
- Optionally type a Discount code for the friend. Make the code first.
- Click Save.
Recent referrals lists who referred whom, and whether the reward was given or is waiting for first payment.
Orders
Orders lists the latest 50 orders with the date, username, domain, package, email and status: Account made, Needs attention or Not paid.
Set up your invoices
The panel issues its own numbered invoices, as PDF.
-
In Invoice details, fill in what invoices show:
Field What it does Company name Your company name (up to 100 characters). Address Your address (up to 400 characters). Company number / VAT number Printed on the invoice (up to 40 characters each). VAT rate (%) The single VAT rate, 0 to 50, used while the VAT rules under Tax & currencies are off. Number prefix Up to 10 letters, numbers or -, for exampleHF-.Next number The next invoice number. Once invoices are issued, it can only go up. Prices include VAT (card payments always do) Whether your package prices include VAT. How to pay Bank details for invoices paid by transfer (up to 400 characters). Terms (small print) Up to 600 characters. Email each invoice to the customer as a PDF Sends every new invoice by email. -
Click Save invoice details.
Make an invoice by hand
- In New invoice, choose the Account.
- Fill in up to three lines: Description (up to 200 characters), Qty and Price.
- Set Due in (days) (0 to 90) and an optional Note.
- Tick Already paid if the customer has paid, and Email it to the customer now to send it.
- Click Make invoice.
Manage invoices
The Invoices list shows the latest 50 invoices with date, number, account, amount and status (Paid, Unpaid, Void or Failed; an invoice past its due date shows Overdue with the number of days). Invoices made by hand are marked by hand; card invoices show their Stripe number.
| Button | What it does |
|---|---|
| Opens the invoice as a PDF. | |
| Mark paid | For an unpaid invoice made by hand: marks it paid and emails a receipt. |
| Void | For an unpaid invoice made by hand: cancels it. Its number stays used. |
| Envelope icon | Emails the invoice again. |
| View | For a card invoice without a panel number: opens it at Stripe. |
Note: card and PayPal payments are managed in Stripe and PayPal, so they cannot be marked paid or voided here.
Unpaid invoices
For invoices made by hand (card payments are followed up by Stripe), the panel can chase payment: a reminder 3 days after the due date, a last reminder after 7 days that says when the websites will be paused, then the account is suspended. Marking the invoice paid switches the account back on.
- In Unpaid invoices, tick Send reminders for overdue invoices.
- Set Suspend the account … days after the due date (0 = never, at most 90).
- Click Save.