How do placement rules decide which billings a condition applies to?
Rules let you build conditions — like "only on permanent placements" or "only for billings in the first 30 days" — that control whether a billing qualifies for a scheme, qualifies for payment, or gets an automatic adjustment such as a burden. A rule is made up of one or more criteria, combined either by matching ALL of them or ANY of them, and it's checked both against the placement as a whole and against each individual billing within it. Getting ALL/ANY right, and understanding a couple of criterion-specific quirks below, is usually what makes a rule behave as expected.
Overview
Rules are managed under Placements > Settings, in the Rules section. They're defined once, at placement level, and are account-wide — not tied to an individual scheme. For example, a rule called "Confirmed" might match placements that are either Approved or Completed, while a rule called "Employee" might match placements that are Contract terms and have a custom field showing a specific contractor type.
Once a rule exists, you select it within a scheme for one of a few different purposes:
- Accumulation rules — whether a billing qualifies to accumulate towards the scheme at all.
- Confirmation rules — whether a billing qualifies for payment (separate from whether it accumulates).
- Modifier rulesets — whether a billing gets an automatic adjustment applied, such as a burden or a line-item filter.
The rule itself works the same way regardless of where it's used — the same "Confirmed" rule could be selected as an accumulation rule on one scheme and reused as part of a modifier ruleset on another. Each criterion within a rule checks something specific — whether a placement is approved, whether its terms are permanent or contract, whether a billing falls before a certain date, and so on.
Rules are checked twice:
- Against the whole placement. If the rule matches at this level, it applies to the placement and to every billing within it.
- Against each individual billing, for any rule that didn't already match at placement level. Only that specific billing is affected — not the whole placement.
This two-level check is what allows a rule to be as broad as "any permanent placement" or as narrow as "only billings dated after 1 April on this placement."
Criteria available
| Criterion | Checks | Applies at |
|---|---|---|
| Approval | Whether the placement is approved | Placement |
| Completed | Whether the placement is marked completed | Placement |
| Terms type | Contract terms or permanent terms | Placement |
| Company name | The placement's company name — equals, contains, starts with, or ends with a value you set (not case-sensitive, spaces trimmed) | Placement |
| Custom field | A custom field value — exact match, case-sensitive | Placement or billing |
| Minimum/maximum margin | The margin on a billing, as a percentage | Billing |
| Value before date | Whether a billing falls before a date you set | Billing |
| Days from start date | Whether a billing falls within a number of days of the placement's start date | Billing |
Each criterion can also be inverted — set to match when the condition isn't true (for example, "not approved" instead of "approved"). This is what makes ranges possible, covered below.
Matching ALL of a rule's criteria vs. ANY of them
Every rule has a Type setting — All or Any — which decides how its criteria are combined. All is the default.
- All: every criterion in the rule has to be satisfied.
- Any: at least one criterion has to be satisfied.
This choice matters more than it looks, especially once a rule mixes a placement-level criterion (like Approval) with a billing-level one (like Minimum margin):
- Under Any, if the placement-level criterion is satisfied on its own, the rule applies to the entire placement — every billing included — regardless of whether the billing-level criterion matches. In other words, a satisfied placement-level criterion under Any overrides the billing-level check entirely.
- Under All, if the placement-level criterion isn't satisfied, the rule doesn't apply at all — not even to individual billings that would otherwise match the billing-level criterion.
If a rule only contains billing-level criteria (no placement-level ones), it can only ever apply per-billing — it will never apply to a placement as a whole, no matter which combination type is set.
Building a range by pairing a criterion with its inverted opposite
A single "minimum" or "before" criterion is open-ended — it matches everything above (or before) the value you set. To build a bounded range, add the same criterion twice, ticking Inverted on the second one, and set the rule's Type to All.
Example: a margin band from 20% up to (but not including) 30%
- Under Add Criteria, select Minimum Margin, enter 20%, and click Add Criteria.
- Add Minimum Margin again, enter 30%, tick Inverted, and click Add Criteria — this gives you the upper bound.
- Set the rule's Type to All.
The result matches margins of 20% and above, but strictly below 30%. A margin of exactly 20% is included; a margin of exactly 30% is not.
Example: billings dated from 1 January up to (but not including) 1 April
- Add a Value Before Date criterion for 1 January, ticked Inverted (this gives you "not before," i.e. on or after).
- Add a Value Before Date criterion for 1 April, left un-inverted.
- Set the rule's Type to All.
A common mistake: setting a range rule to Any instead of All
If you build a range this way but leave (or switch) the Type to Any, the rule stops behaving as a range and matches almost everything instead — because every value is either above your lower bound or below your upper bound, so at least one of the two criteria is always satisfied. If a rule that's meant to isolate a specific band or window seems to be matching billings it shouldn't, this is the first thing to check: Placements > Settings > Rules, open the rule, and confirm the Type is set to All.
Minimum/maximum margin: is it before or after burdens?
This one catches people out often enough to call out on its own. Margin is calculated after pay and after any hourly-rate burden have already been applied, but before any burden that's driven by another rule (a percentage-based burden, for example). In practice:
- If a burden is a flat hourly rate, margin criteria will already reflect it.
- If a burden is applied by a rule elsewhere in your scheme (a percentage-based burden), a margin criterion won't yet reflect that burden's effect — it's evaluated on the figures as they stood before that burden was added.
Margin criteria never match permanent placements. A Minimum Margin criterion simply won't match anything on a permanent placement — there's no margin to evaluate. The trap is the inverted form: tick Inverted on a margin criterion (to use it as an upper bound, as in the range example above) and it's treated as satisfied for every billing on a permanent placement, because there's nothing to fail against. If a rule using an inverted margin criterion is firing unexpectedly across permanent placements, this is why — the rule may need an added Terms Type criterion to exclude permanent placements explicitly.
Other criteria worth knowing
- Company name ignores case and leading/trailing spaces, and supports partial matches (contains, starts with, ends with) as well as an exact match.
- Custom field is checked exactly and is case-sensitive, unlike company name. It can be set at placement level, billing level, or both — if you need it to catch changes on individual billings (rather than only the placement's own field), make sure it's added as a billing-level criterion.
- Days from start date counts from the placement's start date up to (but not including) the day count you set — so "within 30 days of start" covers days 0–29, not day 30 itself. Inverted, it matches both before the placement started and everything from day 30 onward.
- Value before date only ever applies at billing level — it has no placement-level equivalent, so it will never make a rule apply to a whole placement.
Need help?
If a rule isn't applying the way you expect, get in touch with your Konquest support contact with the rule name (from Placements > Settings > Rules) and an example placement or billing that's behaving unexpectedly — we can check the rule's criteria and Type setting against what you're trying to achieve.