Billing policy

A billing policy decides, per kind, whether time is paid, free, or drawn from a time bank, resolved from the ticket, then the project, then the client, then the workspace default.

Written for
admin, integration-developer
Roles
owner, admin
Requires
Owner or Admin to set policies; workspace users on the project set the ticket override
Feature
billing

A billing policy is a rule that says what happens to billable time of a given kind: it is paid at the rate, it is free of charge, or it draws from a named time bank. Policies exist at several levels so that a contract can be expressed once and overridden where needed. The billing run resolves the policy for every entry and records the outcome: charged, bank, or free.

How it relates to other concepts

  • Levels, from most specific to least: the ticket's own policy, the project's policy for the kind, the client's policy for the kind, the workspace default for the kind, and finally paid.
  • The ticket field is "Inherit" by default and shows the resolved rule; workspace users on the project may override it to Paid, Free, or a bank.
  • The kind is what a policy keys on, so "Support draws from the bank; Implementation is paid" is two policy rows on the client.
  • Free and bank time still carries a notional value in reports, computed from the rate card.

Rules

  • A workspace default is paid or free only. A time bank belongs to one client, so bank rules are set at client, project, or ticket level.
  • A policy that names a bank not belonging to the entry's client, or scoped to another project, blocks the run.
  • Policies are read live at the run: changing a client's policy affects every unbilled entry, in any period, that resolves to it.
  • Resolution happens per entry at run time, so two entries on the same ticket logged under different kinds (after a kind change) can end differently. Elevated client users cannot change a kind while unbilled billable time exists for this reason.
  • Only Owners and Admins set client, project, and workspace policies.

Example

Workspace default: everything paid. Nordic Retail: Support → time bank "Support 10h". retail-shop: no overrides. Ticket ACME-190 (Support) inherits the bank. A one-off goodwill ticket is set to Free on the ticket itself.