Mapping Pax8 Identifiers to Microsoft Graph API

This guide explains how to map Pax8 company, product, and subscription identifiers to their Microsoft Tenant and Graph API counterparts. With the vendorSkuId field in the Pax8 API, there are two main methods depending on your goal.


Method 1: Seat Reconciliation with vendorSkuId (Recommended)

Use this method to see used vs. unused seats for a Microsoft product you've purchased through Pax8 — for example, to check whether unassigned licenses remain before ordering more.

Steps:

  1. Fetch the Pax8 subscription using GET /v1/subscriptions/{subscriptionId}. Note the vendorSkuId in the response. This GUID is Microsoft's SKU-level identifier (Partner Center provisioningId), and it matches the skuId in Microsoft Graph. Note: vendorSkuId is returned only on this subscription detail endpoint, not on List Subscriptions.
  2. In Microsoft Graph, call GET https://graph.microsoft.com/v1.0/subscribedSkus on the customer tenant. Find the entry where skuId matches the Pax8 vendorSkuId.
  3. Read prepaidUnits.enabled (total purchased seats) and consumedUnits (seats assigned to users). Available seats = prepaidUnits.enabledconsumedUnits.

Important: Graph aggregates seats per SKU, not per commerce subscription. If a customer has multiple Pax8 subscriptions for the same product (e.g., different terms), they share one vendorSkuId and Graph pools their seats under a single subscribedSkus entry.


Method 2: Mapping Products for Catalog Integration (Advanced)

Use this method when you need to map Pax8 products to Microsoft skuId values before a subscription is purchased (for catalog integrations or quoting).

Steps:

  1. Get the Pax8 product name from GET /v1/products/{productId}.
  2. Download Microsoft’s Product names and service plan identifiers CSV. Find the product name in the ProductDisplayName column and note the GUID (skuId). See list of references below.
  3. In Graph, use GET /subscribedSkus to see which SKUs are active for a tenant. Match the skuId to confirm presence and review license counts.

Key Points:

  • The vendorSkuId from Pax8 matches the skuId in Microsoft Graph's /subscribedSkus endpoint and Partner Center's provisioningId. Use it for SKU-level seat reconciliation.
  • The /subscriptions endpoint in Graph is for webhooks, not licensing — use /subscribedSkus for license data.
  • For product mapping, use Microsoft's official CSV to match product names to skuId.
  • Always use a Graph access token scoped to the customer tenant (Pax8's externalId on the company endpoint can be used to store this value).
  • For multiple subscriptions of the same SKU, use the subscriptionIds array in /subscribedSkus to cross-reference companySubscription.id values.

Troubleshooting:

  • If you cannot find a matching skuId in Graph, verify you are using the correct tenant and permissions.
  • For product mapping, confirm product names match exactly or use fuzzy matching if needed.

References:


Summary Table:

Pax8 FieldMicrosoft Graph FieldEndpointNotes
vendorSkuIdskuId/subscribedSkusUse for seat reconciliation (used vs. unused); SKU-level, pooled across subscriptions
productId (Pax8)skuId (Graph)/subscribedSkusUse for mapping products/SKUs
externalId (Pax8)Tenant ID/organization/{tenantId} etc.Use for tenant-level queries