Skip to content
All documentation

Documentation · Integrations

Connect ezeep printing

Connect ezeep Blue cloud printing to LiteHQ: link your account, provision members to printer groups, and on-charge per-seat print usage to tenant invoices.

9 min read

LiteHQ connects to ezeep Blue, the cloud print service, so you can give coworking members print access without running a print server, and on-charge what they print back to their company's invoice. This guide walks an operator (host) through connecting ezeep, deciding how members are provisioned into printer groups, and turning print usage into invoice lines. It is written to match how the integration actually behaves in the product today, not a wish list.

One idea runs through the whole flow: capture and charge are separate. LiteHQ captures print usage continuously in the background, but it never charges a tenant until you explicitly turn recharge on and press Bill. That separation lets you watch usage for a month, decide on rates, and only then decide whether to pass the cost through. Wherever this guide talks about money, that distinction is the thing to keep in mind.

Before you start

ezeep is an integration, so it sits behind the same plan gate as the rest of the integrations hub. A host on the free tier is blocked from connecting or configuring ezeep until they upgrade; disconnecting is never gated. If you hit an upgrade prompt when you click Connect, that is the gate firing, not a bug.

You connect ezeep with an OAuth flow. Either your LiteHQ instance is configured with LiteHQ's own partner credentials (in which case the connect screen shows a 'LiteHQ Partner Integration' banner and you connect with one click), or you supply your own ezeep Client ID and Client Secret. To get your own keys you request them from ezeep's partner API request page, and you register the redirect URI that the connect screen shows you (it points at the LiteHQ ezeep callback function).

  • You manage the ezeep account. LiteHQ talks to ezeep on your behalf; the print licenses and printers live in your ezeep organization.
  • ezeep bills you per named user (per seat). Every member you provision into ezeep consumes one of your ezeep licenses.
  • The integration lives in your operator dashboard under Integrations, then ezeep Blue.

ezeep does not expose your plan tier or seat cap through its API. LiteHQ can read how many seats are in use, but you enter your own seat cap (and an optional plan label) by hand so LiteHQ can warn you before you overrun your license count.

Step 1 · Connect ezeep Blue

Open Integrations, then ezeep Blue. The first choice is Integration Mode: Global (recommended) or Per-Location. Global makes one ezeep connection for your whole organization and is the simpler path; Per-Location lets you connect a separate ezeep account for an individual location, which you only need if different sites have genuinely separate ezeep accounts.

If your instance has system credentials, you will see the partner banner and a 'Connect with Ezeep (App)' button. Otherwise, enter the Client ID and Client Secret from ezeep and copy the Redirect URI shown on the screen into your ezeep app registration. Click Connect; you are sent to ezeep to authorize, then returned to the same LiteHQ page you started from.

When the connection succeeds you will see a 'Global Connection Active' card (or a Connected badge in Per-Location mode). The OAuth scopes LiteHQ requests are printing, accounts, and reporting: printing and accounts cover provisioning members and managing groups, reporting covers reading print-usage data for billing.

The reporting scope was added after the integration first shipped. If you connected ezeep a long time ago, your saved token may predate it, and usage reports will fail with an authorization error. The fix is to disconnect and reconnect so a fresh token carries the reporting scope. Your ezeep Client ID also has to be registered for these scopes on ezeep's side.

Step 2 · Map locations to printer groups

Once connected in Global mode, the Location Configuration grid lists each of your locations with three controls: a status badge, a Target Group, and an Auto-Sync Users toggle. A printer group in ezeep is the set of printers a user is allowed to print to, so mapping a location to a Target Group decides which printers members at that location can reach.

Pick a Target Group per location from the dropdown (the list is pulled live from your ezeep organization). In Per-Location mode the equivalent control is the Default Group on that location's tab. If a location has no group selected, members provisioned there will have an account but no print access until you assign a group.

  • Status 'Active' means a row exists for that location; 'Pending' means it has not been configured yet.
  • The Target / Default Group is the group LiteHQ grants a member when it provisions or syncs them for that location.
  • Groups are managed in ezeep. LiteHQ reads your existing groups; it does not create printers or groups for you.

Step 3 · Choose how members are provisioned

Provisioning is how a LiteHQ member becomes an ezeep user with print access. You have two broad choices, and they are not mutually exclusive.

Auto-Sync Users (the per-location toggle): when ON for a location, adding a member there automatically invites them into your ezeep organization and grants print access via that location's Target Group. Removing a member (their last active membership) revokes that access. This writes to your ezeep account. Leave it OFF if you would rather manage ezeep users yourself.

Member match (always available): a read-only reconciliation view that lists the ezeep users in your organization and matches them to your members by email. From it you can invite a member into ezeep, add them to a group, revoke their group access (keeping the account), or delete the account entirely (freeing the seat). This works whether or not Auto-Sync is on, which makes it the manual companion to the automatic flow.

For more control there is a rules-based provisioning mode. Rules match on plan, location, and role and grant a target group when they fire, so a member with memberships at two sites lands in both sites' groups automatically. A 'Sync now' action applies your current rules to every existing member on demand, which is also the recovery path if something drifts.

Because ezeep bills per named user, LiteHQ enforces the seat cap you entered before creating any new ezeep account: provisioning, the invite button, and a bulk sync all check it. Re-adding an existing ezeep user to a group never consumes a seat, so only brand-new accounts are blocked when you hit the cap.

Step 4 · How print usage is metered

ezeep's usage data comes from a reporting API that runs as a slow, per-organization batch job (it produces a CSV), which is too slow to read on a page load. LiteHQ works around that with a daily background job that, for each connected operator, requests the current month's report, waits for it, downloads the CSV, attributes each ezeep print account to a member and their business by email, and caches the result.

The cached usage is stored per business, per member, per month: pages (mono, colour, and by paper size where the report exposes it) and job counts. Members can see their own business's print usage in their portal wallet once ezeep is linked and the business has print accounts, and you see it per business on the Printing page.

Usage capture runs continuously and is independent of whether you charge for it. The cache is refreshed (replaced) for the period on each run, so it stays current without you doing anything.

ezeep does not document the exact column names in its report export, so LiteHQ parses defensively: it finds columns by name heuristics and degrades gracefully when a column is missing. Treat the page/colour/size breakdown as best-effort. Job and total counts are the most reliable figures.

Step 5 · Set up recharge and bill it through

On-charging is configured per integration, with an operator default that applies to every business and optional per-business overrides. The current billable unit is per seat: you set a seat rate, and recharge for a business is that rate multiplied by the ezeep seats attributed to it. Seats are counted from provisioned ezeep accounts, so a member with a seat is billable even in a month they did not print.

Recharge is off until you turn it on. Each config row has a recharge-enabled switch, and with it off the computed charge is always zero even though usage keeps being captured. This is the capture-versus-charge model made concrete: nothing reaches a tenant invoice by accident.

The Printing page (Integrations, ezeep Blue, then Printing) shows, for a chosen month, each business's seats, pages, jobs, projected recharge, and whether it has already been billed. When you are ready, the Bill action turns that period's recharge into charges. For each recharge-enabled business with a positive total that is not already billed, LiteHQ writes one pending invoice line on that tenant, which the billing engine cron then folds into the tenant's next invoice and on to Xero.

Billing is idempotent. A database constraint rejects a second charge for the same business, period, and description, so re-running Bill (or two people pressing it at once) will not double-charge. Already-billed businesses are simply skipped.

  • Seat rate is the v1 charge unit: rate multiplied by attributed ezeep seats, per billing period.
  • Per-business override rows replace the operator default wholesale for that one business; with no row anywhere, a business is never charged.
  • You can route the printing line to a specific Xero revenue account (the default is the standard sales account); never add a standalone GST line, as Xero computes tax per line.
  • Page-rate (metered) fields and a markup percentage exist in the config but are inert in the current version: they are reserved for a future per-page metering model and have no effect on what is billed today.

The projected recharge you see on the Printing page is computed by the same code that the Bill action uses, so the preview matches what actually gets charged.

Disconnecting

Disconnecting stops printing services. In Global mode it affects all locations; in Per-Location mode just that location. LiteHQ deletes the stored ezeep tokens and marks the connection disconnected, and members are no longer synced to ezeep. Your ezeep account, users, and printers continue to exist in ezeep itself; LiteHQ simply stops talking to it.

If you only need to refresh permissions (for example to pick up the reporting scope), disconnect and reconnect rather than leaving a stale token in place.

Frequently asked

Do I need my own ezeep account, or does LiteHQ provide printing?

You need your own ezeep Blue organization. LiteHQ connects to it and manages users, groups, and usage on your behalf, but the print licenses, printers, and printer groups live in your ezeep account. Depending on how your LiteHQ instance is set up, you either connect with LiteHQ's partner credentials in one click or supply your own ezeep Client ID and Client Secret.

What is the difference between capture and charge?

Capture is LiteHQ reading print usage from ezeep and caching it; it runs continuously and is always on once you are connected with the reporting scope. Charge is on-charging that usage to a tenant, which only happens when you turn recharge on for a business and explicitly press Bill for a period. Usage being captured never means a tenant has been billed.

How is a print charge calculated?

In the current version it is per seat: the seat rate you set, multiplied by the number of ezeep seats attributed to that business for the period. Seats come from provisioned ezeep accounts, so a member with a seat is billable even if they did not print that month. Per-page rates and a markup percentage exist in the configuration but are reserved for a future metering model and do not affect billing today.

Will billing a period twice double-charge my tenant?

No. A database constraint enforces one charge per business, period, and description, so re-running Bill or two admins pressing it at once cannot create a duplicate. Businesses that were already billed for the period are skipped.

Why do my usage reports fail with an authorization error?

Usage reporting needs the reporting OAuth scope, which was added after the integration first shipped. A token created before that will not have it. Disconnect and reconnect so a fresh token includes reporting. Your ezeep Client ID also has to be registered for the printing, accounts, and reporting scopes on ezeep's side.

Does LiteHQ know my ezeep seat limit?

No. ezeep's API exposes how many seats are in use but not your plan tier or seat cap, so you enter the cap manually on the integration page. LiteHQ then checks it before creating any new ezeep account and warns you instead of silently overrunning your license count. Re-adding an existing user to a group does not consume a seat.

Related