Nine Minds Logo

Navigation

14.12. Generate Automatic, Manual, and Prepayment Invoices for MSP Clients

Run AlgaPSA invoice generation for recurring MSP billing, manual one-off charges, and prepayment deposits with full visibility into approval blockers, repair alerts, and combinability rules.

14.12. Generate Automatic, Manual, and Prepayment Invoices for MSP Clients
Run AlgaPSA invoice generation for recurring MSP billing, manual one-off charges, and prepayment deposits with full visibility into approval blockers, repair alerts, and combinability rules.
14. Billing and ContractsUpdated: 5/12/2026

Automatic invoices turn contract service periods into draft invoices. Use this workflow at the end of your billing cycle to review due recurring work, preview invoice totals, and create draft invoices for accounting review. Alongside automatic billing, Alga PSA also supports manual one-off invoices and prepayment deposits — all generated from the same screen at Billing > Invoicing > Generate.

A typical billing run looks like this. GreenLeaf Dental Group has a managed backup contract that bills a flat $300.00 base fee plus storage overage. This month they used 250 GB over the allowance at $0.20/GB, producing a $50.00 overage charge and a pre-tax subtotal of $350.00. When you open Generate, GreenLeaf appears as a single ready-to-invoice row carrying both child obligations grouped onto one draft invoice.

Figure 1: The Ready to Invoice table groups compatible contract obligations by client and invoice window.


Invoice Types

Select the invoice type from the dropdown at the top of the Generate sub-tab:

TypeUse When
Automatic InvoicesGenerating invoices from recurring billing runs based on service periods
Manual InvoiceCreating a one-off invoice for adjustments, corrections, or non-standard charges
PrepaymentCreating a prepayment deposit (a Credit Memo sub-option appears here but is not yet functional)

Note: The Prepayment option requires the billing-enabled feature flag for your tenant. When the flag is off, only Automatic Invoices and Manual Invoice appear in the dropdown.


Generating Automatic Invoices

Automatic invoicing looks for due billing work and surfaces it across three sections, depending on the state of each invoice window.

Sections on the Screen

When you select Automatic Invoices, the screen renders up to three top-level sections:

  1. Needs Approval — appears at the top when an invoice window contains billable time that has not been approved yet. The entire window is blocked until approvals are complete. Each row links out to Review Approvals for that client and window.
  2. Recurring service period repair required — a warning panel that appears when a client's recurring billing schedule is missing pieces needed to bill the window. The window is blocked from the ready-to-invoice list until you repair the schedule using the action in the panel.
  3. Ready to Invoice — the main grouped table of due obligations that can be generated. Each parent row groups child obligations by client and invoice window, and carries a compatibility badge.

Compatibility Badges on Ready-to-Invoice Rows

Parent rows in the Ready to Invoice table are tagged with one of the following badges:

BadgeMeaning
Can combine into 1 invoiceChild obligations are compatible and will be grouped onto one invoice
Must invoice separatelyChild obligations cannot be combined due to incompatibility
Contains blocked itemsOne or more child obligations have an issue preventing generation
Not ready to invoiceChild obligations are not yet due or are missing configuration

Step-by-Step

  1. Select Automatic Invoices from the type dropdown.
  2. Resolve any Needs Approval rows (via Review Approvals) and any Recurring service period repair required entries first — both blocks prevent the affected windows from appearing in the ready-to-invoice list.
  3. In the Ready to Invoice table, expand a parent row to see the individual child obligations and charges included.
  4. Select the rows you want to invoice. Select All picks parent rows when a group is combinable, and falls back to individual child rows when a group is not combinable.
  5. Click Preview Selected to confirm the draft will look as expected before committing. The preview shows client details, line items, quantities, rates, subtotal, tax, and total exactly as the draft will be created.
  6. Click Generate Invoices for Selected Periods.

Figure 2: Preview invoices before generation so billing staff can confirm descriptions, quantities, rates, and totals.

When Items Cannot Be Combined

Recurring items that cannot combine will show one or more incompatibility reasons under the parent row:

  • Invoice window differs — items have different invoice window start/end pairs
  • Client differs — items belong to different clients
  • PO scope differs — items reference different purchase order scopes
  • Currency differs — items would invoice in different currencies
  • Tax treatment differs — items use different tax sources (internal vs external)
  • Export shape differs — items map to different accounting export shapes (e.g., one expects QBO, the other Xero)

Items that share the same client and invoice window are grouped together; the engine then evaluates these six fields per group and only items that match across all of them combine onto a single invoice.


Creating a Manual Invoice

  1. Select Manual Invoice from the type dropdown.
  2. Select the Client.
  3. (Optional) Enter a value in Invoice Number (Optional). This field is currently ignored — the system always auto-generates the invoice number — so you can safely leave it blank.
  4. (Optional) Tick This is a prepayment invoice (creates credit). When ticked, an additional Credit Expiration Date field appears.
  5. Add line items using +. For each line:
    • Select a Service. The taxable status is read from the selected service and shown as a "(Taxable)" or "(Non-Taxable)" label — there is no separate taxable toggle on the line.
    • Enter a Description if you want to override the default.
    • Set the Quantity and Rate.
  6. To add a discount, add a line and switch the row to a Discount line. Discounts support:
    • Discount Type: Percentage or Fixed Amount.
    • Discount Description (e.g., "Early Payment Discount").
    • Apply Discount To: target the entire invoice or a specific line item.
  7. Review the calculated Total at the bottom of the form. Tax is not shown here — it is calculated server-side after you submit, and appears on the resulting draft invoice.
  8. Click Generate Invoice.

The Invoice Date (today) and Due Date (derived from the client's payment terms) are set automatically when the draft is created. You can adjust either value later from the draft invoice's details card. Manual invoices are useful for one-off charges, adjustments, or corrections that are not tied to a recurring contract line.


Creating a Prepayment Invoice

  1. Select Prepayment from the type dropdown.
  2. Leave the sub-type set to Prepayment Invoice. (A Credit Memo option also appears in the dropdown but is not yet supported — submitting it returns a "Credit memos are not yet supported" message.)
  3. Select the Client.
  4. Enter the Amount.
  5. Enter a Description. The form requires this field, but it is not currently saved on the resulting invoice or credit — it is only used to let you submit the form.
  6. Click Generate.

The credit becomes available to apply to other invoices when you finalize the prepayment invoice — finalization is what posts the value to the client's credit balance. Creating the draft alone does not fund the credit.


What Happens After Generation

When invoices are generated:

  • Alga PSA creates draft invoice records — they are not sent to the client until you finalize them.
  • Contract line details are linked to the invoice for auditability.
  • The related recurring service periods move from ready/generated to billed.
  • Usage records and time entries are marked invoiced when they are included on the invoice.

This prevents the same service period, time entry, or usage record from being billed twice. See 14.13. Managing Draft and Finalized Invoices for next steps.


How Charges Are Calculated

When an automatic invoice is generated, the billing engine calculates charges from multiple sources:

Charge TypeSource
Fixed chargesFlat-rate contract lines using either the contract's base rate (with proration if enabled) or service-level configuration. A pricing schedule whose window overlaps the service period overrides both.
Time chargesApproved time entries (rounded by minimum-billable-time and round-up settings, then converted to hours × hourly rate). Overtime hours past overtime_threshold are billed at overtime_rate (or 1.5× the base rate if no rate is set) when Enable Overtime is on.
Usage chargesUsage tracking records (quantity × unit rate). If tiered pricing is enabled on the service configuration, each tier's minmax range is billed at that tier's rate before falling through to the next tier.
Bucket chargesHours used beyond the bucket allowance (overageHours × overage_rate). The engine reads overage_minutes from usage records, or falls back to max(0, minutesUsed − configuredMinutes) when records don't carry a pre-computed overage.
Product / license chargesQuantity × rate from the contract line's product or license configuration, billed once per service period.

Configuration fields like enable_after_hours_rate and after_hours_multiplier exist on the contract line schema, but the active billing engine does not apply an after-hours multiplier during charge calculation today — only overtime is applied.

Tax is calculated per line item based on the client's tax region and exemption settings.


Billing-run checklist

Before finalizing invoices, confirm:

  • The client and billing address are correct.
  • The invoice period matches the service period you intended to bill.
  • Fixed fees appear once per period.
  • Usage and overage quantities match source usage records.
  • Taxes and exemptions are correct.
  • Required PO numbers or PO budget limits are satisfied.
  • The invoice is still a draft until your accounting team is ready to send or finalize it.

See also