Sherweb Billing — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Sherweb Billing (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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 that roll up into billing periods. 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 invoices, and ensure accurate client billing.
| Tool | Description | Key Parameters |
|---|---|---|
sherweb_billing_get_payable_charges | Get payable charges for a billing period | billingPeriodId, page, pageSize |
sherweb_billing_get_billing_periods | List available billing periods | page, pageSize |
sherweb_billing_get_charge_details | Get detailed breakdown of a specific charge | chargeId |
sherweb_billing_get_invoices | List invoices for the service provider | page, pageSize, status |
sherweb_billing_get_invoice_details | Get a specific invoice with line items | invoiceId |
Call sherweb_billing_get_billing_periods to list available billing periods:
page (1-based) and pageSize (default 25)Example: List recent billing periods:
sherweb_billing_get_billing_periods with pageSize=10Call sherweb_billing_get_payable_charges with a billingPeriodId:
billingPeriodId from the billing periods listpage and pageSize for large result setsExample: Get charges for a billing period:
sherweb_billing_get_payable_charges with billingPeriodId=bp-2026-02, pageSize=100Call sherweb_billing_get_invoices to list invoices:
status to filter (e.g., Paid, Unpaid, Overdue)page and pageSizeSherweb 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 |
| 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 |
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) |
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 |
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) |
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) * 100Tips for margin analysis:
listPrice vs netPrice to see your distributor discount| Field | Type | Description |
|---|---|---|
id | string | Billing period identifier |
startDate | date | Period start date |
endDate | date | Period end date |
status | string | Period status (Open, Closed, Processing) |
totalAmount | decimal | Total charges for the period |
| 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 |
| Field | Type | Description |
|---|---|---|
id | string | Invoice unique identifier |
invoiceNumber | string | Human-readable invoice number |
invoiceDate | date | Date invoice was issued |
dueDate | date | Payment due date |
status | string | Invoice status (Paid, Unpaid, Overdue) |
totalAmount | decimal | Invoice total |
currency | string | Currency code (e.g., USD, CAD) |
lineItems | array | Itemized charges on the invoice |
sherweb_billing_get_billing_periods to find the current or most recent closed periodsherweb_billing_get_payable_charges with the billingPeriodId, paginating through all resultscustomerId to see per-customer totalstotal field across all chargesdeductions arrayssherweb_billing_get_invoices to list recent invoicessherweb_billing_get_invoice_details with the invoiceIdPayable 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 | Cause | Resolution |
|---|---|---|
| Billing period not found | Invalid billingPeriodId | List available periods with sherweb_billing_get_billing_periods |
| No charges found | Period has no charges or wrong period selected | Verify the billing period dates cover the expected range |
| Charge details unavailable | Charge ID does not exist | Verify the charge ID from the payable charges list |
| Invoice not found | Invalid invoiceId | List invoices with sherweb_billing_get_invoices |
| Authentication error | Expired or invalid token | Re-authenticate using OAuth 2.0 client credentials flow |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.