Skip to content
All documentation

Documentation · Billing

Billing and invoices

How LiteHQ tenant billing works end to end: monthly invoice generation, Stripe payment, Xero reconciliation, and what operators and tenant admins see and do.

9 min read

There are two billing relationships running inside LiteHQ at the same time, and keeping them separate is the single most useful thing to understand. The first is the operator's own platform subscription: what you, the host, pay LiteHQ to run your workspace. The second is tenant invoicing: what your tenant companies and their members pay you for memberships, desks, and other charges. This guide is mostly about the second one, because that is the money flow LiteHQ generates, collects, and reconciles on your behalf.

Once a tenant has an active membership, you generally do not touch billing day to day. A daily job builds the monthly invoices ahead of each billing date, optionally emails them, takes payment through your Stripe Connect account, and (if Xero is connected) mirrors the invoice and its payment into your accounting system. The sections below walk through that pipeline so you know exactly what is automated, what you can override, and where to look when something does not line up.

Two kinds of billing: platform vs tenant

Your platform subscription is the flat monthly fee you pay LiteHQ. It runs as a Stripe subscription against your operator account, and access to the product is gated on its status (active or trialing). When you subscribe or change plan, Stripe sends subscription events to LiteHQ and your plan state updates automatically; there is a short grace window so a freshly purchased plan unlocks immediately even before Stripe finishes confirming it.

Tenant invoicing is everything your tenants pay you. Each tenant company has members with memberships (a plan or a desk/space rate at a price), plus any one-off charges. LiteHQ turns those into invoices, collects payment through your Stripe Connect account, and reconciles to Xero. The rest of this guide is about this flow.

Funds for tenant payments settle into YOUR bank account through your Stripe Connect account. LiteHQ never holds tenant money. See the Stripe Connect setup guide to wire this up before you start billing.

How an invoice gets created

A billing job runs once a day (at midnight UTC) and looks at every active and pending membership across your tenant companies. For each membership it checks the next billing date and a lead time. The default lead time is 7 days, so an invoice for a period that starts on the 1st is generated around the 25th of the prior month. You can adjust the lead time and the auto-send behaviour in your billing settings; per-company billing rules override the org-level defaults.

The job groups charges into one consolidated invoice per tenant company per location. Multiple desks on the same plan and price at the same location are billed as a single line with a quantity, rather than one line per member. Memberships that end mid-period are automatically prorated for the days actually active. Any queued one-off charges (pending invoice items) are added to the same invoice.

Each invoice gets a sequential invoice number, displayed as INV- followed by a zero-padded number (for example INV-000123). It carries a period start and end, an issue date, and a due date that defaults to the start of the billed period.

  • Cadence: the billing job runs daily; invoices are generated ahead of the billing date by the lead time (default 7 days).
  • Scope: one consolidated invoice per tenant company, per location, per run.
  • Desks at the same plan/price/location consolidate into one quantity line.
  • Memberships ending mid-month are prorated automatically.
  • Pending one-off items are folded into the same invoice.

The amount stored on the invoice is the gross, tax-inclusive total. When your tax is set as exclusive (the common case, e.g. 15% GST), the line subtotal is grossed up by the tax rate so the invoice total matches what the customer actually pays and what Xero resolves to.

Invoice statuses you will see

Invoices move through a small set of statuses. Knowing what each one means saves a lot of guessing when you are scanning the billing list.

  • Draft: created but not yet sent. Drafts are the only invoices that can be deleted.
  • Unpaid / Sent: awaiting payment. Sending an invoice email flips a draft to sent.
  • Paid: fully settled. Recording a payment or a successful card charge moves it here.
  • Failed: a card payment attempt did not go through. This is not terminal; a later successful payment flips it back to paid.
  • Void / Cancelled: terminal. Used when an invoice should not be collected (for example, reissued or merged).

Taking payment

Tenants and tenant admins pay an invoice from their portal. When they pay, LiteHQ first tries to charge a stored card on file. If there is no usable stored card, it falls back to a hosted Stripe Checkout session for that exact invoice amount. If you have payment surcharges enabled, the card-processing fee is added as a separate line at checkout.

Operators can also record a payment manually against an invoice, for example when a tenant pays by bank transfer. Recording a payment sets the amount paid and, once the invoice is fully covered, marks it paid. You choose the payment method (bank transfer, etc.), date, and an optional reference. Manual payment recording is restricted to operator admins.

  • Tenant self-serve: stored card first, then Stripe Checkout fallback.
  • Optional card-processing surcharge added as its own checkout line when enabled.
  • Operator manual entry: record a payment with method, date, and reference (operator admins only).
  • Partial payments are supported; the invoice stays open until the balance is covered.

Recording a payment is a money-state change: it marks the invoice paid and pushes the payment to Xero. Only record payments you have actually received. Deleting a payment reverses the amount paid and your A/R, so treat it carefully.

Xero reconciliation

If you connect Xero, LiteHQ keeps your accounting in sync in both directions. When an invoice is created by the billing job it is pushed to Xero automatically. Line items are sent excluding tax with the standard output tax type, so Xero computes the same gross total. The invoice number, period, and revenue account flow across with it.

Payments reconcile too. When an invoice is paid in LiteHQ but still shows as approved-but-unpaid in Xero, LiteHQ pushes a payment record to Xero against the configured bank account so the Xero invoice is marked paid. An hourly sync also pulls Xero's view back into LiteHQ, so if an invoice is paid or voided directly in Xero, your LiteHQ status catches up.

Voids are handled inline. Because the hourly sync skips invoices that are already in a terminal state (paid, void, cancelled), a void you perform in LiteHQ is pushed to Xero at the moment you void rather than waiting for the cron.

Editing a Xero invoice that is already paid is restricted by Xero. The supported approach is to delete the payment, edit the lines, then re-apply the payment. If you need to change a paid invoice, expect that three-step dance rather than a direct edit.

Cancellations and the end of a membership

Cancelling a membership is a soft cancel. It sets an end date but keeps the membership active until that date arrives, so the member keeps access through the period they have paid for. A daily job later transitions the membership out of active once its end date has passed.

For billing, this means a membership is still billable up to its end date, and the billing job prorates the final period if it ends partway through a month. A membership is effectively cancelled when its status is no longer active or when its end date has passed, so both are worth checking if you are reconciling who should and should not have been billed.

What operators can do with an invoice

From the billing area you have the usual lifecycle controls. Most are automated, but each has a manual override for the cases the automation does not cover.

  • Send the invoice by email (operator-branded, with a link to the tenant's portal invoice).
  • Record a payment received outside the app (bank transfer, etc.).
  • Void an invoice that should not be collected (pushed to Xero immediately if it was synced).
  • Merge two or more open/draft invoices for the same company and location into one.
  • Delete draft invoices (only drafts can be deleted).

These actions are gated to operator admins (and platform admins for cross-tenant cases). Tenant members cannot mutate invoices; they can view and pay their own company's invoices from the portal.

When something looks off

Most billing surprises come down to one of a few causes. Before assuming a bug, check these:

  • Invoice not generated yet: confirm the billing date and lead time. An invoice is created ahead of the period, not on the day it starts.
  • Status differs from Xero: the LiteHQ-to-Xero payment push and the hourly Xero-to-LiteHQ pull converge over time; a brief mismatch usually self-heals within the hour.
  • A failed card charge: status shows failed, which is not terminal; a retry or manual payment will resolve it.
  • A voided invoice still showing in Xero: a void is pushed inline, but if Xero was unreachable at that moment the hourly reconciliation is the backstop.
  • Wrong desk count on a line: desks consolidate by plan, price, and location; a price or location difference will split them onto separate lines.

Frequently asked

How often does LiteHQ generate invoices?

The billing job runs once a day. It generates each invoice ahead of its billing date by the configured lead time, which defaults to 7 days. So a period starting on the 1st is typically invoiced around the 25th of the prior month.

Are taxes included in the invoice total?

Yes. The invoice total is stored as the gross, tax-inclusive amount. When your tax setting is exclusive (for example 15% GST), the line subtotal is grossed up by the tax rate so the total matches what the customer pays and what Xero computes. There is no separate standalone tax line.

How do tenants pay an invoice?

From their portal. LiteHQ tries a stored card first, and if there isn't one it opens a hosted Stripe Checkout session for that invoice. If you've enabled a card-processing surcharge, it's added as its own line at checkout.

Can I record a bank-transfer payment manually?

Yes. Operator admins can record a payment against an invoice with a method, date, and reference. Once the payment covers the balance the invoice is marked paid, and if the invoice is synced to Xero the payment is pushed there too.

What happens when a member cancels?

Cancellation is a soft cancel: it sets an end date but keeps the membership active until that date, so access continues through the paid period. The final period is prorated if it ends mid-month, and a daily job expires the membership once the end date passes.

Why does an invoice's status not match Xero yet?

LiteHQ pushes invoice and payment state to Xero, and an hourly sync also pulls Xero's status back. A brief mismatch is normal and usually reconciles within the hour. Voids are pushed to Xero immediately rather than waiting for the cron.

Related