AP Approval Workflow

AP Approval is an opt-in, per-business workflow. Turn it on, and a cleaned-up bill is explicitly Sent for Approval — held in Pending Approval (out of the general ledger) and routed to auto-approve, operations, or advisor + owner by amount, contract match, and risk. It posts to Received (and the ledger) only once approved. Set thresholds once, then work Pending Approvals with Waiting on me, bulk low-risk approve, and email or Slack alerts.

Key capabilities

  • Per-business on/off toggle (off by default) — when off, bills post straight to Received with no approval friction
  • Explicit Send for Approval action that holds a bill in Pending Approval until it's signed off, keeping it out of the ledger until then
  • Routing into auto-approve, operations, or advisor + owner tiers based on amount and contract match
  • Three-tier approval chain with per-business amount thresholds
  • Per-tier approver assignment — choose who can sign off at each gate
  • Dedicated Pending Approvals queue with tier filter, "Waiting on me" toggle, and inline approve/reject with comments
  • AI risk scoring (0-100 with up to three factors) shown inline on each card
  • Bulk-approve low-risk bills (risk score below 40) in one click
  • Personal pending-count badge that counts only bills waiting on your tiers
  • Email and optional Slack notifications when a bill enters a gate
  • Firm-wide visibility at Approval Policies, plus a full audit trail

How it works

With the workflow enabled for a business, you clean up a draft bill and Send it for Approval. The bill moves to Pending Approval (not yet in the ledger), and the workflow reads its amount and contract match status to pick a tier. Each gate waits for a human action before the next runs. Once the final gate approves, the bill posts to Received and its journal entry hits the general ledger; a rejection cancels the bill.

flowchart TD
  draft["Cleaned-up draft bill"] --> send["Send for Approval"]
  send --> pending["pending_approval (not in ledger)"]
  pending --> signals["Risk score + contract match"]
  signals --> check{"Amount & contract"}
  check -->|"<= auto-approve, matched"| auto["Auto-approved"]
  check -->|"<= ops threshold"| ops["Operations approval"]
  check -->|"Above ops or contract issue"| adv["Advisor + Owner approval"]
  auto --> recv["received (posts journal entry)"]
  ops --> recv
  adv --> recv
  check -->|"rejected"| canceled["canceled"]

How to use it

  1. Open AP Approvals (under Accounts Payable) and turn on the Bill approval workflow toggle for this business (it's off by default).
  2. Click Set Up Approval Policy if you haven't yet.
  3. Set the Auto-Approve threshold — bills at or below it with a matched contract approve automatically.
  4. Set the Ops Approval threshold — bills between the auto-approve limit and this amount go to operations approvers.
  5. Click Manage approvers to pick who can sign off at each tier (Operations, Advisor, Owner).
  6. Clean up a draft bill and click Send for Approval (from the bill detail) to start the workflow — the bill moves to Pending Approval and doesn't post to the ledger yet.
  7. Open Pending Approvals to work the queue (the badge shows how many bills wait on you); toggle the Waiting on me pill to filter to only the gates your account approves.
  8. Click Approve to advance a bill — final approval posts it to Received and the ledger — or Reject to cancel it with a comment. Each bill shows as a card with vendor, amount, tier, and risk score.
  9. Use Score risk to flag duplicate or suspicious bills, then Bulk Approve Low-Risk to clear the easy ones.
  10. Advisory firms manage thresholds across all clients from Approval Policies.

Pro tips

  • Start conservative (e.g. auto-approve under $500, ops up to $5,000) — running Set Up Approval Policy again safely resets thresholds to defaults without breaking bills already in flight.
  • Assign at least one approver per tier — until you do, any user can respond to that tier (fine for small teams, weak governance for larger ones).
  • Run AI risk scoring before working the queue: bulk-approve low-risk bills, then focus on higher-risk items.
  • Add rejection comments so vendors understand returns — quick-pick reasons speed up common cases like duplicate invoices.
  • Keep vendor contracts current: bills flagged Over Contract or Needs Review skip auto-approve regardless of amount.

In-depth guide

Enabling & sending for approval

  • Per-business toggle — the Bill approval workflow switch on the AP Approval page turns the flow on for that business. It's off by default, so businesses that prefer the simple inbox keep posting bills straight to Received.
  • Explicit, not automatic — bills no longer enter approval just because they're created or received. Once the toggle is on, you clean up the draft and Send for Approval to start the workflow.
  • Captured at send time — sending for approval records the resolved expense ledger and amount, so the bill can post a correct journal entry the moment it's approved.
  • Provisioning vs. toggle — a firm still provisions thresholds and approvers (see Approval Policies); the per-business toggle is the on/off switch that decides whether bills actually route through those tiers.

Routing recap

Bills above auto-approve go to Operations; above ops (or Over Contract / Needs Review) escalate to Advisor + Owner. Each gate waits for a human action before the next runs.

Setting thresholds

  • Click Adjust thresholds to set the auto-approve and ops limits (the Ops threshold must exceed the auto-approve threshold).
  • Changes apply to bills created after the update; bills already in flight continue through the tier they were routed into.
  • Clicking Set Up Approval Policy again with default values resets thresholds — useful as a reset button.
  • Advisory firms can update thresholds across all client businesses from Approval Policies.

Assigning approvers

  • Click Manage approvers on the AP Approval page to pick who can respond to each tier (Operations, Advisor, Owner).
  • No approvers assigned — any user on the business can respond to that tier.
  • At least one approver assigned — only those users can approve or reject at that tier.
  • Approver counts appear on the AP Approval page and the firm-wide Approval Policies page.

Responding to approvals

  • Open the Pending Approvals sidebar entry to see every bill awaiting action; each shows as a card with vendor, amount, tier, risk score, and time pending.
  • Approve advances the bill to the next gate; approval at the final gate posts the bill to Received and records its journal entry in the ledger.
  • Reject moves the bill to Canceled and adds an inline comment; quick-pick reasons like "Duplicate invoice" or "Wrong amount" are available.
  • Use tier filter pills or Waiting on me to focus the queue.
  • With AI risk scoring on, low-risk bills can be bulk-approved in one click.
  • You can also respond from the bill detail modal when a workflow is pending.

Sidebar badge

The Pending Approvals badge counts only bills waiting on tiers you're configured to approve, so users not on any tier see no badge. Clear Waiting on me to see the firm-wide queue when triaging on someone else's behalf.

Notifications

When a bill enters a gate, DayZero emails the approvers for that tier and posts to Slack if a webhook is configured. If delivery fails, the bill still appears on the Pending Approvals page.

Contract match status

Every bill carries a contract match status:

  • Matched — aligns with a known vendor contract.
  • Over Contract — exceeds defined contract terms.
  • Needs Review — the system cannot confidently match it to a contract.

Over Contract and Needs Review bills escalate even when their amount would otherwise auto-approve.

AI risk scoring and audit trail

Click Score risk to score draft and pending bills (0-100 with up to three factors). Work the highest-risk bills first. Every approval or rejection is recorded in the Audit Log with the acting user, bill, and tier — useful for close and SOC reviews. Advisory firms manage all clients from Approval Policies.