Skip to main content

Policies

Policies define the rules that govern expense submissions — when to flag, block, or route expenses for extra approval.

Policies list

Policies have two states:

  • Draft — being built, not yet applied to any expense
  • Active (Published) — evaluated against every expense submission in real time

Create a policy

Click + New policy to open the policy builder.

Policy builder — empty state

Step 1 — Name and priority

FieldNotes
Policy nameDescriptive name shown in the policies list and on flagged expenses
DescriptionOptional — helps your team understand the intent of the rule
PriorityHigher number = evaluated first. When multiple policies match, the one with the highest priority runs first. Default is 100.
EnabledUncheck to save as disabled even when published

Step 2 — WHEN (conditions)

The WHEN section defines when this policy fires. You can add multiple conditions combined with ALL OF (every condition must match) or ANY OF (at least one must match). Toggle between them by clicking the ALL OF button.

Policy builder — condition configured

Click + Condition to add a rule. Each condition has three parts:

Field — what to evaluate:

FieldDescription
Amount (SGD)Converted SGD value of the expense
Amount (original currency)Value in the submitted currency
CategoryExpense category (Meals, Travel, Software, etc.)
Has receiptWhether a receipt file is attached
Transaction age (days)How many days since the transaction date
MerchantMerchant name string match
Submitter departmentWhich department the submitter belongs to
GST CodeThe assigned GST tax code
CurrencySubmitted currency code
Transaction on weekendBoolean — was the transaction on a Saturday or Sunday

Operatoris, is not, >, , <, (available operators depend on the field type)

Value — the threshold or match value

You can also click + Group to create nested condition groups for complex logic (e.g. "amount > 500 AND (category is Travel OR category is Client Entertainment)").


Step 3 — THEN (actions)

The THEN section defines what happens when the conditions match. You can add multiple actions.

ActionEffect
Flag for reviewWarning shown to the submitter. Expense can still be submitted. Approvers see the flag. Severity: info, warn
Block submissionHard block — the submitter cannot submit until the issue is resolved
Auto-rejectAutomatically rejects the expense without human review
Require extra approvalAdds additional approval steps on top of the base chain
Require justificationForces the submitter to enter a written justification before submitting

Click + Add action to layer multiple actions on one policy.


Step 4 — Approval Chain

The Approval Chain section defines who approves expenses that match this policy. Leave it empty to fall back to the default chain (Direct Manager → Finance Admin).

Policy builder — approval chain with two steps

Click + Add step to add an approver step.

Each step has:

SettingOptionsNotes
RoleDirect Manager, Finance Admin, Company OwnerWho must approve at this step
SLA hoursAny numberHow many hours the approver has before the system escalates. Default 48h.
LockLocked / UnlockedLocked steps cannot be removed or reordered by department-level policies. Use this for mandatory company-wide sign-offs.

Steps are evaluated in order — step 1 must approve before step 2 is notified.

Two-tier inheritance

Company-wide policies and department-scoped policies work together. A department policy can add its own steps, but any locked steps from the company-wide chain are always enforced and cannot be removed.


Step 5 — Save or Publish

ButtonWhat it does
Save draftSaves without activating. Policy is not applied to any expenses.
PublishActivates the policy immediately. It will be evaluated on the next expense submission.

Edit an existing policy

From the Policies list, click the pencil icon on any policy row. The same builder opens pre-filled with the current configuration.

note

Editing an active (published) policy creates a new version. The previous version is preserved in the audit trail.

Disable a policy temporarily

Click the toggle icon (pause icon) on a policy row to disable it without deleting. Re-enable at any time by clicking again.

Delete a policy

Click the trash icon on the policy row. Deleted policies are removed immediately. The audit trail retains a record of the deletion.


Built-in policy templates (seeded on every workspace)

TemplateConditionAction
Late submissionTransaction age > 60 daysHard block
Missing receiptAmount > SGD 50 AND no receiptHard block
High value alertAmount > SGD 1,000Soft flag (warn)
Prohibited categoryCategory is Alcohol or GamblingHard block
Company default chainAll expensesRoutes: Manager → Finance Admin

Applies-to scoping

In the policy builder, the Applies to section lets you restrict a policy to:

  • Specific departments — only fires for expenses from users in those departments
  • Specific cost centres — only fires for expenses from users assigned to those cost centres

Leave both blank to apply the policy company-wide to all expenses and all users.

When a policy is scoped to a cost centre, its approval chain takes priority over any department-level chain for users in that cost centre. See Cost Centres for details.