What Vectis does with Pax8
- Syncs companies and subscriptions from your Pax8 tenant into
customersandlicense_subscriptions. Pax8 companies are fuzzy-matched to PSA rows so license data hangs off the canonical customer hub. - Weekly usage snapshots land in
license_usageso seat-count drift is detected on week-scale cadence — the same Money Found signal Sherweb produces. - Lifecycle webhooks (optional): subscription add/change/cancel events from Pax8 land in
pax8_webhook_eventsso drift is caught in near-real-time, not only on the weekly sync. - Coexists with Sherweb, Ingram Micro, TD SYNNEX. Subscriptions are vendor-tagged, so leakage + margin + drift detection work identically whether your MSP uses one distributor or several.
- Read-only. Vectis never writes back to Pax8 — subscription changes always go through the Pax8 portal or your billing flow, not Vectis.
What you’ll need
- Client ID and Client Secret from the Pax8 portal’s Account → API Settings page
- Pax8 partner admin access (or a role that can mint API credentials)
- Optional: audience override (only needed for Marketplace Vendor scopes —
api://provisioningorapi://usage)
1. Mint API credentials
- Sign in to app.pax8.com as a partner admin.
- Open Account → API Settings.
- Click Create API Client. Label it “Vectis” so it’s easy to rotate or revoke independently of any other tool you integrate.
- Copy the Client ID and Client Secret Pax8 displays. The secret is shown only once — if you lose it, revoke and regenerate.
2. Paste credentials into Vectis
- Go to Admin → Integrations and click Configure on Pax8.
- Paste the client ID and client secret. Leave audience blank for partner credentials — only set it when you need a Marketplace Vendor scope (
api://provisioningorapi://usage). - Click Test. You’ll see “Connected to Pax8 — N companies visible” within a few seconds.
- Click Save, then trigger an initial sync.
3. (Optional) Configure lifecycle webhooks
- After saving credentials, a Webhook bearer token field appears on the Pax8 integration card. Click Generate token and copy the value.
- In Pax8, open
app.pax8.com/integrations/events?tab=webhooks. - Click Add Webhook. Destination URL:
https://<your-subdomain>.mspvectis.com/api/webhooks/pax8/lifecycle. - Set the Authorization header to
Bearer <token>(paste the value you copied from Vectis). - Subscribe to the events you want delivered — subscription created / updated / cancelled are the ones Vectis acts on.
- Save. Incoming events land in Data & Integrations → Pax8 webhooks.
4. What appears where
- Customer hub → Licensing section: per-SKU rollups, cost vs. revenue margins, uncontracted-seat counts. Pax8 subscriptions render identically to Sherweb / Ingram / SYNNEX in the same table — the vendor column disambiguates.
- Licensing-leakage dashboard preset: every customer with uncontracted Pax8 seats or below-margin SKUs surfaces here.
- Weekly Money Found digest: seat-growth findings + licensing drift events surface in the Monday email.
- QBR report: Licensing section vendor label reads “Pax8”, “Sherweb”, or “Mixed” depending on which distributor(s) the customer uses.
Common errors
401 Unauthorized — Client ID / secret pair is wrong, or the client was revoked. Rotate from the Pax8 portal and re-enter.
403 Forbidden — The API client lacks the scope to read companies or subscriptions. Recreate the client with partner-admin scope.
Audience mismatch on token request — The audience must match the credential scope. Partner credentials use https://api.pax8.com (the default when the field is blank). Marketplace Vendor credentials use api://provisioning or api://usage.
429 Too Many Requests — Pax8 rate-limits at 100 req/min per tenant. The Python ETL paces below that; if you see 429s, another tool is likely sharing the credential — mint a dedicated one for Vectis.
Webhook 401 — The bearer token on the Pax8 webhook doesn’t match what’s stored in Vectis. Regenerate on the Pax8 integration card and update Pax8’s Authorization header.