User guide

Commissions

Looking for what it does rather than how to use it? Read the Commissions overview .

Partner commissions: what Solidlio owes an MSP for the client subscriptions it brings in, what that MSP owes Solidlio in platform fees, and how the two are netted and paid.


What it is

When an MSP’s managed client subscribes to a paid Solidlio plan, the MSP earns a commission on that subscription. Commissions accrue per sale, are approved by a platform administrator, are batched into a payout for a period, and are paid.

Commissions run in the other direction from invoicing. Invoicing is what an MSP bills its clients. Commissions are what Solidlio pays the MSP. Platform fees are what the MSP owes Solidlio, and they are deducted from the commission payout before it goes out.


Concepts

ConceptWhat it is
Commission ruleThe terms for one account: a percentage rate, an optional fixed amount per sale, optional per-transaction floor and ceiling, a scope, and a date window.
Commission earningOne booked commission for one sale. Records the base amount, the rate applied, the arithmetic, and the rule it came from. This is the line item.
Commission payoutA batch of approved earnings for one account over one period, with a payment method and reference once settled.
Commission disputeA contest raised against a single earning. Carries a reason, a priority, and a resolution.
Platform feeWhat the account owes Solidlio — 15% on MSP support-package sales, plus escalation and service-order fees. Netted against the payout.
Net payoutApproved unpaid commissions for a period, minus pending platform fees for that period, floored at zero.

percentageRate is a fraction, not a percent

Every rate in this system is stored as a fraction: 0.10 means 10%. The API rejects any rate above 1 with a 400. Every display surface multiplies by 100.

Earning lifecycle

PENDING ──approve──► APPROVED ──batched into payout──► (payout PENDING)

                                                     process payout

                                                          PAID
  • PENDING — booked when the sale happened. Not yet payable.
  • APPROVED — a platform admin has signed it off. Eligible for a payout batch.
  • PAID — the payout that contained it was processed.
  • CANCELLED — reserved; nothing sets it today. See §9.

A payout moves PENDING → COMPLETED when processed.

How a figure is calculated

For a sale of baseAmountCents under a matched rule:

percentageAmount = round(baseAmountCents × percentageRate)
total            = percentageAmount + fixedAmountCents
total            = clamp(total, minCommissionCents, maxCommissionCents)

Rounding is half-up on whole cents. The ceiling is applied before the floor, and the result is never negative. Worked example — a $200.00 subscription under a 20% rule with a $5.00 fixed amount and an $18.00 ceiling:

20000 × 0.20 = 4000  (+ 500 fixed) = 4500  → capped to 1800

The earning stores all four numbers, so the MSP can check the arithmetic rather than trust the total.

Which rule applies

For each sale the engine looks at the account’s rules that are active and whose effective window contains the sale date, then picks:

  1. a rule scoped to that sale’s service or category, otherwise
  2. a rule marked “apply to all”.

Ties break on the latest Effective from, then the newest rule — so adding a rule to supersede an older one works without deleting the old one. If nothing matches, the platform default of 10% applies, recorded against a per-account rule named “MSP Client Subscription Commission”.


Roles and permissions

Actionplatform administratorMSP administratorMSP technicianorganization administrator and below
Create and edit commission rules
Approve an earning
Create and process a payout
Record and settle a platform fee
Resolve a dispute
View own commission earnings
View own payouts and net payout
View own effective rate
Open a dispute on own earning

Two rules hold this shape:

  • An MSP cannot set its own rate. Rules are platform-authored. An MSP reads its effective terms and nothing more.
  • An MSP cannot mark its own commission paid. Payout processing is a platform action for the same reason.

The MSP surface is floored at MSP administrator because it is revenue-bearing — an MSP technician does not see the firm’s commission ledger, and the sidebar link is hidden for that role rather than shown and then refused.


Walkthroughs

A. Set partner terms for an MSP

  1. Go to Platform → Commission Rules (or the Rules tab of Platform → Commissions).
  2. + Create Rule.
  3. Search for and select the MSP account. (No typing raw account ids.)
  4. Name the rule, e.g. Acme partner terms 2026.
  5. Enter the Percentage Rate as a decimal — 0.15 for 15%. The form rejects anything above 1.
  6. Optionally add a fixed amount per sale, and a floor and ceiling in cents.
  7. Leave Apply to all ticked for blanket terms, or untick it and list the category ids the rule covers.
  8. Set Effective from. Leave Effective until empty for open-ended terms.
  9. Create Rule.

The next client subscription that MSP sells is booked under this rule. Existing earnings are not retroactively changed.

B. Approve and pay a period

  1. Platform → Commissions → Earnings. Review the rows; each shows the base amount, the rate applied and the resulting commission.
  2. Approve each earning that is correct.
  3. Platform → Commissions → Settlements → + Create Settlement.
  4. Select the MSP account and the period. Every approved, unpaid earning created inside that window is pulled into the batch and its total computed. If there are none, you get “No approved earnings found for this period”.
  5. Add a note if you want one recorded against the batch.
  6. Create Settlement.
  7. Check the Platform Fees tab for anything that account owes and settle it as Net against payout so it comes off the payment.
  8. Back on Settlements, Process the payout: record the payment method, the reference, and a settlement note. Every earning in the batch flips to PAID.

C. Handle a dispute

  1. Platform → Commissions → Earnings → Dispute on the row in question, or wait for the MSP to raise one from its own portal.
  2. Describe what is wrong. ✨ Suggest categorises the text and proposes a priority; you can override it.
  3. Open dispute.
  4. On the dispute, AI Triage produces a legitimacy assessment and a suggested resolution from the earning, the rule and the account’s dispute history.
  5. Response drafts a reply in a professional, empathetic or technical tone. Anything you type into Additional Context is used in the draft.
  6. Set the status to RESOLVED or REJECTED and record the resolution. The time and the resolver are stamped automatically.

D. Check your commission as an MSP

  1. Commissions in the MSP sidebar lists every earning with its client, base amount, rate and status.
  2. Open one to see the full arithmetic, the rule it was calculated under, and the payout that settled it.
  3. Dispute this commission if the number is wrong. One open dispute per earning; a second returns “This commission already has an open dispute under review”.
  4. Settings → Billing shows the commission terms Solidlio will apply to your next sale, and whether your plan is commission eligible.

Configuration

SettingWhereEffect if unset
Percentage rateCommission ruleDefaults to 0. A 0-rate rule books nothing — it is not a fallback.
Fixed amount per saleCommission rule0.
Min / max commissionCommission ruleNo floor / no ceiling.
Apply to allCommission ruleOff. A rule with no scope and no “apply to all” matches nothing.
Category / service scopeCommission ruleEmpty. See above.
Effective fromCommission ruleNow.
Effective untilCommission ruleOpen-ended.
ActiveCommission ruleOn. An inactive rule is skipped entirely.
commissionEligibleThe MSP’s service tierAbsent or no tier at all is treated as eligible.

Plan eligibility

Commission accrual is gated on the MSP’s own plan. If the MSP’s service tier declares commissionEligible: false, no earning is booked and the reason recorded is “MSP plan is not commission eligible”. An account with no tier is treated as eligible — the platform account itself carries no tier and must never be plan-gated.

MSP planCommission eligible
Free
Starter
Growth
Scale
Enterprise

Troubleshooting

MessageCause
No approved earnings found for this periodNothing in the window is APPROVED and unpaid. Approve the earnings first, and check the dates.
Earning is not in pending statusAlready approved or already paid. Approval is one-way.
Payout is not in pending statusAlready processed. Processing is one-way.
Fee is not in pending statusAlready settled, waived or refunded.
An open dispute already exists for this earningOne open dispute per earning. Resolve or reject the first.
This commission already has an open dispute under reviewThe same rule, from the MSP portal. Returned as a 409.
MSP plan is not commission eligibleThe MSP’s tier sets commissionEligible: false. Nothing is booked.
Account is not an MSP/IT PartnerisMspItPartner is false on the account being credited.
Tone must be one of: PROFESSIONAL, EMPATHETIC, TECHNICALInvalid tone. The platform route also rejects it locally with a 400.
Format must be csv or pdfUnsupported export format.
Invalid reportType. Must be earnings, payouts, or rulesUnsupported export report type.
A 400 on a rate of 15Rates are fractions. Send 0.15.

Where commissions come from

Only one path books a commission today: an MSP’s managed client moving onto a paid plan. It fires from two places, both of which pass the tier being sold so a tier-scoped rule can match:

  • Plan upgrade — a managed client upgrades and the platform charges it.
  • Sell plan — an MSP sells a plan to a client from the MSP portal.

Platform fees are written from three places: MSP support-package sales (15%), escalation billing, and service orders.

Nothing books those today. Paid integration activation is deliberately refused rather than granted for free while owing an uncollectable commission.


Limits and known behaviour

  • One accrual source. Only client subscriptions book commissions.
  • CANCELLED earnings. The status exists and is filterable but nothing sets it. To reverse a commission today, resolve a dispute against it.
  • Payout currency. CommissionPayout.currency defaults to USD while accounts default to CAD. Exports report each payout’s own value; nothing converts between currencies on a payout.
  • Rules are not retroactive. Editing a rule changes future accrual only. Booked earnings keep the rate they were calculated at.
  • Rule scope matching is exact-id. categoryIds and serviceIds are matched by identity, not by hierarchy — a parent category does not imply its children.
  • No approval threshold. Every earning needs a manual approval regardless of size; there is no auto-approve.
  • Disputes do not hold payment. An earning with an open dispute can still be approved and paid. Nothing blocks it.
  • Fee settlement is a status change. Settling a platform fee as “Net against payout” records the intent and links the payout id; it does not itself reduce a payout total. GET /msp/net-payout is what nets the two.
  • The MSP cannot self-serve a rate change. By design. Terms are negotiated with Solidlio and entered by a platform administrator.

Questions this guide did not answer?

Ask us. You will get a reply from someone who uses the product every day.

Book a demo Contact us

A 30-minute walkthrough against your own workflow. No slides.