Sherweb Customer Management
Overview
Customers in Sherweb represent the end-client organizations managed by a service provider (MSP) through the Sherweb distribution platform. Sherweb uses a three-tier hierarchy: Distributor (Sherweb) > Service Provider (your MSP) > Customer (your clients). Every subscription, billing charge, and provisioning action is scoped to a specific customer. Understanding this hierarchy is essential for correct API usage and data interpretation.
Anti-triggers
- The same client in the other CSP marketplace — use
pax8-companies; Sherweb and Pax8 customer IDs are unrelated, so
matching is by name or domain, never by ID.
- The client record of record — a Sherweb customer exists to hang
licence purchases off. Contracts, contacts, and service history live in
the PSA; use
autotask-crm, connectwise-psa-companies, or
halopsa-clients.
- The Microsoft tenant behind the licences — a Sherweb customer is a
billing entity, not a tenant. Use
cipp-tenants or m365-users.
- The client's documentation record — use
hudu-companies.
MCP Tools
Available Tools
| Tool |
Description |
Key Parameters |
sherweb_customers_list |
List all customers under the service provider |
page, pageSize, search |
sherweb_customers_get |
Get detailed information about a specific customer |
customerId (required) |
sherweb_customers_accounts_receivable |
Get accounts receivable data for a customer |
customerId (required) |
List Customers
Call sherweb_customers_list with optional parameters:
- Search by name: Set
search to a customer name or partial name
- Paginate: Set
page (1-based) and pageSize (default 25)
Example: List all customers:
sherweb_customers_list with pageSize=100
Example: Search for a customer:
sherweb_customers_list with search=Acme
Get Customer Details
Call sherweb_customers_get with the customerId parameter.
Example:
sherweb_customers_get with customerId=cust-abc-123
Get Accounts Receivable
Call sherweb_customers_accounts_receivable with the customerId parameter to view outstanding balances and payment history.
Example:
sherweb_customers_accounts_receivable with customerId=cust-abc-123
Key Concepts
Distribution Hierarchy
Sherweb operates a three-tier distribution model:
Sherweb (Distributor)
|
+-- Your MSP (Service Provider)
| |
| +-- Customer A (End Client)
| +-- Customer B (End Client)
| +-- Customer C (End Client)
|
+-- Another MSP (Service Provider)
|
+-- Customer D (End Client)
+-- Customer E (End Client)
Key points:
- Distributor - Sherweb aggregates vendor products and provides them to service providers
- Service Provider - Your MSP account, authenticated via the API. All API calls are scoped to your service provider account
- Customer - Your end clients. Each customer has their own subscriptions, billing, and configuration
- API credentials are tied to the Service Provider level; you can only see your own customers
Customer Lifecycle
| Stage |
Description |
Typical Actions |
| Creation |
New client added to Sherweb |
Set up customer record with name, address, contact info |
| Active |
Customer with active subscriptions |
Manage subscriptions, monitor billing |
| Suspended |
Customer account temporarily paused |
Investigate payment or compliance issues |
| Inactive |
No active subscriptions remaining |
Review for reactivation or cleanup |
Accounts Receivable
Accounts receivable data shows the financial relationship between the service provider and the customer within Sherweb's platform:
| Concept |
Description |
| Outstanding Balance |
Total amount owed by the customer |
| Credit Limit |
Maximum credit extended to the customer |
| Payment Terms |
Net 30, Net 60, or custom payment terms |
| Last Payment |
Date and amount of the most recent payment |
| Aging Buckets |
Breakdown of outstanding amounts by age (current, 30d, 60d, 90d+) |
Field Reference
Core Customer Fields
| Field |
Type |
Description |
id |
string |
Customer unique identifier |
name |
string |
Customer display name |
externalId |
string |
External reference ID (for PSA integration) |
status |
string |
Customer status (Active, Suspended, Inactive) |
createdDate |
datetime |
When the customer was created |
modifiedDate |
datetime |
Last modification timestamp |
Address Fields
| Field |
Type |
Description |
address.street |
string |
Street address |
address.city |
string |
City |
address.stateOrProvince |
string |
State or province |
address.postalCode |
string |
Postal/ZIP code |
address.country |
string |
Country code (e.g., "US", "CA") |
Contact Fields
| Field |
Type |
Description |
primaryContact.firstName |
string |
Primary contact first name |
primaryContact.lastName |
string |
Primary contact last name |
primaryContact.email |
string |
Primary contact email |
primaryContact.phone |
string |
Primary contact phone |
Accounts Receivable Fields
| Field |
Type |
Description |
outstandingBalance |
decimal |
Total amount currently owed |
creditLimit |
decimal |
Maximum credit allowed |
currentAmount |
decimal |
Charges in the current period |
thirtyDayAmount |
decimal |
Charges 1-30 days overdue |
sixtyDayAmount |
decimal |
Charges 31-60 days overdue |
ninetyPlusDayAmount |
decimal |
Charges 61+ days overdue |
lastPaymentDate |
date |
Date of most recent payment |
lastPaymentAmount |
decimal |
Amount of most recent payment |
Common Workflows
List All Customers
- Call
sherweb_customers_list with pageSize=100
- If
totalPages > 1, paginate through remaining pages
- Collect all customer records with IDs, names, and statuses
Find a Customer by Name
- Call
sherweb_customers_list with search set to the customer name
- Review matching results
- Note the
id for use in subsequent API calls
Customer Onboarding Verification
- Search for the newly created customer with
sherweb_customers_list
- Call
sherweb_customers_get with the customerId to verify all details are correct
- Verify subscriptions are provisioned with
sherweb_subscriptions_list filtered by customerId
- Check billing data appears correctly in the next billing period
Accounts Receivable Review
- Call
sherweb_customers_list to get all customers
- For each customer, call
sherweb_customers_accounts_receivable
- Flag customers with amounts in 60-day or 90-day aging buckets
- Generate a collections priority report sorted by overdue amount
Customer Portfolio Report
- Fetch all customers with
sherweb_customers_list (paginate through all pages)
- For each customer, optionally fetch subscription data to get active subscription count
- Build a report: customer name, status, subscription count, outstanding balance
- Identify inactive customers for cleanup and high-balance customers for review
Cross-Reference with PSA
- List all Sherweb customers
- Match each customer's
externalId to your PSA system's company records
- Flag customers without an
externalId as needing PSA linkage
- Verify names and addresses match between systems
Response Examples
Customer:
{
"id": "cust-abc-123",
"name": "Acme Corporation",
"externalId": "PSA-12345",
"status": "Active",
"address": {
"street": "123 Main St",
"city": "Montreal",
"stateOrProvince": "QC",
"postalCode": "H2X 1Y4",
"country": "CA"
},
"primaryContact": {
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@acme.com",
"phone": "514-555-1234"
},
"createdDate": "2024-03-15T10:30:00.000Z",
"modifiedDate": "2026-01-20T14:15:00.000Z"
}
Accounts Receivable:
{
"customerId": "cust-abc-123",
"customerName": "Acme Corporation",
"outstandingBalance": 1247.50,
"creditLimit": 10000.00,
"currentAmount": 847.50,
"thirtyDayAmount": 400.00,
"sixtyDayAmount": 0.00,
"ninetyPlusDayAmount": 0.00,
"lastPaymentDate": "2026-02-15",
"lastPaymentAmount": 2100.00
}
Error Handling
Common Errors
| Error |
Cause |
Resolution |
| Customer not found |
Invalid customerId |
Verify the customer ID with sherweb_customers_list |
| No results |
Customer name mismatch |
Try a shorter or different search term |
| Authentication error |
Expired or invalid token |
Re-authenticate using OAuth 2.0 client credentials flow |
| Permission denied |
Customer belongs to another service provider |
Verify you are querying your own customers |
Best Practices
- Set external IDs - Link Sherweb customers to your PSA records for easy cross-referencing
- Monitor accounts receivable - Review aging buckets monthly to catch overdue payments early
- Audit customer list - Quarterly review inactive customers for cleanup or reactivation
- Standardize naming - Use consistent naming conventions across Sherweb and your PSA
- Track customer status - Monitor for suspended customers that may need intervention
- Cache customer data - Customer details change infrequently; cache for short periods to reduce API calls
- Verify contact info - Keep primary contact information current for billing and support communication
- Use search for lookups - The
search parameter is more efficient than fetching all customers and filtering locally
Related Skills
1---2name: sherweb-customers3description: Sherweb customer records: the distributor > service provider > customer hierarchy and its API scoping consequences, customer lifecycle stages, core address and contact fields, accounts-receivable data with aging buckets, and cross-referencing customers with PSA, subscription, and billing data.4---56# Sherweb Customer Management78## Overview910Customers in Sherweb represent the end-client organizations managed by a service provider (MSP) through the Sherweb distribution platform. Sherweb uses a three-tier hierarchy: **Distributor** (Sherweb) > **Service Provider** (your MSP) > **Customer** (your clients). Every subscription, billing charge, and provisioning action is scoped to a specific customer. Understanding this hierarchy is essential for correct API usage and data interpretation.1112## Anti-triggers1314- **The same client in the other CSP marketplace** — use15 `pax8-companies`; Sherweb and Pax8 customer IDs are unrelated, so16 matching is by name or domain, never by ID.17- **The client record of record** — a Sherweb customer exists to hang18 licence purchases off. Contracts, contacts, and service history live in19 the PSA; use `autotask-crm`, `connectwise-psa-companies`, or20 `halopsa-clients`.21- **The Microsoft tenant behind the licences** — a Sherweb customer is a22 billing entity, not a tenant. Use `cipp-tenants` or `m365-users`.23- **The client's documentation record** — use `hudu-companies`.2425## MCP Tools2627### Available Tools2829| Tool | Description | Key Parameters |30|------|-------------|----------------|31| `sherweb_customers_list` | List all customers under the service provider | `page`, `pageSize`, `search` |32| `sherweb_customers_get` | Get detailed information about a specific customer | `customerId` (required) |33| `sherweb_customers_accounts_receivable` | Get accounts receivable data for a customer | `customerId` (required) |3435### List Customers3637Call `sherweb_customers_list` with optional parameters:3839- **Search by name:** Set `search` to a customer name or partial name40- **Paginate:** Set `page` (1-based) and `pageSize` (default 25)4142**Example: List all customers:**43- `sherweb_customers_list` with `pageSize=100`4445**Example: Search for a customer:**46- `sherweb_customers_list` with `search=Acme`4748### Get Customer Details4950Call `sherweb_customers_get` with the `customerId` parameter.5152**Example:**53- `sherweb_customers_get` with `customerId=cust-abc-123`5455### Get Accounts Receivable5657Call `sherweb_customers_accounts_receivable` with the `customerId` parameter to view outstanding balances and payment history.5859**Example:**60- `sherweb_customers_accounts_receivable` with `customerId=cust-abc-123`6162## Key Concepts6364### Distribution Hierarchy6566Sherweb operates a three-tier distribution model:6768```69Sherweb (Distributor)70 |71 +-- Your MSP (Service Provider)72 | |73 | +-- Customer A (End Client)74 | +-- Customer B (End Client)75 | +-- Customer C (End Client)76 |77 +-- Another MSP (Service Provider)78 |79 +-- Customer D (End Client)80 +-- Customer E (End Client)81```8283**Key points:**8485- **Distributor** - Sherweb aggregates vendor products and provides them to service providers86- **Service Provider** - Your MSP account, authenticated via the API. All API calls are scoped to your service provider account87- **Customer** - Your end clients. Each customer has their own subscriptions, billing, and configuration88- API credentials are tied to the **Service Provider** level; you can only see your own customers8990### Customer Lifecycle9192| Stage | Description | Typical Actions |93|-------|-------------|-----------------|94| Creation | New client added to Sherweb | Set up customer record with name, address, contact info |95| Active | Customer with active subscriptions | Manage subscriptions, monitor billing |96| Suspended | Customer account temporarily paused | Investigate payment or compliance issues |97| Inactive | No active subscriptions remaining | Review for reactivation or cleanup |9899### Accounts Receivable100101Accounts receivable data shows the financial relationship between the service provider and the customer within Sherweb's platform:102103| Concept | Description |104|---------|-------------|105| Outstanding Balance | Total amount owed by the customer |106| Credit Limit | Maximum credit extended to the customer |107| Payment Terms | Net 30, Net 60, or custom payment terms |108| Last Payment | Date and amount of the most recent payment |109| Aging Buckets | Breakdown of outstanding amounts by age (current, 30d, 60d, 90d+) |110111## Field Reference112113### Core Customer Fields114115| Field | Type | Description |116|-------|------|-------------|117| `id` | string | Customer unique identifier |118| `name` | string | Customer display name |119| `externalId` | string | External reference ID (for PSA integration) |120| `status` | string | Customer status (Active, Suspended, Inactive) |121| `createdDate` | datetime | When the customer was created |122| `modifiedDate` | datetime | Last modification timestamp |123124### Address Fields125126| Field | Type | Description |127|-------|------|-------------|128| `address.street` | string | Street address |129| `address.city` | string | City |130| `address.stateOrProvince` | string | State or province |131| `address.postalCode` | string | Postal/ZIP code |132| `address.country` | string | Country code (e.g., "US", "CA") |133134### Contact Fields135136| Field | Type | Description |137|-------|------|-------------|138| `primaryContact.firstName` | string | Primary contact first name |139| `primaryContact.lastName` | string | Primary contact last name |140| `primaryContact.email` | string | Primary contact email |141| `primaryContact.phone` | string | Primary contact phone |142143### Accounts Receivable Fields144145| Field | Type | Description |146|-------|------|-------------|147| `outstandingBalance` | decimal | Total amount currently owed |148| `creditLimit` | decimal | Maximum credit allowed |149| `currentAmount` | decimal | Charges in the current period |150| `thirtyDayAmount` | decimal | Charges 1-30 days overdue |151| `sixtyDayAmount` | decimal | Charges 31-60 days overdue |152| `ninetyPlusDayAmount` | decimal | Charges 61+ days overdue |153| `lastPaymentDate` | date | Date of most recent payment |154| `lastPaymentAmount` | decimal | Amount of most recent payment |155156## Common Workflows157158### List All Customers1591601. Call `sherweb_customers_list` with `pageSize=100`1612. If `totalPages > 1`, paginate through remaining pages1623. Collect all customer records with IDs, names, and statuses163164### Find a Customer by Name1651661. Call `sherweb_customers_list` with `search` set to the customer name1672. Review matching results1683. Note the `id` for use in subsequent API calls169170### Customer Onboarding Verification1711721. Search for the newly created customer with `sherweb_customers_list`1732. Call `sherweb_customers_get` with the `customerId` to verify all details are correct1743. Verify subscriptions are provisioned with `sherweb_subscriptions_list` filtered by `customerId`1754. Check billing data appears correctly in the next billing period176177### Accounts Receivable Review1781791. Call `sherweb_customers_list` to get all customers1802. For each customer, call `sherweb_customers_accounts_receivable`1813. Flag customers with amounts in 60-day or 90-day aging buckets1824. Generate a collections priority report sorted by overdue amount183184### Customer Portfolio Report1851861. Fetch all customers with `sherweb_customers_list` (paginate through all pages)1872. For each customer, optionally fetch subscription data to get active subscription count1883. Build a report: customer name, status, subscription count, outstanding balance1894. Identify inactive customers for cleanup and high-balance customers for review190191### Cross-Reference with PSA1921931. List all Sherweb customers1942. Match each customer's `externalId` to your PSA system's company records1953. Flag customers without an `externalId` as needing PSA linkage1964. Verify names and addresses match between systems197198## Response Examples199200**Customer:**201202```json203{204 "id": "cust-abc-123",205 "name": "Acme Corporation",206 "externalId": "PSA-12345",207 "status": "Active",208 "address": {209 "street": "123 Main St",210 "city": "Montreal",211 "stateOrProvince": "QC",212 "postalCode": "H2X 1Y4",213 "country": "CA"214 },215 "primaryContact": {216 "firstName": "Jane",217 "lastName": "Smith",218 "email": "jane.smith@acme.com",219 "phone": "514-555-1234"220 },221 "createdDate": "2024-03-15T10:30:00.000Z",222 "modifiedDate": "2026-01-20T14:15:00.000Z"223}224```225226**Accounts Receivable:**227228```json229{230 "customerId": "cust-abc-123",231 "customerName": "Acme Corporation",232 "outstandingBalance": 1247.50,233 "creditLimit": 10000.00,234 "currentAmount": 847.50,235 "thirtyDayAmount": 400.00,236 "sixtyDayAmount": 0.00,237 "ninetyPlusDayAmount": 0.00,238 "lastPaymentDate": "2026-02-15",239 "lastPaymentAmount": 2100.00240}241```242243## Error Handling244245### Common Errors246247| Error | Cause | Resolution |248|-------|-------|------------|249| Customer not found | Invalid `customerId` | Verify the customer ID with `sherweb_customers_list` |250| No results | Customer name mismatch | Try a shorter or different search term |251| Authentication error | Expired or invalid token | Re-authenticate using OAuth 2.0 client credentials flow |252| Permission denied | Customer belongs to another service provider | Verify you are querying your own customers |253254## Best Practices2552561. **Set external IDs** - Link Sherweb customers to your PSA records for easy cross-referencing2572. **Monitor accounts receivable** - Review aging buckets monthly to catch overdue payments early2583. **Audit customer list** - Quarterly review inactive customers for cleanup or reactivation2594. **Standardize naming** - Use consistent naming conventions across Sherweb and your PSA2605. **Track customer status** - Monitor for suspended customers that may need intervention2616. **Cache customer data** - Customer details change infrequently; cache for short periods to reduce API calls2627. **Verify contact info** - Keep primary contact information current for billing and support communication2638. **Use search for lookups** - The `search` parameter is more efficient than fetching all customers and filtering locally264265## Related Skills266267- [Sherweb API Patterns](../api-patterns/SKILL.md) - Authentication, endpoints, and rate limits268- [Sherweb Billing](../billing/SKILL.md) - Payable charges per customer (no invoice retrieval)269- [Sherweb Subscriptions](../subscriptions/SKILL.md) - Subscription management per customer