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.
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
statustounpaid,paid,void,carried, ornothing due - Filter by company: Set
companyIdto a company UUID - Filter by date range: Set
invoiceDateRangeStartandinvoiceDateRangeEnd - Filter by specific date: Set
invoiceDate - Paginate: Set
page(0-based) andsize(up to 200)
Example: List unpaid invoices:
pax8-list-invoiceswithstatus=unpaid,size=200
Example: List invoices for a company:
pax8-list-invoiceswithcompanyId=a1b2c3d4-...,size=200
Example: List invoices in a date range:
pax8-list-invoiceswithinvoiceDateRangeStart=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
companyIdon 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-invoiceswithinvoiceDateRangeStartandinvoiceDateRangeEndfor the current month - For each invoice, call
pax8-get-invoice-by-uuidto get full details - Group charges by company using the
companyIdfield - 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-invoiceswithsortby 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-uuidto get thesuggestedRetailPrice - Calculate margin:
(suggestedRetailPrice - partnerBuyPrice) / suggestedRetailPrice * 100 - Identify products or clients where margins are thin
Invoice Trend Analysis
- Call
pax8-list-invoiceswith a wide date range (e.g., last 6 months) - Group invoices by month using the
invoiceDatefield - Calculate monthly totals to identify spending trends
- Flag months with significant increases for investigation
Unpaid Invoice Alert
- Call
pax8-list-invoiceswithstatus=unpaid - Check the
dueDateon 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-subscriptionswithcompanyIdandproductId - Call
pax8-get-usage-summarywith thesubscriptionId - Review usage by resource group to identify cost drivers
- For detailed breakdown, call
pax8-get-detailed-usage-summarywith theusageSummaryId
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
companyIdto attribute costs per company - Track margins - Compare partner buy price to what you charge clients
- Monitor trends - Track month-over-month billing changes
- Catch discrepancies early - Regular reconciliation catches billing errors
- Watch for prorated charges - Mid-cycle subscription changes create prorated line items
- Usage-based products - Azure and similar prod