Read this chapter before you set up customers, rates or payroll. It explains how the records in the portal depend on each other, which of two rate systems applies when, and how a single shift travels from a customer's request to a paid invoice. Later chapters describe each screen in detail; this one explains why the order matters.
3.1 The entity map
flowchart TD
Company --> Branches --> Sites["Sites"]
Customers --> Sites
Sites --> Contract["Contract details (on the site)"]
Customers --> BillCodes["Bill Rate codes (customer or site scope)"]
Sites --> BaseRates["Base Rates (Regular / Overtime / Double Time / Holiday)"]
Employees --> PayRates["Employee base pay rate"]
Sites --> SitePay["Site pay rates (default or per employee)"]
ShiftCodes["Shift Codes (scheduling templates)"] --> Shifts["Shifts (Working Schedule)"]
BillCodes --> Shifts
GuardRequests["Guard Requests"] --> Shifts
Master["Master Schedule"] --> Shifts
Shifts --> TimeEntries["Time entries (clock in / out)"] --> Timesheets --> PayPeriod["Pay period: open, closed, processing, paid"]
PayPeriod --> Suggested["Schedule Generated Invoices"]
Customers --> Custom["Custom Invoices"]
Suggested --> AR["Customer AR Report"]
Custom --> AR
CallOuts["Call-outs and relief delays"] --> OnCall["On-call contacts paged"] --> Coverage["AI coverage: replacement shift"]
Each row of the diagram is one dependency. Reading them in order is also the recommended order for setting a company up:
- Company → Branches → Sites. A company is divided into branches (regions or business units); every site belongs to exactly one branch. Branch managers see only their branch, and the Branch Filter in the header scopes every list and report. If you have one office, keep the single default branch.
- Customers → Sites. A customer is the client you invoice. Each site is linked to one customer, and a customer may own many sites. Invoices, bill-rate codes and the AR report are organised by customer, so create the customer before its sites (you can also attach sites to a customer later from the customer's Sites section).
- Sites → Contract details. The site carries the contract terms for that location — dates, hours required, service terms and notes — used by the Compliance hub and shown in the customer's Overview.
- Customers → Bill Rate codes. Bill Rates under the Invoicing hub are named codes (for example
ARMED-DAY,UNARMED-NIGHT) that carry a Default bill rate and a Default pay rate. A code is created at customer scope (it applies to all of that customer's sites) or site scope (one site only). Codes are attached to shifts and become the grouping key for invoice line items. - Sites → Base Rates. A second, simpler set of hourly bill rates lives on each site under Financial > Base Rates: one hourly figure per Rate Type (Regular, Overtime, Double Time, Holiday), site-wide or for one named employee. These are the fallback billing figures when a shift has no code, and they are always the source of the overtime, double-time and holiday billing rates.
- Employees → Employee base pay rate. Every guard needs a base hourly rate with an effective date before payroll can price their hours (
Payroll > Pay Rates). Without it a timesheet prices the hours at $0 and the payroll readiness check warns you. - Sites → Site pay rates. A site can override pay: a default for anyone who works there (an armed post that pays more) or a rate for one named employee at that site.
- Shift Codes → Shifts. Shift Codes under the Schedule hub are scheduling templates (
DAY,NIGHT) that pre-fill times, headcount and required certifications. They are not billing records — that is the job of the bill-rate codes above. The two are easy to confuse; see section 3.2. - Guard Requests → Shifts and Master Schedule → Shifts. Shifts enter the Working Schedule three ways: created by hand, published from a Master Schedule template, or written by confirming a customer's Guard Request.
- Shifts → Time entries → Timesheets → Pay period. When a guard clocks in and out in the app, a time entry is created against the shift. At the end of a pay period the entries (or the scheduled hours, depending on the Time Source setting) are aggregated into one timesheet per employee, approved and exported. The pay period moves through open → closed → processing → paid.
- Pay period → Schedule Generated Invoices. Once a period is closed, InstaNotified can propose one invoice per site from the period's hours priced at the bill rates that applied on each shift date.
- Customers → Custom Invoices. Invoices can also be built directly for a customer or site — from pulled hours, manual lines, or both — without waiting for payroll.
- Invoices → AR Report. Every generated invoice, suggested or custom, feeds the customer's accounts-receivable aging report.
- Call-outs → On-call contacts → Coverage. Field events (a guard calls out, a relief is late, an incident is filed) page the on-call contacts you configure under
Organization > On-Call Contacts; from the app's On-Call tab a supervisor can approve the call-out and use AI coverage to create the replacement shift, which flows back into the Working Schedule and therefore into payroll and invoicing.
3.2 The two bill-rate systems
InstaNotified has two places to record what a customer is charged. They work together, and most companies use both.
Bill Rate codes (Invoicing > Bill Rates, or the customer's Financial > Bill Rates) | Base Rates (Site detail > Financial > Base Rates) | |
|---|---|---|
| What it is | A named code with a Default bill rate ($/hr) and optional Default pay rate ($/hr), an Effective from / to window and an Active flag | One hourly figure per Rate Type: Regular, Overtime (1.5x), Double Time (2x), Holiday |
| Scope | Customer (all of that customer's sites) or Site | One site; optionally one employee at that site |
| Attached to | Individual shifts (the Bill rate field in Create / Edit Shift) and Master Schedule template shifts | Nothing — resolved automatically from the shift's site, employee and date |
| Used for | Pricing the regular hour on shifts that carry the code; grouping invoice line items by code ([CODE] prefix; the Shift-code breakdown line-item format) | The fallback regular rate when a shift has no code or override; always the OT / DT / holiday billing rates |
| Best for | Contracts with several service levels (armed vs unarmed, supervisor vs officer) or different prices per post | Simple one-rate-per-site contracts, and the overtime / holiday premiums for any site |
Practical guidance:
- Set Base Rates for every billable site, at least Regular and Overtime, even if you also use codes. Codes only set the regular rate; if a guard's hours tip into overtime the invoice needs a site Overtime rate to bill them correctly.
- Use codes when different shifts at the same site are billed differently, or when one customer has the same price list across many sites (create the code at customer scope once).
- A code that is deactivated or whose Effective to date has passed silently stops applying its defaults; the shift then falls back to Base Rates. Use effective dates for annual price increases rather than editing the rate in place, so past periods still recalculate correctly.
3.3 Rate precedence
When payroll or invoicing prices a shift it walks a fixed chain and stops at the first value it finds. Both chains are evaluated per shift, on the shift's date, so effective dates on every rate matter.
Pay rate (what the guard earns per regular hour)
- Bill/Pay rate override on the shift itself (Create / Edit Shift).
- The shift's Bill rate code Default pay rate — only if the code is active, its effective window covers the shift date and it belongs to the shift's site or the site's customer.
- Site pay rate for this employee (
Site detail > Financial > Pay Rates, employee row). - Site default pay rate (same page, the row with no employee).
- Employee base pay rate (
Payroll > Pay Rates). - Otherwise $0 — the readiness check on
Payroll > Reportsflags this.
Overtime and double-time pay are the resolved rate multiplied by the OT Multiplier / Double Time Multiplier from Payroll Settings, after the weekly OT Threshold / Double Time After hours are exceeded. Night and weekend differentials from Payroll Settings, and holiday premiums (below), are added on top.
Bill rate (what the customer is charged)
- Bill/Pay rate override on the shift (the bill half of the override) — sets the regular hourly rate.
- The shift's Bill rate code Default bill rate — same validity rules as for pay.
- Site Base Rates: the Regular row for this employee, otherwise the site-wide Regular row.
The Overtime, Double Time and Holiday billing rates always come from the site's Base Rates (employee row first, then site-wide), whatever set the regular rate.
Holidays. Payroll > Settings > Holidays defines company holidays with a Pay Multiplier and a Bill Multiplier, and each site can disable or override them under its Holidays section. On payroll, hours worked on a holiday earn the resolved pay rate times the Pay Multiplier (a 1.5 multiplier adds 50% as differential pay). On invoices, all hours worked on a holiday are billed at the site's Holiday Base Rate when one exists.
3.4 The settings hierarchy
Several settings are defined at company level and can be overridden per branch and per site. The most specific level wins: site → branch → company → built-in default.
| Setting group | Company level | Overridden at |
|---|---|---|
| Payroll settings (work week, pay period type, overtime rules, differentials, Time Source for Timesheets, GPS rules, automation) | Payroll > Settings > General with the scope picker set to the company | The same page with the scope picker set to a branch or site |
| Clock In/Out rules (Require GPS for clock-in, Block clock-in outside geofence (default off), GPS tolerance — the grace distance outside the geofence that still counts as on site, Auto clock-out after; the Early clock-in window defaults to 15 minutes) | Payroll > Settings > General | The same page with the scope picker set to a branch or site — the geofence block shows Inherited until you flip it, and Use inherited hands it back to the parent; or Site detail > Settings > Clock In/Out — Save site overrides / Reset to parent |
| Holidays (Pay Multiplier, Bill Multiplier, Recurring) | Payroll > Settings > Holidays | Site detail > Holidays — disable a holiday or change its multiplier for one site |
| Automatic notifications (shift reminders, periodic verifications, geofence checks) | Set on one site and pushed to every site with Apply to All Sites | Site detail > Settings > Notifications (Notification Settings) |
| Scheduling defaults (Default Shift Start / End, Shift Duration, min / max hours, Min / Max Employees/Shift) | — | Site detail > Settings > Scheduling Settings |
| Uniform checks (Enable uniform checks, Require photo to clock in) | — | AI Supervisor > Uniform Checks > Site Settings, one site at a time |
| Feature toggles (Patrols, Incidents, Geofencing, Live Location, Custom Forms, On-Call, Scan Points) | Settings > Company > Feature Configuration | — (company-wide) |
3.5 Walkthrough: from a customer request to a paid invoice
This is the full life of one shift. Each step names the page where it happens.
flowchart LR
a["1 Guard Request arrives"] --> b["2 Confirm coverage with a bill rate"] --> c["3 Shift on Working Schedule"] --> d["4 Guard clocks in / out"] --> e["5 Time entry"] --> f["6 Close pay period"] --> g["7 Generate + approve timesheet"] --> h["8 Export + Mark as paid"] --> i["9 Suggested invoice"] --> j["10 Send invoice"] --> k["11 AR Report"]
- The request arrives (
Schedule > Guard Requests). A customer emails your company's request address, phones, or the request is entered directly. It appears as New with response and resolution SLA clocks running. If it was marked Urgent, on-call contacts are paged immediately. - Confirm coverage (same page). Open the request, acknowledge it, work the checklist, reply to the client from the Email tab, then Confirm coverage. The confirmation dialog asks for the Bill rate code to attach and offers Confirm and schedule, which writes the shifts into the Working Schedule with that code already set. If client status emails are enabled in Dispatch settings, the customer is emailed the confirmation.
- The shift exists (
Schedule > Working Schedule). It carries the site, date, times, headcount, the bill-rate code and (optionally) a per-shift Bill/Pay rate override. Assign a guard; eligibility warnings flag missing certifications, overlaps and overtime. Guards see it in the app's Schedule tab. - The guard clocks in and out in the app. The clock-in button opens Early clock-in window minutes before the start; the GPS position is checked against the site geofence plus the GPS tolerance grace and the punch is flagged verified or unverified; if Block clock-in outside geofence is on for the site, an off-site punch (or one with no GPS fix) is refused instead, and the guard is told how far outside the fence they are; a uniform photo may be requested.
- A time entry is created (
Payroll > Time Entries) with start, end, break minutes, GPS result and the shift it belongs to. Adjust or void it here if needed; the original is kept in the audit trail. - The pay period closes (
Payroll > Overview→ Close period, available once the period end date has passed). No further entries can be added. - Timesheets are generated and approved (
Payroll > Timesheets). Generate all builds one timesheet per employee. Hours come from the Time Source for Timesheets setting: Clock In/Out Only uses time entries; Schedule Only uses scheduled hours; Clock with Schedule Fallback uses the clock where it exists and the schedule where a guard forgot. Each shift is priced by the pay chain in section 3.3, overtime and differentials are applied, and gross pay is totalled. Review and Approve, or Reject Timesheet with a reason the guard sees in the app. - Export and mark as paid (
Payroll > Reports). Choose PDF report, Internal CSV, ADP CSV or Paychex CSV, pay your staff through your payroll provider, then Finalize Payroll (or Mark as paid on the Overview). The period becomes paid, approved timesheets become paid, time entries are locked, and the next period opens. - A suggested invoice is proposed (
Invoicing > Schedule Generated Invoices). For closed or paid periods, each site with billable hours is listed with the hours priced by the bill chain in section 3.3 — regular hours at the code or Base Rate, overtime / double time / holiday hours at the site's Base Rates. Choose the sites and Generate invoices for selected. Line items follow the site's invoice Settings (format, tax, due days, notes and terms). - Send it (same page, Send tab, Send Invoice). The invoice is emailed to the customer contacts flagged Receive invoices. Status moves Generated → Sent; record payment with Mark Paid, or Void a mistaken invoice.
- Track receivables (
Customer detail > Financial > AR Report). Outstanding invoices age through Not Yet Due, 1-30 Days, 31-60 Days, 61-90 Days and 90+ Days, with Total Outstanding, Overdue (past due date) and Paid (All Time) totals.
If you invoice on a cadence that does not match pay periods, or need to bill a one-off service, use Create Custom Invoice (Invoicing > Custom Invoices) instead of step 9 — it can pull the same hours for any date range or take manual lines, and it feeds the same AR report.
3.6 Walkthrough: an incident or call-out from the field
The second chain runs from the mobile app back into the schedule.
flowchart LR
a["1 Guard submits call-out or incident in the app"] --> b["2 On-call contacts paged (SMS + push)"] --> c["3 Supervisor opens On-Call tab or replies ACK"] --> d["4 Approve, then Find Coverage with AI"] --> e["5 Apply & Create Schedule"] --> f["6 Replacement shift on Working Schedule"]
- The event happens in the app. A guard taps REQUEST CALL OFF (call-out), NOTIFY OF RELIEF DELAY (lateness / relief report) or REPORT INCIDENT. The record appears in the portal at once (
Schedule > Call Outs & TardiesorOperations > Incidents). - On-call contacts are paged. Every active on-call contact assigned to that site (or its branch) whose availability window covers the current time receives an SMS and a push notification titled On-Call Alert at the same time — there is no rotation or escalation ladder. Which event types page a given contact is set in their notification preferences (section 5.5). Managers who are not on-call contacts see the item in the portal's notification bell instead.
- The supervisor responds. From the SMS they can reply ACK (I can cover this — on the Complete plan this also starts an AI coverage analysis), DENY (the call-out is denied) or DETAILS (send me the full record). From the app's On-Call tab they open Call Outs & Tardies and tap Review & Respond.
- Approve and find coverage. Approve records the decision and notifies the guard, but it does not fill the shift. Find Coverage with AI → Find Replacement ranks available guards — assigned to the site, no conflicting shift, fewest hours this week, holding the required certifications, lowest overtime risk — and shows the best candidates.
- Apply & Create Schedule on a candidate does four things at once: cancels the original guard's shift, creates the replacement's shift with the same site, date and times, notifies the replacement, and approves the call-out. Create Replacement Schedule Manually does the same by hand when you want to pick the guard yourself.
- The schedule is updated. The new shift appears on the Working Schedule (and in the replacement's app), inherits the site's bill-rate setup, and from there follows the payroll and invoicing chain in section 3.5. The original shift shows as cancelled so it does not bill.
The same on-call machinery also pages for urgent guard requests, request SLA escalations, flagged patrol issues, incomplete patrols, verification timeouts and geofence violations (see the trigger table in section 5.5). Attendance no-shows on the Attendance Monitoring board do not page on-call contacts; they are handled from the portal.

