Pax8 Invoices & Billing
Overview
Invoices in Pax8 represent the MSP's cost for cloud subscriptions procured through the marketplace. Pax8 generates invoices on a regular billing cycle, detailing the charges for each subscription across all client companies. MSPs use invoice data to reconcile their costs against what they charge their clients, ensuring profitability and catching billing discrepancies.
Anti-triggers
- An invoice the MSP sends to a client — a Pax8 invoice is money the
MSP owes, in the opposite direction to everything in 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
sherweb-billing.
- Comparing the two sides to find unbilled subscriptions — that is the
cross-vendor reconciliation itself, not a Pax8 lookup; use
shared-skills-billing-reconciliation.
- What is provisioned rather than what was charged — use
pax8-subscriptions. A cancelled subscription can still appear on the
current invoice, and a new one may not appear yet.
MCP Tools
Available Tools
| Tool |
Description |
Key Parameters |
pax8-list-invoices |
List and filter invoices |
page, size, sort, status (unpaid/paid/void/carried/nothing due), invoiceDate, invoiceDateRangeStart, invoiceDateRangeEnd, dueDate, total, balance, carriedBalance, companyId |
pax8-get-invoice-by-uuid |
Get a single invoice |
uuid (required) |
pax8-get-usage-summary |
Get usage summary for a subscription |
subscriptionId (required), page, size, sort, resourceGroup, companyId |
pax8-get-detailed-usage-summary |
Get detailed usage data |
usageSummaryId (required), usageDate, page, size |
List Invoices
Call pax8-list-invoices with optional parameters:
- Filter by status: Set
status to unpaid, paid, void, carried, or nothing due
- Filter by company: Set
companyId to a company UUID
- Filter by date range: Set
invoiceDateRangeStart and invoiceDateRangeEnd
- Filter by specific date: Set
invoiceDate
- Paginate: Set
page (0-based) and size (up to 200)
Example: List unpaid invoices:
pax8-list-invoices with status=unpaid, size=200
Example: List invoices for a company:
pax8-list-invoices with companyId=a1b2c3d4-..., size=200
Example: List invoices in a date range:
pax8-list-invoices with invoiceDateRangeStart=2026-01-01, invoiceDateRangeEnd=2026-01-31
Get a Single Invoice
Call pax8-get-invoice-by-uuid with the uuid parameter.
Get Usage Summaries
Call pax8-get-usage-summary with subscriptionId (required). Optionally filter by resourceGroup or companyId.
Get Detailed Usage
Call pax8-get-detailed-usage-summary with usageSummaryId (required). Optionally filter by usageDate.
Key Concepts
Billing Model
Pax8 operates as a distributor between vendors and MSPs:
Vendor (Microsoft, etc.) --> Pax8 (Distributor) --> MSP (Partner) --> End Client
- Pax8 invoices the MSP for all subscriptions across all clients
- MSP invoices each client at their own markup/margin
- Reconciliation ensures the MSP is charging clients correctly for what Pax8 bills
Invoice Structure
| Level |
Description |
| Invoice |
A billing statement for a billing period |
| Invoice Item |
A line item for a specific subscription charge |
| Usage Summary |
Consumption details for usage-based products (e.g., Azure) |
Invoice Statuses
| Status |
Description |
unpaid |
Invoice issued, payment not yet received |
paid |
Invoice has been paid |
void |
Invoice has been voided/cancelled |
carried |
Balance carried forward |
nothing due |
No payment required |
Billing Reconciliation
The core MSP workflow for invoices:
- Retrieve Pax8 invoices using
pax8-list-invoices
- Get invoice details using
pax8-get-invoice-by-uuid
- Break down by client using the
companyId on invoice items
- Compare against PSA billing to ensure clients are being charged correctly
- Identify discrepancies where Pax8 charges do not match client billing
- Adjust client invoices or subscription quantities as needed
Field Reference
Invoice Fields
| Field |
Type |
Description |
id |
UUID |
Invoice unique identifier |
invoiceDate |
date |
Date the invoice was issued |
dueDate |
date |
Payment due date |
status |
string |
Invoice status (unpaid, paid, etc.) |
total |
decimal |
Total invoice amount |
balance |
decimal |
Remaining unpaid balance |
carriedBalance |
decimal |
Balance carried from previous period |
currency |
string |
Currency code (e.g., "USD") |
companyId |
UUID |
Company associated with the invoice |
partnerName |
string |
MSP partner name |
Usage Summary Fields
| Field |
Type |
Description |
subscriptionId |
UUID |
Associated subscription |
resourceGroup |
string |
Resource group name |
quantity |
decimal |
Usage quantity |
unitOfMeasure |
string |
Unit of measurement |
currentCharges |
decimal |
Charges for this period |
date |
date |
Usage reporting date |
Common Workflows
Monthly Billing Reconciliation
- Call
pax8-list-invoices with invoiceDateRangeStart and invoiceDateRangeEnd for the current month
- For each invoice, call
pax8-get-invoice-by-uuid to get full details
- Group charges by company using the
companyId field
- For each company, look up the company name using
pax8-get-company-by-uuid
- Compare Pax8 charges against what you bill each client in your PSA
Cost-per-Client Report
- Call
pax8-list-invoices with sort by date to get the most recent invoice
- Get the invoice details with
pax8-get-invoice-by-uuid
- Break down the invoice by company and product
- Calculate per-client totals for reporting
Margin Analysis
- Get invoice details to see what Pax8 charges you (your cost)
- For each product on the invoice, call
pax8-get-product-pricing-by-uuid to get the suggestedRetailPrice
- Calculate margin:
(suggestedRetailPrice - partnerBuyPrice) / suggestedRetailPrice * 100
- Identify products or clients where margins are thin
Invoice Trend Analysis
- Call
pax8-list-invoices with a wide date range (e.g., last 6 months)
- Group invoices by month using the
invoiceDate field
- Calculate monthly totals to identify spending trends
- Flag months with significant increases for investigation
Unpaid Invoice Alert
- Call
pax8-list-invoices with status=unpaid
- Check the
dueDate on each invoice to identify overdue payments
- Calculate total unpaid balance across all invoices
- Prioritize invoices by balance and overdue status
Usage Analysis for Consumption Products
For usage-based products like Azure:
- Find the subscription using
pax8-list-subscriptions with companyId and productId
- Call
pax8-get-usage-summary with the subscriptionId
- Review usage by resource group to identify cost drivers
- For detailed breakdown, call
pax8-get-detailed-usage-summary with the usageSummaryId
Response Examples
Invoice:
{
"id": "i1n2v3o4-i5c6-7890-abcd-ef1234567890",
"invoiceDate": "2026-02-01",
"dueDate": "2026-03-03",
"status": "Unpaid",
"total": 4527.50,
"balance": 4527.50,
"currency": "USD",
"partnerName": "Acme MSP"
}
Error Handling
Common Errors
| Error |
Cause |
Resolution |
| Invoice not found |
Invalid UUID |
Verify the invoice UUID with pax8-list-invoices |
| Invalid status filter |
Wrong status value |
Use unpaid, paid, void, carried, or nothing due |
| Invalid date format |
Wrong date string |
Use YYYY-MM-DD format for date parameters |
| Usage summary not found |
Invalid subscription or no usage data |
Verify the subscription UUID; not all products have usage data |
Best Practices
- Reconcile monthly - Compare Pax8 invoices to client billing every billing cycle
- Break down by client - Use
companyId to attribute costs per company
- Track margins - Compare partner buy price to what you charge clients
- Monitor trends - Track month-over-month billing changes
- Watch for prorated charges - Mid-cycle subscription changes create prorated line items
- Usage-based products - Azure and similar products have variable billing; monitor usage summaries regularly
- Use date range filters - Filter by
invoiceDateRangeStart/invoiceDateRangeEnd to scope queries
- Automate alerts - Set up notifications for unpaid invoices using
status=unpaid filter
- Cross-reference with PSA - Match Pax8 invoice data to PSA agreement line items
Related Skills
1---2name: pax8-invoices3description: Pax8 invoices and billing: invoice retrieval, invoice line items, usage-based billing summaries, the MSP billing cycle, and reconciling Pax8 costs against client charges.4---56# Pax8 Invoices & Billing78## Overview910Invoices in Pax8 represent the MSP's cost for cloud subscriptions procured through the marketplace. Pax8 generates invoices on a regular billing cycle, detailing the charges for each subscription across all client companies. MSPs use invoice data to reconcile their costs against what they charge their clients, ensuring profitability and catching billing discrepancies.1112## Anti-triggers1314- **An invoice the MSP sends to a client** — a Pax8 invoice is money the15 MSP *owes*, in the opposite direction to everything in the accounting16 and 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 `sherweb-billing`.21- **Comparing the two sides to find unbilled subscriptions** — that is the22 cross-vendor reconciliation itself, not a Pax8 lookup; use23 `shared-skills-billing-reconciliation`.24- **What is provisioned rather than what was charged** — use25 `pax8-subscriptions`. A cancelled subscription can still appear on the26 current invoice, and a new one may not appear yet.2728## MCP Tools2930### Available Tools3132| Tool | Description | Key Parameters |33|------|-------------|----------------|34| `pax8-list-invoices` | List and filter invoices | `page`, `size`, `sort`, `status` (unpaid/paid/void/carried/nothing due), `invoiceDate`, `invoiceDateRangeStart`, `invoiceDateRangeEnd`, `dueDate`, `total`, `balance`, `carriedBalance`, `companyId` |35| `pax8-get-invoice-by-uuid` | Get a single invoice | `uuid` (required) |36| `pax8-get-usage-summary` | Get usage summary for a subscription | `subscriptionId` (required), `page`, `size`, `sort`, `resourceGroup`, `companyId` |37| `pax8-get-detailed-usage-summary` | Get detailed usage data | `usageSummaryId` (required), `usageDate`, `page`, `size` |3839### List Invoices4041Call `pax8-list-invoices` with optional parameters:4243- **Filter by status:** Set `status` to `unpaid`, `paid`, `void`, `carried`, or `nothing due`44- **Filter by company:** Set `companyId` to a company UUID45- **Filter by date range:** Set `invoiceDateRangeStart` and `invoiceDateRangeEnd`46- **Filter by specific date:** Set `invoiceDate`47- **Paginate:** Set `page` (0-based) and `size` (up to 200)4849**Example: List unpaid invoices:**50- `pax8-list-invoices` with `status=unpaid`, `size=200`5152**Example: List invoices for a company:**53- `pax8-list-invoices` with `companyId=a1b2c3d4-...`, `size=200`5455**Example: List invoices in a date range:**56- `pax8-list-invoices` with `invoiceDateRangeStart=2026-01-01`, `invoiceDateRangeEnd=2026-01-31`5758### Get a Single Invoice5960Call `pax8-get-invoice-by-uuid` with the `uuid` parameter.6162### Get Usage Summaries6364Call `pax8-get-usage-summary` with `subscriptionId` (required). Optionally filter by `resourceGroup` or `companyId`.6566### Get Detailed Usage6768Call `pax8-get-detailed-usage-summary` with `usageSummaryId` (required). Optionally filter by `usageDate`.6970## Key Concepts7172### Billing Model7374Pax8 operates as a distributor between vendors and MSPs:7576```77Vendor (Microsoft, etc.) --> Pax8 (Distributor) --> MSP (Partner) --> End Client78```7980- **Pax8 invoices the MSP** for all subscriptions across all clients81- **MSP invoices each client** at their own markup/margin82- **Reconciliation** ensures the MSP is charging clients correctly for what Pax8 bills8384### Invoice Structure8586| Level | Description |87|-------|-------------|88| Invoice | A billing statement for a billing period |89| Invoice Item | A line item for a specific subscription charge |90| Usage Summary | Consumption details for usage-based products (e.g., Azure) |9192### Invoice Statuses9394| Status | Description |95|--------|-------------|96| `unpaid` | Invoice issued, payment not yet received |97| `paid` | Invoice has been paid |98| `void` | Invoice has been voided/cancelled |99| `carried` | Balance carried forward |100| `nothing due` | No payment required |101102### Billing Reconciliation103104The core MSP workflow for invoices:1051061. **Retrieve Pax8 invoices** using `pax8-list-invoices`1072. **Get invoice details** using `pax8-get-invoice-by-uuid`1083. **Break down by client** using the `companyId` on invoice items1094. **Compare against PSA billing** to ensure clients are being charged correctly1105. **Identify discrepancies** where Pax8 charges do not match client billing1116. **Adjust** client invoices or subscription quantities as needed112113## Field Reference114115### Invoice Fields116117| Field | Type | Description |118|-------|------|-------------|119| `id` | UUID | Invoice unique identifier |120| `invoiceDate` | date | Date the invoice was issued |121| `dueDate` | date | Payment due date |122| `status` | string | Invoice status (unpaid, paid, etc.) |123| `total` | decimal | Total invoice amount |124| `balance` | decimal | Remaining unpaid balance |125| `carriedBalance` | decimal | Balance carried from previous period |126| `currency` | string | Currency code (e.g., "USD") |127| `companyId` | UUID | Company associated with the invoice |128| `partnerName` | string | MSP partner name |129130### Usage Summary Fields131132| Field | Type | Description |133|-------|------|-------------|134| `subscriptionId` | UUID | Associated subscription |135| `resourceGroup` | string | Resource group name |136| `quantity` | decimal | Usage quantity |137| `unitOfMeasure` | string | Unit of measurement |138| `currentCharges` | decimal | Charges for this period |139| `date` | date | Usage reporting date |140141## Common Workflows142143### Monthly Billing Reconciliation1441451. Call `pax8-list-invoices` with `invoiceDateRangeStart` and `invoiceDateRangeEnd` for the current month1462. For each invoice, call `pax8-get-invoice-by-uuid` to get full details1473. Group charges by company using the `companyId` field1484. For each company, look up the company name using `pax8-get-company-by-uuid`1495. Compare Pax8 charges against what you bill each client in your PSA150151### Cost-per-Client Report1521531. Call `pax8-list-invoices` with `sort` by date to get the most recent invoice1542. Get the invoice details with `pax8-get-invoice-by-uuid`1553. Break down the invoice by company and product1564. Calculate per-client totals for reporting157158### Margin Analysis1591601. Get invoice details to see what Pax8 charges you (your cost)1612. For each product on the invoice, call `pax8-get-product-pricing-by-uuid` to get the `suggestedRetailPrice`1623. Calculate margin: `(suggestedRetailPrice - partnerBuyPrice) / suggestedRetailPrice * 100`1634. Identify products or clients where margins are thin164165### Invoice Trend Analysis1661671. Call `pax8-list-invoices` with a wide date range (e.g., last 6 months)1682. Group invoices by month using the `invoiceDate` field1693. Calculate monthly totals to identify spending trends1704. Flag months with significant increases for investigation171172### Unpaid Invoice Alert1731741. Call `pax8-list-invoices` with `status=unpaid`1752. Check the `dueDate` on each invoice to identify overdue payments1763. Calculate total unpaid balance across all invoices1774. Prioritize invoices by balance and overdue status178179### Usage Analysis for Consumption Products180181For usage-based products like Azure:1821831. Find the subscription using `pax8-list-subscriptions` with `companyId` and `productId`1842. Call `pax8-get-usage-summary` with the `subscriptionId`1853. Review usage by resource group to identify cost drivers1864. For detailed breakdown, call `pax8-get-detailed-usage-summary` with the `usageSummaryId`187188## Response Examples189190**Invoice:**191192```json193{194 "id": "i1n2v3o4-i5c6-7890-abcd-ef1234567890",195 "invoiceDate": "2026-02-01",196 "dueDate": "2026-03-03",197 "status": "Unpaid",198 "total": 4527.50,199 "balance": 4527.50,200 "currency": "USD",201 "partnerName": "Acme MSP"202}203```204205## Error Handling206207### Common Errors208209| Error | Cause | Resolution |210|-------|-------|------------|211| Invoice not found | Invalid UUID | Verify the invoice UUID with `pax8-list-invoices` |212| Invalid status filter | Wrong status value | Use `unpaid`, `paid`, `void`, `carried`, or `nothing due` |213| Invalid date format | Wrong date string | Use `YYYY-MM-DD` format for date parameters |214| Usage summary not found | Invalid subscription or no usage data | Verify the subscription UUID; not all products have usage data |215216## Best Practices2172181. **Reconcile monthly** - Compare Pax8 invoices to client billing every billing cycle2192. **Break down by client** - Use `companyId` to attribute costs per company2203. **Track margins** - Compare partner buy price to what you charge clients2214. **Monitor trends** - Track month-over-month billing changes2225. **Watch for prorated charges** - Mid-cycle subscription changes create prorated line items2236. **Usage-based products** - Azure and similar products have variable billing; monitor usage summaries regularly2247. **Use date range filters** - Filter by `invoiceDateRangeStart`/`invoiceDateRangeEnd` to scope queries2258. **Automate alerts** - Set up notifications for unpaid invoices using `status=unpaid` filter2269. **Cross-reference with PSA** - Match Pax8 invoice data to PSA agreement line items227228## Related Skills229230- [Pax8 API Patterns](../api-patterns/SKILL.md) - MCP tools reference and connection info231- [Pax8 Subscriptions](../subscriptions/SKILL.md) - Subscription details for invoice items232- [Pax8 Companies](../companies/SKILL.md) - Company attribution for billing233- [Pax8 Products](../products/SKILL.md) - Product pricing for margin analysis234- [Pax8 Orders](../orders/SKILL.md) - Order-to-invoice tracking