WASViking Docs
⌘K
Partner Console

Billing

Consolidated monthly invoices, annual prepaid, monthly commit, soft-limit overage. How partner billing actually works.

Partner billing is consolidated to the partner, not to each end customer. A single monthly invoice covers every active customer access under the partner.

The monthly invoice

Each month, WASViking® runs the Celery task partners.monthly_invoice_previews (1st @ 06:00 UTC) and renders a preview for each partner.

Contents:

  • Per-access lines: plan, modules, metered packs, prorations.
  • Soft-limit overage if any access exceeded its provisioned capacity.
  • Trials excluded (POC accesses are never billed).
  • Annual prepaid accesses excluded (charged separately).

Available in Billing → Invoices as PDF (WeasyPrint) and CSV.

Access to the invoice is gated by the partner_billing capability and every view is audited.

Soft-limit overage

WASViking does NOT hard-block at the limit. Instead:

  • Capacity is provisioned per access (max targets, scan slots, AI recommendations per month, etc.).
  • Usage above provisioned capacity is billable overage, computed per unit and added to the next monthly invoice.
  • The partner sees the overage projection in real time on the customer detail page.

This keeps the platform operational at burst time and bills for the real consumption afterward.

Annual prepaid

For accesses on annual_billing_mode = prepaid:

  • A single annual charge runs at access creation or renewal.
  • The access is excluded from the monthly consolidated invoice.
  • The daily Celery task partners.annual_renewals (06:15 UTC) re-charges and rolls the commitment 12 months forward.

Annual prepaid is the cleanest model for partners that prefer to lock revenue and avoid a monthly accounting hit.

Monthly commit (12-month)

For accesses on annual_billing_mode = monthly_commit:

  • Stays in the monthly consolidated invoice.
  • Locks the access for 12 months from the commitment start.
  • Subject to the annual_monthly_commit_min minimum (guardrail- controlled).
  • Eligibility checked at quote time (annual_commit_eligible).

Server-side revalidation refuses an ineligible monthly_commit selection at submit and falls back to prepaid with a warning.

Trial conversion timing

The commitment clock starts:

  • At access creation for new paid accesses.
  • At conversion for trial accesses.

convert_trial_to_paid flips Subscription to active, resets current_period, clears trial_start/trial_end, and refreshes renewal_date. From that moment the customer is billed to the partner on the normal monthly cycle (no proration of the trial window).

Invoice export

Format Notes
PDF WeasyPrint, invoice_pdf.html, branded. Best for accounting handoff.
CSV One line per access plus aggregate rows. Best for the partner's downstream billing system.

Both formats are produced from the same invoice data; signing both is roadmap.

What WASViking does NOT bill

  • Trial accesses (during the trial).
  • Customer accesses on a disabled subscription.
  • Demo organizations (they have no PartnerOrganizationAccess row; the billing pipeline iterates partner.customers only).

What the partner controls

  • Plan and add-on selection per access.
  • Operating model per access.
  • Annual prepaid vs monthly commit (per access).
  • Trial days requested per quote (WASViking approves or lowers within request).

What WASViking controls

  • The customer list price.
  • The tier discount structure.
  • The guardrail floor.
  • The internal cost model used to compute margins (never shown to the partner).

What partners cannot do

  • Consolidated billing TO the end customer through WASViking. The partner bills the customer directly; WASViking bills the partner. This is a deliberate scope decision.
  • White-label invoices. The invoice is WASViking-branded by design.