Reseller Details
Manage one wholesale reseller: status, profile, tier-based wholesale pricing, API key and webhook, plus order, service, and activity logs.
What the Reseller Details page is for
Reseller Details is the per-partner cockpit for a single wholesale reseller. From one screen you review a partner's activity and revenue, edit their profile and their default discount, change their account status, set the wholesale prices they buy at, issue and revoke their API keys, manage their webhook and its signing secret, and audit their orders, services, end customers and integration logs.
How to reach it
Open Resellers from the sidebar, then click a partner's row in the list. The reseller program must be turned on first under Settings > Reseller Program; if you do not see Resellers in the sidebar, enable it there. Changing anything on this page requires the client-edit permission.
Page layout
The page is split into a header, a left sidebar of quick facts, and a tabbed content area on the right.
Header
- A ← Back to Resellers link that returns you to the list.
- The partner's name, email, and a coloured status badge (Active, Pending, Suspended or Terminated).
- A status action button that changes with the current status: Approve for Pending partners, Suspend for Active partners, and Reactivate for Suspended partners.
Left sidebar
- Services count and Total Revenue cards. Total Revenue is the wholesale value of every reseller order this partner has paid for.
- An Info block showing the Company name and API Access, which reads n active when the partner holds unrevoked keys and No active keys otherwise.
- An Activity block with the Created date and, once approved, the Approved date.
Changing a reseller's status
- Approve a Pending application by clicking Approve in the header. The badge changes to Active and the partner can begin placing wholesale orders.
- Suspend an Active partner with the Suspend button. You are asked to confirm; suspending freezes the partnership.
- Reactivate a Suspended partner to restore them to Active.
The header only ever shows the one action that applies to the current status. If a partner is already Active, you see Suspend (not Approve), and so on.
The tabs
The content area has eight tabs: Overview, Profile, API Settings, Products, Orders, Services, Customers and Activity.
Overview
A read-only summary. Three cards show Monthly Orders, Monthly Revenue and Active Services. When the partner sits on a tier, a fourth card names their Current tier, their monthly run-rate (the recurring value of the services they hold plus one-off spend in the last 30 days), and how much more they need to reach the next tier.
Below them, a Reseller Information panel lists Email, Company, Business Registration, Tax ID, and the API Rate Limit in requests per hour. If you have saved internal notes, an Admin Notes panel shows them.
Profile
The editable record for the partner. Click Edit to make the fields writable, then Save (or Cancel to discard).
| Field | What it does |
|---|---|
| Company Name | The partner's trading or legal company name. |
| Business Registration | Company registration number. |
| Tax ID / VAT Number | Tax or VAT identifier. |
| Default discount rate (%) | This partner's own negotiated rate, from 0 to 100. It is applied as retail minus this percentage when no per-partner override and no tier price exist for a product; where the tier's own discount is larger, the tier wins. |
| Admin Notes | Free-text internal notes about this partnership. Not visible to the reseller. |
API Settings
This tab holds three cards: the partner's API keys, their rate limit, and their webhook. What a partner can then do with those credentials is set out in Reseller API.
API keys
The key list is the partner's complete set of credentials. Every key carries an explicit list of scopes — there is no unrestricted key, and scopes cannot be changed after a key is created.
- Click Issue key to open the form. Give the key a Label (for example
WHMCS production), optionally an Expires date, and tick the Scopes it should carry. At least one scope is required; all of them are ticked by default. - Click Create key. The full secret appears once, in a highlighted box with a Copy button. Copy it before you leave the page — only the prefix is stored, so it can never be shown again.
- Each key in the list shows its label, its prefix, its scopes, the end customer it is bound to (if it is a customer-scoped key), its creation and expiry dates, and when it was last used. Click Revoke on a key to disable it immediately.
- Revoke all keys appears when the partner holds at least one live key. It stops every one of their integrations at once, and asks you to confirm first.
| Scope | Allows |
|---|---|
read | Listing and reading products, orders, services, live statistics, service capabilities, operating-system templates, backups and customers. |
orders | Placing wholesale orders and retrying a failed order payment. |
services | Power actions, suspending and unsuspending, changing a package, opening a console session, and creating a backup. |
destructive | Terminating a service, reinstalling its operating system, and resetting its root password. |
customers | Creating, updating and deleting their own end-customer records. |
account | Their saved payment methods, choosing a default, changing their webhook address and sending a test delivery. |
Tip: Resellers can also create their own keys from their portal. Issuing one here is for the case where you are setting an integration up on their behalf — the migration module for a third-party billing panel, for example, needs
read,orders,servicesanddestructive.
Rate Limit
Shows the partner's current ceiling in requests per hour and lets you change it: type a new number in the box and click Save. The default is 1,000 per hour, set for the whole program under Settings > Reseller Program; the value here overrides it for this partner alone.
Webhook Configuration
Type the destination address where event notifications should be delivered into the Webhook URL field and click Save. Saving an address for the first time mints the partner's signing secret and shows it once in a highlighted box with a Copy button. Clearing the field removes the webhook.
A separate Rotate secret button issues a fresh signing secret, again shown only once. The secret authenticates the reseller's own write requests and signs the deliveries you send them, so rotating it makes every integration that still uses the old one fail immediately — the confirmation dialog says so. Rotate it if a secret leaks. Webhooks covers which events fire at this address, what a delivery carries, and how the partner verifies the signature.
Products — wholesale pricing
This tab is the price book. Each row is a product, with these columns:
- Product — the product name and its category, with the number of configurable options beneath it, and an override badge when this partner has a price of their own on it.
- Enabled — a toggle that decides whether this partner can see and order the product at all. It only appears once the product has a per-partner record; until then the cell shows a dash and the product is available by default.
- Retail — the product's normal monthly price.
- One column per tier — the wholesale monthly price for that tier, or a dash where none is set.
- Two action icons: a wrench that opens the per-partner override, and a pencil that edits the tier prices.
Tier prices are shared by every partner
Warning: The tier columns are a global price book. Editing one from this page changes that tier's price for every reseller on that tier, not only the partner you are looking at. Both the pencil and the bulk toolbar warn you and ask you to confirm before applying. To price a product for this partner alone, use the wrench instead.
To edit tier prices, click the pencil at the end of the row, type a wholesale monthly price into each tier column, then click the green check to save or the X to cancel. Products with configurable options pick up the same discount automatically.
To seed a whole price book at once, use the Bulk set toolbar above the table: choose a tier, enter a percentage between 1 and 99, and click Apply. Every product with a retail monthly price gets that tier's wholesale price set to the chosen percentage off retail, and options follow the same ratio. Use it to lay down a baseline, then fine-tune individual products.
Per-partner overrides
Click the wrench on a row to open Wholesale Override for that product. These prices apply to this reseller only and take priority over the tier price; leave a field empty to fall back to the tier. The dialog offers:
- An absolute wholesale price for each billing cycle: Monthly, Quarterly, Semi-Annual, Annual, Hourly, and the Setup Fee. Each field shows the price it would otherwise fall back to as its placeholder.
- Discount Rate Override (%) — a percentage off retail used for this partner and this product when no absolute price is set.
- Max Quantity — a cap on how many of this product the partner may hold.
Click Save to apply. Putting all of that together, the price a partner pays is resolved in this order: per-partner absolute price, then tier price, then retail minus a percentage — a per-product discount override if set, otherwise whichever is larger of the tier's discount and the partner's own default discount.
Orders
Every order placed through this reseller, in a sortable table.
| Column | Meaning |
|---|---|
| Order | Order number, linking to the full order. |
| External ID | The partner's own reference for the order, if they sent one. |
| Wholesale | The amount the partner pays you. |
| Retail | The retail value of the order. |
| Payment | A badge: paid, pending, processing, failed or refunded. Failed rows show the failure reason; pending rows may carry a View Invoice link. |
| Date | When the order was placed. |
When a payment shows failed, a Retry Payment button appears on that row. It charges the reseller's saved payment method again, and asks you to confirm first.
Services
All services belonging to this partner. The sortable table lists the service name (linking to the service), Hostname, the end Customer (name, email or reference), the Wholesale amount with its billing cycle, a Status badge, and the Created date.
Customers
The end customers this partner has registered with you, so you can attribute a service back to the person who actually holds it. Columns are the Customer name with their email, Their reference (the partner's own identifier for that customer), how many Services that customer holds, and the date they were Added. If the partner has registered none, the tab says so.
Activity
An audit trail in two sections:
- API Request Logs — each call with Time, Method, Endpoint, response Status code, Duration in milliseconds, and source IP.
- Webhook Delivery Logs — each event delivery with Time, Event type, Status (delivered, pending or failed), number of Attempts, the last Response code, and the Delivered timestamp.
If a partner has not used the API or received webhooks yet, these sections show an empty message.
What a reseller can do with the services they sell
A partner operates the services they have sold from their own portal, and through the API with the services and destructive scopes. The platform works out what each individual service supports and offers only those controls, so what a partner sees varies by product:
| Service type | Available to the reseller |
|---|---|
| Virtual servers on your own infrastructure | Live CPU, memory, disk and network statistics; a console session; power actions; root-password reset; operating-system reinstall from the catalogue the plan and product allow; and snapshots. Each of those is offered only if you left it switched on for the product, so a plan with the console or reinstall disabled hides it from the partner too. Reinstalling requires an image from the service's own catalogue and a new root password of at least 8 characters. This needs the virtual-server module to be enabled. |
| Dedicated servers | Power on, off and restart; hardware statistics; a console session; the list of operating-system images; and a rebuild, which also generates a new root password and returns it once. Backups are not offered on a dedicated server. |
| Services supplied by an upstream provider | Power actions, statistics, console, reinstall, password reset and backups, all passed through to the supplier. The operating-system list comes from the supplier rather than from your catalogue. |
| Services provisioned by a plugin | Whatever the plugin itself implements. The full set of controls is offered and the plugin refuses anything it does not support. If the plugin is not enabled on your installation, no controls are shown. |
Note: A terminated service offers no controls at all. On a suspended service the partner can still read statistics and stop or restart it, but starting it, opening a console, reinstalling, resetting the password and creating a backup are all refused until the service is unsuspended — which is what stops a suspension being worked around.
Tips and gotchas
Program-wide defaults — the tier ladder, the default rate limit, approval rules, company and tax-number requirements, the minimum order amount, the payment mode and webhook retry behaviour — are configured once under Settings > Reseller Program, not on this page. This page holds the per-partner settings: their profile and default discount, their overrides, their keys, their rate limit and their webhook.
Hiding a product from a partner and then showing it again preserves the prices you had negotiated with them — the toggle only changes availability.
Erasing the customer account behind a reseller closes the partnership: every API key is revoked and the webhook address and signing secret are removed. See Client Details.
Related articles
Resellers, Reseller Program, Reseller API, Webhooks, The Reseller Area, Clients, Referrals, Service Details
