Skip to content

Expense approvals

The Expense Approvals screen is an admin queue listing every expense that a member has submitted but an admin has not yet approved or rejected. Each row shows the submitter, the category, the amount, the date, any attached receipt, and a set of approve / reject actions.

Approving an expense creates an expense credit transaction in the submitter’s ledger, offsetting their charges by the expense amount. Rejecting an expense simply closes the submission; no transaction is written.

  • Owner, admin, and treasurer (admin) — full access.
  • Members — do not see this screen. Members see the status of expenses they submitted on their own balance view.

In the app:

  1. Open the syndicate.
  2. Go to the Dashboard tab.
  3. Open Pending Expenses (admin-visible tile).

Route: /syndicates/:syndicateId/expenses/pending.

Each row in the queue shows:

FieldNotes
SubmitterMember display name plus avatar.
CategoryFree-text label picked by the submitter (e.g. Fuel, Oil, Landing fees, Maintenance).
AmountCurrency figure plus unit (e.g. litres of fuel) if the category uses consumables.
DateThe expense date chosen by the submitter, not the submission time.
ReceiptIf a receipt was attached, a thumbnail and a View receipt action.
ApprovePrimary action. Creates the credit transaction.
RejectSecondary action. Closes the submission.

A Reject requires the admin to add a reason, which is shown to the submitter on the status of that expense.

  • Approval writes one transaction. A successful approval writes an Expense credit debit/credit entry into the submitter’s ledger. See Transaction types.
  • Rejection writes nothing. The submission is marked rejected; no financial record is created.
  • Approve and Reject are online-only. Both buttons disable when the device is offline and surface Approval needs a connection — try again when you’re online if tapped. They re-enable automatically when the connection returns. The queue itself is still readable offline (it reads from the synced expenses projection); only the actions are blocked.
  • Receipts are served via signed URLs. Like usage photos, receipts are fetched through a 15-minute signed URL, so reloading the receipt after a long pause re-issues a fresh link.
  • Queue is live. The list updates in real time as other admins act on expenses or as members submit new ones.
  • Empty state. When there is nothing to approve, the screen shows a friendly “All caught up!” state instead of an empty list.