Skip to main content

Accounts Payable Expenses

Vendor bills and AP-style expenses for materials, subcontractor invoices, and other project costs. Code each expense to a job and cost code, route through your approval chain, and track payment status.

Sidebar → Finance → Accounts Payable

URL: /expenses

Gated by the Expense: View permission — a user without it does not see Accounts Payable in the Finance sidebar group at all.

Overview​

Accounts Payable list — company-wide bill list with column, filter, and search controls; shown empty on the demo instance

/expenses is the company-wide list of every AP bill in your instance, regardless of job. Use its filters, quick tabs, and search to find bills, open Create Account Payable to enter a new vendor bill, and use row and bulk actions to move bills through approval, locking, and archiving.

note

This demo instance has no AP bills recorded, so the list above is shown in its empty state ("No Data Found"). The columns, filters, and controls described below are unchanged whether or not rows are present.

Columns, Filters, and List Controls​

ControlEffect
All / Active / ArchivedQuick tabs above the filter row. Active (not archived) is the default; Archived shows bills removed from the active list via bulk Archive; All shows both.
SearchFree-text search box, placeholder "Search Account, Claimant, Job Name" — matches against the vendor/account, claimant, and job name.
View controls (icons beside the "Account Payable" card title)This list follows the same saved-view pattern as other Appello lists: a lock icon marks the default system view as not renamable/deletable, a save icon (enabled only with unsaved filter/column changes) saves them back to the view, a pencil (edit) icon renames the view or changes which columns it displays, and a duplicate icon copies the current view as a starting point for your own. Add New creates an additional saved view of this list with its own name and column selection.
ExportOpens a menu with Export as CSV, which downloads the currently filtered/searched result set. Disabled when there are no rows to export (as on this demo instance).

Filter chips​

Payable Status filter open — the search-and-checklist pattern shared by every filter chip on this list; shown with no options available since no bills exist yet on the demo instance

FilterFilters by
Vendor / SupplierThe company the bill was issued by.
Payable StatusInReview / Approved / Rejected — see Approve, Reject, and Lock Workflow below.
Submitted By UserThe user who entered the bill.
ProjectThe project of the job(s) the bill is allocated to.
JobThe job(s) the bill is allocated to, via its Allocate To lines.
EquipmentThe equipment the bill is allocated to, via its Allocate To lines.
GL AccountThe account item any allocation line is coded to.
Invoice DateDate range on the vendor's invoice date.
Submitted Date TimeDate range on when the bill was entered in Appello.
note

On this demo instance, opening a filter with no data behind it (for example Payable Status, with no bills yet recorded) shows "No [X] Options Available" — the filter dropdown only lists values that actually occur among current records.

Columns​

The default view on this instance shows, in order:

ColumnShows
Invoice DateThe vendor's invoice date (expenseDate). Sortable — this view's default sort is Invoice Date, ascending.
Vendor / SupplierThe company the bill was issued by.
GL AccountThe account item(s) the bill's allocation lines are coded to.
Payable CategoryThe bill's sub-type. Always Account Payable on this list — the field exists because the same underlying Expense record type also drives the Employee Expenses list.
EquipmentAny equipment the bill is allocated to.
JobAny job(s) the bill is allocated to.
ProjectThe project of any allocated job.
Submitted By UserWho entered the bill.
Submitted Date TimeWhen the bill was entered.
Net Amount AllocatedSum of the bill's Allocate To line Net Amount values.
Tax Amount AllocatedSum of the bill's Allocate To line tax values.
Gross Amount AllocatedNet + tax allocated.
Net AmountThe bill's total pre-tax amount.
TaxesThe bill's total tax amount.
Gross AmountThe bill's total including tax.

Which columns are visible, and their order, is configurable per saved view via the pencil (edit view) icon described above.

Totals​

Two chips sit above the table, next to Export:

  • Outstanding AP (Net or Gross) — total of bills matching the current filters that are not yet paid.
  • Total AP (Net or Gross) — total of all bills matching the current filters.

Selecting one or more rows adds a third chip, Selected AP, totaling just the checked rows. Whether these read Net or Gross depends on the Include Tax in Financials instance setting.

Create an Account Payable Bill​

Where it is: Create Account Payable button, top-right of the list.

Opens the same form used to edit an existing bill, pre-filled for a new Account Payable-type expense.

Create Account Payable — top of the panel: Invoice Date, Due Date, Invoice Number, Payable Category, Vendor/Supplier, Details, and the start of Receipt Details

Create Account Payable — bottom of the panel: Tax Type, Taxes, Gross Amount (calculated), the Allocate To grid, Assets/Receipts, and the sticky Payable Status footer

Account Payable Information​

FieldRequiredTypeEffect
Invoice DateYesDateThe date the vendor issued the invoice. Maps to expenseDate.
Due DateNoDatePayment due date. Maps to dueDate.
Invoice NumberNoTextThe vendor's invoice reference (invoiceNumber). If the same invoice number already exists for the same vendor, saving shows a "Duplicate Invoice Number Detected" confirmation naming the existing bill's date — you can still save anyway.
Payable Category—Disabled selectFixed to Account Payable for this list (type); the field is shared with the Employee Expenses form, where it is editable.
Vendor / SupplierYesAssign-company flyoutThe company being paid (companyId). Add opens a company search/assign flyout filtered to companies flagged as payable.
DetailsNoTextarea, 800 char maxFree-text notes about the invoice (details).

Receipt Details​

FieldRequiredTypeEffect
Calculation Mode—Toggle: Pre-tax / TotalPre-tax (PreTax): enter Net Amount, tax and Gross Amount are calculated. Total (Total): enter Gross Amount, tax and Net Amount are back-calculated. Maps to calcMode.
Net AmountYesCurrencyThe bill's pre-tax amount (subTotal). Editable in Pre-tax mode; calculated (read-only) in Total mode. Cannot be zero.
Tax TypeYes, unless Override Tax Rate is onSelectThe tax type applied to the whole bill (taxTypeId), defaulting to the instance's default tax type. Its Override Tax Rate toggle switches to manually entering Taxes, with a warning that an overridden bill will not sync or export to any connected accounting system.
TaxesYesCurrencyTax amount (taxes). Calculated from Tax Type unless Override Tax Rate is on. When the bill is split across more than one Allocate To line in Pre-tax mode, this value is back-calculated from the per-line tax and may show penny-rounding differences.
Gross AmountYesCurrencyThe bill's total including tax (total). Editable in Total mode; calculated (read-only) in Pre-tax mode. Cannot be zero.

Allocate To (job/equipment coding)​

The Allocate To grid — Job/Equipment, GL Account, Net Amount, Taxes, and the Split Expense toggle to add more than one allocation line — is the same grid described in How a bill gets coded to a job below, under the job-scoped view.

Assets / Receipts​

An attachment uploader (drag-and-drop or file picker) for the invoice PDF or photo, stored against the bill and shown in its Assets / Receipts section. Multiple files are supported.

A sticky bar at the bottom of the panel carries the approval controls (Reject / Approve), a Paid toggle, and Cancel / Save — see Approve, Reject, and Lock Workflow next.

note

On an instance with a connected desktop accounting system (Sage 50 Canada or Spectrum), the panel also shows a read-only Locked toggle and an Exported to [system] timestamp row. This demo instance has no accounting system connected, so neither row renders — see Accounting system connection for how that connection is set up.

Linking a Bill to a Work Order​

Where it is: On a job's Work Orders tab, open a work order → Materials → Add material → Add Custom (the custom-line editor) → Link to Expense. WOLinkExpenseModal in source.

What it's for: Marks a custom Work Order material line as already covered by an existing AP bill (or Employee Expense) on the same job, so the same cost isn't counted once through the WO line and again through the bill.

Link to Expense picker, opened from a custom Work Order material line — filters for GL Account, Type, Status, Vendor/Supplier, Submitted By, and Expense Date; shown empty on the demo instance (no expenses booked to this job yet)

ControlEffect
SearchMatches invoice number, vendor, submitter, or details.
GL AccountPre-filtered to the WO line's own GL account when opened from a line that already has one; clearable.
TypeAccount Payable or Employee Expense.
StatusThe expense's Payable/Expense Status.
Vendor / SupplierThe bill's vendor, or the expense submitter's claimed vendor.
Submitted ByWho entered the expense.
Expense DateDate range on the expense date.
Clear filtersResets all of the above.
Clicking a rowSelects that expense and returns to the WO line editor, which now shows "Cost captured by [vendor/claimant]" with an Unlink button.

Only expenses already booked to this job are listed — one booked to a different job or to no job at all does not appear, since linking one relieves this WO line from counting toward the job's actuals. On this demo instance the job behind the work order has no AP bills or employee expenses yet, so the picker shows "No expenses are booked to this job yet."

Approve, Reject, and Lock Workflow​

Statuses: every bill is one of In Review, Approved, or Rejected (there is no separate "Draft" status — a new bill lands In Review the moment it's saved, unless the creator also has approval rights and sets it to Approved or Rejected at creation).

  1. A user with Expense: Edit (but not Expense: Approve) fills in the bill and clicks Save. The bill is created with status In Review, and everyone who normally reviews AP bills gets an AP bill submitted notification.
  2. A user with Expense: Approve opens the bill. Instead of a plain Save/Cancel footer, they see the Payable Status action bar with Reject and Approve buttons (plus the Paid toggle described below).
    • Clicking Approve and saving sets status to Approved, notifies the bill's submitter (AP bill approved), and — if the bill is coded to a job — triggers a recalculation of that job's financials.
    • Clicking Reject opens a required reason field; saving sets status to Rejected and notifies the submitter (AP bill rejected).
    • Saving with neither pressed (or un-pressing one) returns the bill to In Review.
    • Moving a previously Approved bill to any other status re-triggers the job financial recalculation, so a reversed approval doesn't leave stale costs on the job.
  3. Locked (only shown once a desktop accounting system — Sage 50 Canada or Spectrum — is connected): a separate Expense: Lock permission gates this toggle. A locked bill cannot be edited or its status changed; the panel shows "This record cannot be modified as it has been transferred to Accounting for processing." Toggling lock is also available as a bulk action from the list (see below).
  4. Paid: the Paid toggle in the sticky footer marks the bill as reimbursed/settled (hasBeenReimbursed) independently of approval status. Once a payment method has been recorded, a read-only Paid Using row shows it.

Bulk Actions: Archive, Delete, Restore, Lock​

Select one or more rows' checkboxes to reveal the bulk action bar.

ActionEffectPermission
ArchiveMoves the selected bills to the Archived tab. Reversible via Restore.Base list edit rights
RestoreMoves archived bills back to Active.Base list edit rights
LockToggles Locked on the selected bills, the same field described above.Expense: Lock
DeleteRemoves the selected bills from the list entirely — before confirming, Appello reports how many related records would also be affected. Unlike Archive, there is no Deleted tab to restore from, so treat Delete as effectively permanent from this list's UI.Expense: Delete

Refresh from QuickBooks​

An individual In Review bill that is already linked to QuickBooks Online can be manually re-synced from its edit form with a Refresh from QuickBooks action next to the QuickBooks sync status badge — it re-pulls missing PDF attachments and refreshes QBO-sourced fields without waiting for the next webhook. It only appears when the bill is In Review, already QBO-linked, the signed-in user has Expense: Approve, and the QuickBooks Online → Appello Accounts Payable sync is enabled.

This is one part of the broader accounting connection; see Accounting system connection for how bills sync in both directions, how vendors/GL accounts/tax types are mapped, and the full AP sync: QuickBooks Online → Appello behavior. This page does not duplicate that detail.

Permissions and Settings​

NameTypeEffect on this page
Expense: ViewPermissionRequired to see Accounts Payable in the sidebar and open /expenses at all.
Expense: Edit (create/edit)PermissionRequired to create or edit a bill; without Approve, saving only ever lands the bill at In Review.
Expense: ApprovePermissionShows the Payable Status action bar (Reject/Approve) instead of a plain Save/Cancel footer; also required to see and use Refresh from QuickBooks.
Expense: LockPermissionEnables the Locked toggle (single-record and bulk); without it, the toggle is visible but disabled with a "You do not have permission to lock this expense" tooltip.
Expense: DeletePermissionRequired for the bulk Delete action.
Accounting System connectionInstance settingWhether an accounting system is connected (and which one — Sage 50 Canada, Spectrum, or QuickBooks Online) controls whether the Locked toggle and Exported to [system] row appear at all, and which one shows.
Default Tax TypeInstance settingPre-fills Tax Type on a new bill.
Include Tax in FinancialsInstance settingWhether the Outstanding AP / Total AP / Selected AP chips read Net or Gross.

Accounts Payable by Job​

The company-wide list above covers every AP bill across your instance. From a job's detail page you can see the same kind of list scoped to just that job — useful when you want to review what's been billed against a single job without filtering the full AP list yourself.

Navigation: Open a job, then Financials & Reporting → Accounts Payable

URL pattern: /jobs/{jobId}?tab=account-payable

Job-scoped Accounts Payable tab — the AP list filtered to one job, with the same columns, filters, and Outstanding/Total AP totals as the company-wide list

What it shows​

The job's Accounts Payable tab is the same list table as /expenses, pre-filtered to the current job:

  • Columns — Invoice Date, Invoice Number, Vendor/Supplier, GL Account, Job, Submitted By User, Submitted Date Time, Net/Tax/Gross Amount Allocated, and Net/Taxes/Gross Amount. The Job column and Job filter still appear even though the list is scoped to one job.
  • Filters — the same filter set as the company-wide list (Vendor/Supplier, Paid, Locked, Payable Status, Submitted By User, Job, GL Account, Invoice Date, Submitted Date Time), plus the All / Active / Archived tabs and a search box.
  • Totals — Outstanding AP (Net) and Total AP (Net) chips above the table, scoped to this job's bills only.
  • Create Account Payable — opens the same bill form as the company-wide list, but with Allocate To pre-set to Job and this job already selected.

How a bill gets coded to a job​

A bill's coding lives in the Allocate To grid near the bottom of the Account Payable form (below Net Amount / Tax Type / Gross Amount):

Create Account Payable form — the Allocate To grid with Job selected, a GL Account field, Net Amount, and the "+" button that adds a Cost Code sub-line

  1. Allocate To — choose Job (or Equipment) as the reference type for the line.
  2. Select the job (pre-filled when the bill is created from that job's Accounts Payable tab) and the GL Account to code the amount to.
  3. Enter the Net Amount for that line — the + button next to the line adds a Cost Code sub-line under it, so the same job allocation can be split across cost codes.
  4. Use Split Expense to add additional Job/Equipment allocation lines when one bill covers more than one job.
note

The instance used for these screenshots had no AP bills recorded against the job at the time of writing, so the job-scoped list above is shown in its empty state. The columns, filters, and totals are unchanged whether or not rows are present.

How AP Connects to Job Costing​

When an AP expense is approved and coded to a job's cost code, the amount posts to the job's financial summary. This feeds the earned-vs-burned analysis alongside labour costs from timesheets, and rolls into the job's cost-code breakdown — see Job Cost Report and Cost Codes & Schedule of Values.