Sherweb Distributor Billing
Overview
Billing in Sherweb represents the financial data flowing from the distributor to the service provider (MSP). When Sherweb provisions or manages cloud subscriptions on behalf of an MSP's customers, it generates payable charges dated within a billing period. Each charge includes detailed pricing breakdown with list prices, net prices, proration, deductions (promotional and performance), fees, and taxes. Understanding Sherweb billing data is critical for MSPs to calculate margins, reconcile costs, and ensure accurate client billing. Note that the tool surface reaches charges, not periods and not invoices — see What this plugin cannot retrieve.
Anti-triggers
- An invoice the MSP sends to a client — Sherweb charges are money the
MSP owes the distributor, the opposite direction to the accounting and
PSA plugins. Client-facing invoices are
qbo-invoices,
xero-invoices, autotask-billing, or halopsa-invoices. Getting the
direction wrong inverts every margin calculation.
- The equivalent cost from the other CSP marketplace — use
pax8-invoices.
- Comparing the two sides to find unbilled subscriptions — that is the
cross-vendor reconciliation itself; use
shared-skills-billing-reconciliation.
- Aged receivables on the MSP's own books — Sherweb's per-customer AR
view is the distributor platform's ledger, not the accounting system's.
Collections work runs off
qbo-reports or xero-reports; see
sherweb-customers for what Sherweb's own AR data covers.
MCP Tools
Available Tools
The server registers exactly two billing tools
(sherweb-mcp/src/domains/billing.ts:17-69).
| Tool |
Description |
Key Parameters |
sherweb_billing_payable_charges |
Get payable charges for a date range |
billingCycleType (OneTime|Monthly|Yearly), periodFrom, periodTo, page, pageSize |
sherweb_billing_charge_details |
Get detailed breakdown of a specific charge |
chargeId (required) |
What this plugin cannot retrieve
Two capabilities that earlier revisions of this skill described do not exist
on the shipped server. Do not substitute a near-miss for either.
- There is no billing-period enumeration. No tool lists available
billing periods, their IDs, dates, or open/closed status. You supply the
window yourself as
periodFrom/periodTo on
sherweb_billing_payable_charges; you cannot ask the server which periods
exist. If an operator says "the latest period", resolve that from the
calendar and the MSP's own billing cycle, then pass explicit dates — never
guess a billingPeriodId, which is not a parameter of any tool here.
- There is no invoice surface at all. Nothing on this server lists
invoices, fetches an invoice by ID, or returns invoice line items. The two
invoice-adjacent capabilities are narrower and are not substitutes:
sherweb_billing_charge_details returns the line items of a single
charge by charge ID, and sherweb_customers_accounts_receivable returns a
customer's outstanding balance and aging. Neither is an invoice. When an
operator asks for a Sherweb invoice, say so plainly and offer charge-level
reconciliation or the AR balance instead. Invoice documents live in the
Sherweb partner portal.
Get Payable Charges
Call sherweb_billing_payable_charges with an explicit date range:
periodFrom / periodTo: ISO 8601 dates bounding the window
(e.g. 2026-02-01 to 2026-02-28). You choose these; there is no period
list to pick from.
billingCycleType: OneTime, Monthly, or Yearly. If you call the
tool with none of billingCycleType, periodFrom, or periodTo, the
server elicits the cycle type from the caller before proceeding.
- Paginate: Set
page (1-based) and pageSize for large result sets
- Returns all charges in the window with full pricing breakdown
Example: Get monthly recurring charges for February 2026:
sherweb_billing_payable_charges with billingCycleType=Monthly,
periodFrom=2026-02-01, periodTo=2026-02-28, pageSize=100
Get Charge Details
Call sherweb_billing_charge_details with the chargeId of a charge returned
by sherweb_billing_payable_charges to see its line items, pricing tiers,
deductions, fees, and tax.
Key Concepts
Charge Types
Sherweb categorizes charges into three types:
| Charge Type |
Description |
When Generated |
Setup |
One-time provisioning or activation fees |
When a new subscription is created |
Recurring |
Ongoing subscription charges |
Each billing cycle (monthly/yearly) |
Usage |
Consumption-based charges (e.g., Azure metered) |
Based on actual usage during the period |
Billing Cycles
| Cycle |
Description |
Charge Frequency |
OneTime |
Single charge, no recurrence |
Once at setup |
Monthly |
Charged every month |
Monthly billing period |
Yearly |
Charged annually |
Annual billing period |
Pricing Breakdown
Every charge in Sherweb includes a detailed pricing structure:
| Field |
Type |
Description |
listPrice |
decimal |
Vendor's published list price per unit |
netPrice |
decimal |
Partner's net price after distributor discounts |
quantity |
integer |
Number of units (seats, licenses, etc.) |
prorated |
boolean |
Whether the charge is prorated for a partial period |
proratedDays |
integer |
Number of days in the prorated period |
subTotal |
decimal |
Calculated subtotal before deductions (netPrice x quantity) |
Deductions
Sherweb applies deductions to reduce the partner's cost. Deductions come in three types:
| Deduction Type |
Description |
Calculation |
PromotionalMoney |
Fixed dollar amount promotional discount |
Subtracted from subTotal |
PromotionalPercentage |
Percentage-based promotional discount |
Percentage off subTotal |
PerformancePercentage |
Performance-based rebate for hitting volume targets |
Percentage off subTotal |
Fees and Taxes
After deductions, additional line items may apply:
| Item |
Description |
fees |
Administrative or platform fees added by Sherweb |
taxes |
Applicable sales tax, GST, HST, or VAT |
total |
Final amount payable (subTotal - deductions + fees + taxes) |
MSP Margin Calculation
To calculate your MSP margin on a Sherweb charge:
MSP Cost = charge.total (what you pay Sherweb)
Client Price = your retail price to the customer
Margin = Client Price - MSP Cost
Margin % = (Margin / Client Price) * 100
Tips for margin analysis:
- Compare
listPrice vs netPrice to see your distributor discount
- Factor in deductions -- promotional discounts reduce your cost
- Performance percentage deductions reward volume; track these quarterly
- Setup charges are one-time -- amortize across the subscription term for accurate monthly margin
- Usage charges fluctuate -- use historical averages for margin forecasting
Field Reference
Payable Charge Fields
| Field |
Type |
Description |
id |
string |
Charge unique identifier |
customerId |
string |
Customer the charge belongs to |
customerName |
string |
Customer display name |
subscriptionId |
string |
Associated subscription |
productName |
string |
Product or SKU name |
chargeType |
string |
Setup, Recurring, or Usage |
billingCycle |
string |
OneTime, Monthly, or Yearly |
listPrice |
decimal |
Vendor list price per unit |
netPrice |
decimal |
Partner net price per unit |
quantity |
integer |
Number of units |
prorated |
boolean |
Whether charge is prorated |
proratedDays |
integer |
Days in prorated period |
subTotal |
decimal |
Subtotal before deductions |
deductions |
array |
List of applied deductions |
fees |
decimal |
Additional fees |
taxes |
decimal |
Tax amount |
total |
decimal |
Final payable amount |
No invoice fields are documented here because no tool on this server
returns an invoice. See What this plugin cannot retrieve, above.
Common Workflows
Monthly Billing Reconciliation
- Determine the window you want from the calendar — there is no period list
to read it from
- Call
sherweb_billing_payable_charges with periodFrom and periodTo set
to that window and billingCycleType set to the cycle you are reconciling,
paginating through all results
- Group charges by
customerId to see per-customer totals
- Compare Sherweb charges against what you bill each customer in your PSA
- Flag discrepancies where MSP cost exceeds or is too close to client billing
Margin Analysis Across Customers
- Fetch all payable charges for the date range
- For each customer, sum the
total field across all charges
- Compare against your retail billing to that customer
- Calculate margin per customer and overall portfolio margin
- Identify customers with negative or sub-target margins
Deduction Tracking
- Fetch payable charges and filter for entries with non-empty
deductions arrays
- Group deductions by type (PromotionalMoney, PromotionalPercentage, PerformancePercentage)
- Sum total savings from each deduction category
- Track performance percentage deductions over time to monitor volume rebate trends
Charge Verification (there is no invoice verification workflow)
Invoice retrieval is not available through this plugin — see What this plugin
cannot retrieve. Verify at the charge level instead:
- Call
sherweb_billing_payable_charges for the window under review
- For each charge worth scrutiny, call
sherweb_billing_charge_details with
its chargeId to see the line items, deductions, fees, and tax
- Cross-reference those line items against what you expected to be provisioned
- Verify totals and flag discrepancies. To confirm the invoice document
itself, open it in the Sherweb partner portal — no tool here returns it.
Cost Forecasting
- Pull 3-6 months of history by calling
sherweb_billing_payable_charges
once per month, with periodFrom/periodTo bounding each month explicitly
- Calculate average monthly cost per customer and per product
- Identify trends (growing seat counts, new products, usage spikes)
- Project next month's Sherweb costs for budget planning
Response Examples
Payable Charge:
{
"id": "chg-2026-02-001",
"customerId": "cust-abc-123",
"customerName": "Acme Corporation",
"subscriptionId": "sub-def-456",
"productName": "Microsoft 365 Business Premium",
"chargeType": "Recurring",
"billingCycle": "Monthly",
"listPrice": 22.00,
"netPrice": 17.10,
"quantity": 25,
"prorated": false,
"proratedDays": null,
"subTotal": 427.50,
"deductions": [
{
"type": "PerformancePercentage",
"description": "Volume rebate - Gold tier",
"percentage": 3.0,
"amount": 12.83
}
],
"fees": 0.00,
"taxes": 33.17,
"total": 447.84
}
Error Handling
Common Errors
| Error |
Cause |
Resolution |
| No charges found |
The periodFrom/periodTo window contains no charges, or the wrong billingCycleType was requested |
Widen the date range and re-check the cycle type. There is no period list to validate against — the window is whatever you passed |
| Charge details unavailable |
Charge ID does not exist |
Verify the charge ID from the sherweb_billing_payable_charges result |
| Authentication error |
Expired or invalid token |
Re-authenticate using OAuth 2.0 client credentials flow |
Best Practices
- Track deductions - Monitor promotional and performance deductions to ensure you receive expected discounts
- Watch for proration - Prorated charges indicate mid-cycle changes; verify they match subscription modifications
- Separate charge types - Analyze Setup, Recurring, and Usage charges independently for accurate cost modeling
- Calculate true margin - Include fees and taxes in margin calculations, not just netPrice vs listPrice
- Monitor usage charges - Usage-based charges (Azure, etc.) can spike unexpectedly; set up alerts
- Plan for billing cycles - Annual charges create cash flow events; plan for yearly renewal months
- Use performance rebates strategically - Consolidate purchasing through Sherweb to maximize performance percentage deductions
Related Skills
1---2name: sherweb-billing3description: Sherweb distributor billing: explicit billing date ranges, Setup/Recurring/Usage charge types, billing cycles (OneTime, Monthly, Yearly), the pricing breakdown (listPrice, netPrice, prorated, subTotal), promotional and performance deductions, fees, taxes, and MSP margin calculation. Also covers what this plugin cannot retrieve: there is no billing-period enumeration and no invoice surface.4---56# Sherweb Distributor Billing78## Overview910Billing in Sherweb represents the financial data flowing from the distributor to the service provider (MSP). When Sherweb provisions or manages cloud subscriptions on behalf of an MSP's customers, it generates payable charges dated within a billing period. Each charge includes detailed pricing breakdown with list prices, net prices, proration, deductions (promotional and performance), fees, and taxes. Understanding Sherweb billing data is critical for MSPs to calculate margins, reconcile costs, and ensure accurate client billing. Note that the tool surface reaches charges, not periods and not invoices — see *What this plugin cannot retrieve*.1112## Anti-triggers1314- **An invoice the MSP sends to a client** — Sherweb charges are money the15 MSP *owes* the distributor, the opposite direction to the accounting and16 PSA plugins. Client-facing invoices are `qbo-invoices`,17 `xero-invoices`, `autotask-billing`, or `halopsa-invoices`. Getting the18 direction wrong inverts every margin calculation.19- **The equivalent cost from the other CSP marketplace** — use20 `pax8-invoices`.21- **Comparing the two sides to find unbilled subscriptions** — that is the22 cross-vendor reconciliation itself; use `shared-skills-billing-reconciliation`.23- **Aged receivables on the MSP's own books** — Sherweb's per-customer AR24 view is the distributor platform's ledger, not the accounting system's.25 Collections work runs off `qbo-reports` or `xero-reports`; see26 `sherweb-customers` for what Sherweb's own AR data covers.2728## MCP Tools2930### Available Tools3132The server registers exactly two billing tools33(`sherweb-mcp/src/domains/billing.ts:17-69`).3435| Tool | Description | Key Parameters |36|------|-------------|----------------|37| `sherweb_billing_payable_charges` | Get payable charges for a date range | `billingCycleType` (`OneTime`\|`Monthly`\|`Yearly`), `periodFrom`, `periodTo`, `page`, `pageSize` |38| `sherweb_billing_charge_details` | Get detailed breakdown of a specific charge | `chargeId` (required) |3940### What this plugin cannot retrieve4142Two capabilities that earlier revisions of this skill described do not exist43on the shipped server. Do not substitute a near-miss for either.4445- **There is no billing-period enumeration.** No tool lists available46 billing periods, their IDs, dates, or open/closed status. You supply the47 window yourself as `periodFrom`/`periodTo` on48 `sherweb_billing_payable_charges`; you cannot ask the server which periods49 exist. If an operator says "the latest period", resolve that from the50 calendar and the MSP's own billing cycle, then pass explicit dates — never51 guess a `billingPeriodId`, which is not a parameter of any tool here.52- **There is no invoice surface at all.** Nothing on this server lists53 invoices, fetches an invoice by ID, or returns invoice line items. The two54 invoice-adjacent capabilities are narrower and are not substitutes:55 `sherweb_billing_charge_details` returns the line items of a *single56 charge* by charge ID, and `sherweb_customers_accounts_receivable` returns a57 customer's outstanding balance and aging. Neither is an invoice. When an58 operator asks for a Sherweb invoice, say so plainly and offer charge-level59 reconciliation or the AR balance instead. Invoice documents live in the60 Sherweb partner portal.6162### Get Payable Charges6364Call `sherweb_billing_payable_charges` with an explicit date range:6566- **`periodFrom` / `periodTo`:** ISO 8601 dates bounding the window67 (e.g. `2026-02-01` to `2026-02-28`). You choose these; there is no period68 list to pick from.69- **`billingCycleType`:** `OneTime`, `Monthly`, or `Yearly`. If you call the70 tool with none of `billingCycleType`, `periodFrom`, or `periodTo`, the71 server elicits the cycle type from the caller before proceeding.72- **Paginate:** Set `page` (1-based) and `pageSize` for large result sets73- Returns all charges in the window with full pricing breakdown7475**Example: Get monthly recurring charges for February 2026:**76- `sherweb_billing_payable_charges` with `billingCycleType=Monthly`,77 `periodFrom=2026-02-01`, `periodTo=2026-02-28`, `pageSize=100`7879### Get Charge Details8081Call `sherweb_billing_charge_details` with the `chargeId` of a charge returned82by `sherweb_billing_payable_charges` to see its line items, pricing tiers,83deductions, fees, and tax.8485## Key Concepts8687### Charge Types8889Sherweb categorizes charges into three types:9091| Charge Type | Description | When Generated |92|-------------|-------------|----------------|93| `Setup` | One-time provisioning or activation fees | When a new subscription is created |94| `Recurring` | Ongoing subscription charges | Each billing cycle (monthly/yearly) |95| `Usage` | Consumption-based charges (e.g., Azure metered) | Based on actual usage during the period |9697### Billing Cycles9899| Cycle | Description | Charge Frequency |100|-------|-------------|-----------------|101| `OneTime` | Single charge, no recurrence | Once at setup |102| `Monthly` | Charged every month | Monthly billing period |103| `Yearly` | Charged annually | Annual billing period |104105### Pricing Breakdown106107Every charge in Sherweb includes a detailed pricing structure:108109| Field | Type | Description |110|-------|------|-------------|111| `listPrice` | decimal | Vendor's published list price per unit |112| `netPrice` | decimal | Partner's net price after distributor discounts |113| `quantity` | integer | Number of units (seats, licenses, etc.) |114| `prorated` | boolean | Whether the charge is prorated for a partial period |115| `proratedDays` | integer | Number of days in the prorated period |116| `subTotal` | decimal | Calculated subtotal before deductions (netPrice x quantity) |117118### Deductions119120Sherweb applies deductions to reduce the partner's cost. Deductions come in three types:121122| Deduction Type | Description | Calculation |123|----------------|-------------|-------------|124| `PromotionalMoney` | Fixed dollar amount promotional discount | Subtracted from subTotal |125| `PromotionalPercentage` | Percentage-based promotional discount | Percentage off subTotal |126| `PerformancePercentage` | Performance-based rebate for hitting volume targets | Percentage off subTotal |127128### Fees and Taxes129130After deductions, additional line items may apply:131132| Item | Description |133|------|-------------|134| `fees` | Administrative or platform fees added by Sherweb |135| `taxes` | Applicable sales tax, GST, HST, or VAT |136| `total` | Final amount payable (subTotal - deductions + fees + taxes) |137138### MSP Margin Calculation139140To calculate your MSP margin on a Sherweb charge:141142```143MSP Cost = charge.total (what you pay Sherweb)144Client Price = your retail price to the customer145Margin = Client Price - MSP Cost146Margin % = (Margin / Client Price) * 100147```148149**Tips for margin analysis:**1501511. Compare `listPrice` vs `netPrice` to see your distributor discount1522. Factor in deductions -- promotional discounts reduce your cost1533. Performance percentage deductions reward volume; track these quarterly1544. Setup charges are one-time -- amortize across the subscription term for accurate monthly margin1555. Usage charges fluctuate -- use historical averages for margin forecasting156157## Field Reference158159### Payable Charge Fields160161| Field | Type | Description |162|-------|------|-------------|163| `id` | string | Charge unique identifier |164| `customerId` | string | Customer the charge belongs to |165| `customerName` | string | Customer display name |166| `subscriptionId` | string | Associated subscription |167| `productName` | string | Product or SKU name |168| `chargeType` | string | Setup, Recurring, or Usage |169| `billingCycle` | string | OneTime, Monthly, or Yearly |170| `listPrice` | decimal | Vendor list price per unit |171| `netPrice` | decimal | Partner net price per unit |172| `quantity` | integer | Number of units |173| `prorated` | boolean | Whether charge is prorated |174| `proratedDays` | integer | Days in prorated period |175| `subTotal` | decimal | Subtotal before deductions |176| `deductions` | array | List of applied deductions |177| `fees` | decimal | Additional fees |178| `taxes` | decimal | Tax amount |179| `total` | decimal | Final payable amount |180181> **No invoice fields are documented here** because no tool on this server182> returns an invoice. See *What this plugin cannot retrieve*, above.183184## Common Workflows185186### Monthly Billing Reconciliation1871881. Determine the window you want from the calendar — there is no period list189 to read it from1902. Call `sherweb_billing_payable_charges` with `periodFrom` and `periodTo` set191 to that window and `billingCycleType` set to the cycle you are reconciling,192 paginating through all results1933. Group charges by `customerId` to see per-customer totals1944. Compare Sherweb charges against what you bill each customer in your PSA1955. Flag discrepancies where MSP cost exceeds or is too close to client billing196197### Margin Analysis Across Customers1981991. Fetch all payable charges for the date range2002. For each customer, sum the `total` field across all charges2013. Compare against your retail billing to that customer2024. Calculate margin per customer and overall portfolio margin2035. Identify customers with negative or sub-target margins204205### Deduction Tracking2062071. Fetch payable charges and filter for entries with non-empty `deductions` arrays2082. Group deductions by type (PromotionalMoney, PromotionalPercentage, PerformancePercentage)2093. Sum total savings from each deduction category2104. Track performance percentage deductions over time to monitor volume rebate trends211212### Charge Verification (there is no invoice verification workflow)213214Invoice retrieval is not available through this plugin — see *What this plugin215cannot retrieve*. Verify at the charge level instead:2162171. Call `sherweb_billing_payable_charges` for the window under review2182. For each charge worth scrutiny, call `sherweb_billing_charge_details` with219 its `chargeId` to see the line items, deductions, fees, and tax2203. Cross-reference those line items against what you expected to be provisioned2214. Verify totals and flag discrepancies. To confirm the invoice document222 itself, open it in the Sherweb partner portal — no tool here returns it.223224### Cost Forecasting2252261. Pull 3-6 months of history by calling `sherweb_billing_payable_charges`227 once per month, with `periodFrom`/`periodTo` bounding each month explicitly2282. Calculate average monthly cost per customer and per product2293. Identify trends (growing seat counts, new products, usage spikes)2304. Project next month's Sherweb costs for budget planning231232## Response Examples233234**Payable Charge:**235236```json237{238 "id": "chg-2026-02-001",239 "customerId": "cust-abc-123",240 "customerName": "Acme Corporation",241 "subscriptionId": "sub-def-456",242 "productName": "Microsoft 365 Business Premium",243 "chargeType": "Recurring",244 "billingCycle": "Monthly",245 "listPrice": 22.00,246 "netPrice": 17.10,247 "quantity": 25,248 "prorated": false,249 "proratedDays": null,250 "subTotal": 427.50,251 "deductions": [252 {253 "type": "PerformancePercentage",254 "description": "Volume rebate - Gold tier",255 "percentage": 3.0,256 "amount": 12.83257 }258 ],259 "fees": 0.00,260 "taxes": 33.17,261 "total": 447.84262}263```264265## Error Handling266267### Common Errors268269| Error | Cause | Resolution |270|-------|-------|------------|271| No charges found | The `periodFrom`/`periodTo` window contains no charges, or the wrong `billingCycleType` was requested | Widen the date range and re-check the cycle type. There is no period list to validate against — the window is whatever you passed |272| Charge details unavailable | Charge ID does not exist | Verify the charge ID from the `sherweb_billing_payable_charges` result |273| Authentication error | Expired or invalid token | Re-authenticate using OAuth 2.0 client credentials flow |274275## Best Practices2762771. **Track deductions** - Monitor promotional and performance deductions to ensure you receive expected discounts2782. **Watch for proration** - Prorated charges indicate mid-cycle changes; verify they match subscription modifications2793. **Separate charge types** - Analyze Setup, Recurring, and Usage charges independently for accurate cost modeling2804. **Calculate true margin** - Include fees and taxes in margin calculations, not just netPrice vs listPrice2815. **Monitor usage charges** - Usage-based charges (Azure, etc.) can spike unexpectedly; set up alerts2826. **Plan for billing cycles** - Annual charges create cash flow events; plan for yearly renewal months2837. **Use performance rebates strategically** - Consolidate purchasing through Sherweb to maximize performance percentage deductions284285## Related Skills286287- [Sherweb API Patterns](../api-patterns/SKILL.md) - Authentication, endpoints, and rate limits288- [Sherweb Customers](../customers/SKILL.md) - Customer management and hierarchy289- [Sherweb Subscriptions](../subscriptions/SKILL.md) - Subscription lifecycle and quantity management