Service Catalogue
Define what your MSP sells, what it charges, and which clients can buy it — with a cost floor the system will not let you price below.
The problem
Most MSPs price from a spreadsheet. The master list of services lives in one file, the sell prices in another, and what each client is actually entitled to lives in the head of whoever set up that account. Nobody can answer “what is our margin on backup across all clients?” without an afternoon of reconciliation, and a technician quoting from a stale tab can quietly sell something below cost.
What Solidlio does about it
Solidlio publishes a master service catalogue with a cost price. Your account layers its own sell price, SKU and naming over any service you adopt, and the platform refuses any price below cost on every write path. A separate per-client layer controls which of your clients can buy each service and at what price, so a negotiated rate for one client does not disturb your list price. Margin is computed on every row and totalled across the catalogue.
Capabilities
| Capability | What it does |
|---|---|
| Adopt platform services | Add any service from the master catalogue to your own, individually or in bulk, with your price. |
| Cost-floor enforcement | Rejects any sell price below the platform cost price, on both the catalogue manager and the service editor. |
| Live margin | Shows price-based margin per row as you type, and totals it across the catalogue. |
| Custom identity | Override the platform SKU, name and description with your own for anything a client sees. |
| Enable / disable | Withdraw a service from sale without deleting it or its history. |
| Destructive-delete guard | Refuses to delete a service that has client enrolments, a marketplace listing, or service orders. |
| Per-client entitlement | Grant individual services or your entire catalogue to a client organization; re-runnable safely. |
| Per-client pricing | Override the list price for one client without changing what anyone else pays. |
| Suspend a grant | Pause a client’s access to one service, keeping the enrolment intact. |
| Skill requirements | Record the technician skill levels required to deliver each service. |
Built for MSPs and their clients
The catalogue is explicitly two-sided. A managed client is a separate account from the MSP that services it, and the boundary is enforced in the data layer, not just the UI.
| Organization (client) | MSP | |
|---|---|---|
| Master catalogue | Not visible | Adopts from it, sets its own price |
| Sell price and cost | Sees only its own price; never sees your cost or margin | Sets both; cost floor enforced |
| Entitlement | Sees the services granted to it | Decides which services each client may buy |
| Negotiated rates | Sees its own rate | Sets a per-client override without moving the list price |
| Catalogue admin | None | Full, scoped to its own account |
Cross-tenant access is denied on every route. A foreign account id returns the same 403 as a nonexistent one, so the API cannot be used to probe which accounts exist.
How it works
- Adopt — open Services → Catalogue → Add from platform, set a sell price against the visible cost price, and add one service or a selected batch.
- Price — margin recalculates live as you type. Anything below cost is rejected before it is written.
- Brand — optionally replace the SKU, name and description with your own; that is what your clients see.
- Grant — on Services → Clients, pick a client and grant individual services or the whole catalogue at once.
- Negotiate — set a per-client price override where a client has a different rate.
- Withdraw — disable a service to stop selling it, or remove it entirely; removal is blocked while anything depends on it.
Compliance and audit
Deletion is guarded rather than cascading. A service with client enrolments, a marketplace listing, or an associated service order cannot be hard-deleted, because doing so would either cascade into the listing and its subscriptions or null the foreign key on a sold order — severing the record of what was sold from the thing that was sold. The system offers a soft disable instead, preserving the history.
Every catalogue write is scoped to the calling account in the data layer, and the per-client grant layer resolves the target organization against the set of accounts the caller actually services.
Editions
The service catalogue carries no plan gate. Every capability above is available on every tier, including Free.
Price what you sell, once, and let the system refuse the mistakes.