Billing & Subscriptions
Manage your pxlpeak billing, subscriptions, and payment methods.
Pricing Plans
pxlpeak offers flexible plans for teams of all sizes:
| Plan | Price | Events/Month | Sites | Team Members | Retention | | ---------------- | ------- | ------------ | --------- | ------------ | --------- | | Free | $0 | 10,000 | 1 | 1 | 30 days | | Starter | $29/mo | 100,000 | 3 | 3 | 6 months | | Professional | $99/mo | 1,000,000 | 10 | 10 | 2 years | | Business | $299/mo | 10,000,000 | 50 | 25 | 2 years | | Enterprise | Custom | Unlimited | Unlimited | Unlimited | Custom |
Annual billing: Save 20% with annual plans paid upfront.
Plan Features
Free Plan
- Basic analytics dashboard
- Standard reports
- 7-day attribution window
- Community support
- pxlpeak branding
Starter Plan
Everything in Free, plus:
- Custom dashboards
- Goal tracking
- Email support
- 30-day attribution window
- Remove pxlpeak branding
Professional Plan
Everything in Starter, plus:
- Advanced attribution models
- Funnel analysis
- A/B test analysis
- Custom segments
- API access (50 req/sec)
- Priority support
- 90-day attribution window
Business Plan
Everything in Professional, plus:
- Data-driven attribution
- Predictive analytics
- Custom integrations
- SSO (SAML/OIDC)
- Dedicated support
- API access (200 req/sec)
- SLA guarantee
Enterprise Plan
Everything in Business, plus:
- Unlimited everything
- Custom data retention
- On-premise deployment option
- Custom SLA
- Dedicated success manager
- Training and onboarding
- Custom feature development
Managing Your Subscription
Viewing Current Plan
// Get subscription details
const subscription = await pxlpeak.billing.getSubscription({
workspaceId: 'ws_xxx'
});
// Response:
{
plan: 'professional',
status: 'active',
currentPeriod: {
start: '2026-01-01',
end: '2026-01-31'
},
usage: {
events: 450000,
eventsLimit: 1000000,
percentUsed: 45
},
features: {
sites: { used: 5, limit: 10 },
members: { used: 7, limit: 10 },
apiRateLimit: 50
},
billingCycle: 'monthly',
nextBillingDate: '2026-02-01',
amount: 9900 // cents
}Upgrading Plans
// Preview upgrade
const preview = await pxlpeak.billing.previewUpgrade({
workspaceId: "ws_xxx",
newPlan: "business",
});
// {
// currentPlan: 'professional',
// newPlan: 'business',
// proratedAmount: 15000, // cents
// effectiveDate: '2026-01-12',
// newMonthlyAmount: 29900
// }
// Confirm upgrade
await pxlpeak.billing.upgrade({
workspaceId: "ws_xxx",
newPlan: "business",
billingCycle: "annual", // Optional: switch to annual
});Downgrading Plans
// Preview downgrade
const preview = await pxlpeak.billing.previewDowngrade({
workspaceId: "ws_xxx",
newPlan: "starter",
});
// {
// currentPlan: 'professional',
// newPlan: 'starter',
// effectiveDate: '2026-02-01', // End of current period
// featuresToLose: ['advanced_attribution', 'funnel_analysis', 'api_access'],
// dataRetentionChange: { from: '2 years', to: '6 months' },
// sitesOverLimit: 2, // Need to archive 2 sites
// membersOverLimit: 4 // Need to remove 4 members
// }
// Confirm downgrade (takes effect at period end)
await pxlpeak.billing.downgrade({
workspaceId: "ws_xxx",
newPlan: "starter",
acknowledgeLimits: true,
});Canceling Subscription
// Cancel subscription
await pxlpeak.billing.cancel({
workspaceId: "ws_xxx",
reason: "switching_to_competitor", // Optional feedback
feedback: "Missing feature X",
});
// Subscription remains active until period end
// Then downgrades to Free planReactivating Subscription
// Reactivate canceled subscription
await pxlpeak.billing.reactivate({
workspaceId: "ws_xxx",
});
// Works during grace period after cancellationUsage-Based Billing
Event Counting
Events are counted based on your plan:
Event Types Counted:
├── page_view (1 event)
├── custom_event (1 event)
├── conversion (1 event)
├── identify (1 event per unique user/day)
└── batch_events (N events)
Not Counted:
├── API read requests
├── Dashboard views
└── Report generationUsage Monitoring
// Get current usage
const usage = await pxlpeak.billing.getUsage({
workspaceId: "ws_xxx",
});
// {
// period: { start: '2026-01-01', end: '2026-01-31' },
// events: {
// total: 750000,
// limit: 1000000,
// percentUsed: 75,
// projectedTotal: 1125000,
// projectedOverage: 125000
// },
// daily: [
// { date: '2026-01-01', events: 28000 },
// { date: '2026-01-02', events: 32000 },
// // ...
// ],
// bySite: [
// { siteId: 'site_xxx', name: 'Main Website', events: 500000 },
// { siteId: 'site_yyy', name: 'Mobile App', events: 250000 }
// ]
// }Overage Handling
When you exceed your plan's event limit:
| Plan | Overage Policy | | ------------ | -------------------------- | | Free | Events dropped after limit | | Starter | $0.0003/event overage | | Professional | $0.0002/event overage | | Business | $0.0001/event overage | | Enterprise | Custom pricing |
// Set overage preferences
await pxlpeak.billing.setOveragePreferences({
workspaceId: "ws_xxx",
allowOverage: true,
overageLimit: 500000, // Max overage events
alertThresholds: [80, 90, 100], // Percent of limit
alertEmails: ["billing@company.com"],
});Usage Alerts
// Configure usage alerts
await pxlpeak.alerts.create({
workspaceId: "ws_xxx",
name: "Usage Alert",
type: "usage",
conditions: {
metric: "events",
threshold: 80, // percent
operator: "gte",
},
notifications: {
email: ["team@company.com"],
slack: "https://hooks.slack.com/...",
},
});Payment Methods
Adding Payment Method
// Add credit card (via Stripe Elements in dashboard)
// API for server-side token creation
const paymentMethod = await pxlpeak.billing.addPaymentMethod({
workspaceId: "ws_xxx",
type: "card",
token: "tok_xxx", // From Stripe.js
});
// Add bank account (ACH)
const bankAccount = await pxlpeak.billing.addPaymentMethod({
workspaceId: "ws_xxx",
type: "us_bank_account",
token: "btok_xxx",
});Managing Payment Methods
// List payment methods
const methods = await pxlpeak.billing.listPaymentMethods({
workspaceId: "ws_xxx",
});
// [
// {
// id: 'pm_xxx',
// type: 'card',
// brand: 'visa',
// last4: '4242',
// expMonth: 12,
// expYear: 2027,
// isDefault: true
// }
// ]
// Set default payment method
await pxlpeak.billing.setDefaultPaymentMethod({
workspaceId: "ws_xxx",
paymentMethodId: "pm_yyy",
});
// Remove payment method
await pxlpeak.billing.removePaymentMethod({
workspaceId: "ws_xxx",
paymentMethodId: "pm_xxx",
});Billing Information
// Update billing details
await pxlpeak.billing.updateBillingInfo({
workspaceId: "ws_xxx",
billingEmail: "billing@company.com",
companyName: "Acme Corporation",
address: {
line1: "123 Main St",
line2: "Suite 400",
city: "San Francisco",
state: "CA",
postalCode: "94102",
country: "US",
},
taxId: {
type: "us_ein",
value: "12-3456789",
},
});Invoices & History
Viewing Invoices
// List invoices
const invoices = await pxlpeak.billing.listInvoices({
workspaceId: "ws_xxx",
limit: 12,
});
// [
// {
// id: 'inv_xxx',
// number: 'INV-2026-0001',
// date: '2026-01-01',
// dueDate: '2026-01-15',
// status: 'paid',
// amount: 9900,
// currency: 'usd',
// items: [
// {
// description: 'Professional Plan (Monthly)',
// amount: 9900
// }
// ],
// pdfUrl: 'https://invoices.pxlpeak.com/inv_xxx.pdf'
// }
// ]
// Get specific invoice
const invoice = await pxlpeak.billing.getInvoice({
workspaceId: "ws_xxx",
invoiceId: "inv_xxx",
});
// Download invoice PDF
const pdf = await pxlpeak.billing.downloadInvoice({
workspaceId: "ws_xxx",
invoiceId: "inv_xxx",
});Invoice Settings
// Configure invoice settings
await pxlpeak.billing.updateInvoiceSettings({
workspaceId: "ws_xxx",
settings: {
autoCharge: true,
invoicePrefix: "ACME",
footer: "Thank you for your business",
cc: ["accounting@company.com"],
language: "en",
memo: "PO#12345",
},
});Credits & Discounts
Applying Promo Codes
// Apply promo code
await pxlpeak.billing.applyPromoCode({
workspaceId: "ws_xxx",
code: "SAVE20",
});
// {
// code: 'SAVE20',
// discount: {
// type: 'percent',
// value: 20,
// duration: 3, // months
// appliesTo: 'subscription'
// }
// }Account Credits
// View credit balance
const credits = await pxlpeak.billing.getCredits({
workspaceId: "ws_xxx",
});
// {
// balance: 5000, // cents
// transactions: [
// {
// id: 'cred_xxx',
// amount: 5000,
// reason: 'Referral bonus',
// expiresAt: '2026-06-30'
// }
// ]
// }
// Credits are automatically applied to invoicesEnterprise Billing
Custom Contracts
Enterprise customers receive:
- Custom pricing based on volume
- Annual contracts with quarterly billing option
- Net 30/60/90 payment terms
- Custom SLA with uptime guarantees
- Dedicated invoice handling
Volume Commitments
// Enterprise volume commitment
{
type: 'enterprise',
commitment: {
eventsPerMonth: 100000000,
sites: 'unlimited',
members: 'unlimited',
term: 12, // months
pricePerMonth: 2500000 // cents
},
overage: {
rate: 0.00005, // per event
cap: 500000 // max overage charge
},
sla: {
uptime: 99.99,
supportResponse: '1 hour',
dedicatedSupport: true
}
}Purchase Orders
// Submit PO for invoice
await pxlpeak.billing.submitPurchaseOrder({
workspaceId: "ws_xxx",
poNumber: "PO-2026-001",
amount: 2999900, // cents
validUntil: "2026-12-31",
contact: {
name: "John Smith",
email: "john@company.com",
phone: "+1-555-123-4567",
},
});Billing API Reference
Get Subscription
GET /v1/workspaces/{workspace_id}/billing/subscriptionUpdate Subscription
PATCH /v1/workspaces/{workspace_id}/billing/subscriptionGet Usage
GET /v1/workspaces/{workspace_id}/billing/usageList Payment Methods
GET /v1/workspaces/{workspace_id}/billing/payment-methodsAdd Payment Method
POST /v1/workspaces/{workspace_id}/billing/payment-methodsList Invoices
GET /v1/workspaces/{workspace_id}/billing/invoicesDownload Invoice
GET /v1/workspaces/{workspace_id}/billing/invoices/{invoice_id}/pdfFAQ
When am I charged?
- Monthly plans: Charged on the same date each month
- Annual plans: Charged annually on subscription start date
- Overages: Added to next invoice
What happens if payment fails?
- First retry: 3 days after failure
- Second retry: 5 days after failure
- Third retry: 7 days after failure
- Account suspended: 10 days after failure
- Data retained for 30 days, then deleted
Can I get a refund?
- Monthly plans: No refunds for partial months
- Annual plans: Pro-rated refund within first 30 days
- Overages: Non-refundable
How do I change billing email?
Go to Settings > Billing > Billing Information or use the API.
Do you offer non-profit discounts?
Yes, 50% off for registered non-profits. Contact sales with proof of status.
Is there a free trial?
All paid plans include a 14-day free trial. No credit card required.
Contact Billing Support
- Email: johnv@pxlpeak.com
- Phone: +1-888-PXL-PEAK (Enterprise only)
- Dashboard: Settings > Billing > Contact Support
Next: See Quick Start to begin tracking your first data.