Skip to main content
Approval workflows in DualEntry enforce review gates before records can be posted. You define who needs to approve, under what conditions, and what happens when someone is unavailable.

Workflow setup and record types

You manage approval workflows from Settings → Approval Workflows. The list view shows every workflow in your tenant, grouped by record type. From here you can create a new workflow, edit an existing one, or toggle a workflow between active and inactive states. Each workflow targets a single record type. DualEntry supports workflows on these record types: bill, invoice, journal entry, purchase order, sales order, bank transfer, intercompany journal entry, contract, customer credit, vendor, and customer. You create one or more workflows per record type, and each workflow can have its own conditions for when it applies.
You can deactivate a workflow without deleting it. Deactivated workflows stop applying to new records but remain visible for historical reference.

Defining stages and approvers

A workflow consists of one or more sequential stages. At each stage, one or more approvers must act before the record advances to the next stage. You assign approvers in three ways:
  • Specific user - select an individual by name.
  • Workflow role - assign a role (configured under user roles and permissions), and any user holding that role can approve.
  • Manager of creator - DualEntry automatically routes to the record creator’s direct manager.
When all stages pass, the record’s approval status moves to approved and it becomes eligible for posting. If any stage is rejected, the record returns to the submitter for revision.

Segregation of duties

DualEntry enforces segregation of duties on every workflow so a record’s creator cannot also be its sole approver. When a stage resolves to the record’s creator (for example, a Manager of creator assignment where the creator is their own manager, or a named approver who submitted the record), the system removes the creator from the approver pool for that record and routes to the next eligible approver. This prevents one user from both submitting and approving the same transaction. A tenant with only one user has no second approver to enforce this separation. In that case, DualEntry records the single-approver exception in the record’s audit trail so reviewers can see it. Enable enhanced logging as a compensating control when you operate with a single approver.

Conditional routing

Conditional routing applies stricter review to higher-value or higher-risk records based on the conditions you define. You can route records to different workflows, or to different stages within a workflow, using:
  • Amount thresholds - for example, bills over $10,000 require VP approval while those under $10,000 need only a manager.
  • Company/entity - route based on which entity the record belongs to.
  • Classification values - route based on department, project, or any other classification dimension.
When multiple workflows match a record, DualEntry applies the highest-priority workflow. You set priority order by dragging workflows in the list view.

Approver actions and delegation

At each stage, an approver can take one of four actions:
  • Approve - advance the record to the next stage (or to approved if this is the final stage).
  • Reject - return the record to the submitter with a required comment.
  • Request changes - flag specific fields that need correction without fully rejecting.
  • Delegate - reassign the approval to another user.
Delegation is particularly useful for vacation coverage. An approver can delegate their pending approvals to a colleague for a specified date range. Delegated approvals still carry the original approver’s name in the audit trail alongside the delegate’s.
Delegations are time-bounded to the date range you set and remain visible in the audit trail. The original approver’s name stays on the record alongside the delegate’s, so responsibility is never ambiguous. Admins can pull the full delegation history at any time.

Audit trail and API access

Every approval action is logged permanently and in full. DualEntry records each approval, rejection, delegation, and change request with the acting user, the timestamp, the action type, and any comments, so the history reads the way an auditor would expect to see it. This audit trail is immutable and accessible from the record’s history tab or from the global audit trail. The API exposes endpoints for programmatic access to approval data. Use /public/v2/workflows/execution-states/ to track where a record sits in its workflow, /public/v2/workflows/actions/ for the full action history, and /public/v2/workflows/roles/ for managing workflow roles. The /public/v2/workflows/ endpoint lets you list and filter workflows by company_id, record_type, and is_active. You can integrate this into external systems to programmatically check which workflows are active or to build custom dashboards that surface pending approvals across your organization. Approval workflows apply to records created through the API or an integration, not only to records entered manually. No record type bypasses workflow enforcement based on how it was created: a bill created through /public/v2/bills/ enters the same workflow as one entered in the UI. For details on how approval actions interact with the broader permission model, see user roles and permissions.
Last modified on June 29, 2026