FS-DOC-03Operations
Process Runbook / SOP
Expense Management Automation
[YourCompany.com] · Finance Department · Prepared by FullSpec · [Today's Date]
This runbook is your day-to-day operating reference for the automated expense management process. It tells you exactly what the system does on its own, where your team steps in, how to handle anything that goes wrong, and how to keep the automation running smoothly over time. FullSpec built and configured everything described here. Your responsibility is the single human checkpoint and the occasional exception that needs a judgement call.
01Process overview
This automation manages the full expense claim lifecycle for your business. When an employee submits a claim in Expensify, the system extracts the receipt data, checks it against your expense policy, assigns the correct GL code, routes the claim to the right manager for approval via Slack, posts the finalised record to Xero, queues the reimbursement in Gusto, and notifies the employee by email. The only step that stays with a person is reviewing claims that are flagged or rejected as exceptions. Routine, compliant claims move from submission to reimbursement queue in under two hours without any manual handling.
Process name
Expense Management Automation
Trigger
An employee submits an expense claim in Expensify with a receipt attached
Final output
Approved Xero spend record, Gusto reimbursement queue entry, and a confirmation email to the employee
Agents running
Receipt Extraction and Policy Agent; GL Coding and Xero Sync Agent; Approval Routing and Notification Agent
Tools involved
Expensify, Xero, Slack, Gmail, Gusto, Google Drive
Weekly volume
Approximately 30 claims per week (120 per month)
Human checkpoint
Finance Admin reviews flagged or rejected claims only (exceptions, not routine claims)
Process owner
[Your name] — Finance Admin / Bookkeeper
Process Runbook / SOPPage 1 of 4
FS-DOC-03Operations
02Step-by-step: what happens and who acts
What you actually need to do: Your only regular task in this process is reviewing claims that the system has flagged as non-compliant or that a manager has rejected. You will receive a Slack notification or Gmail alert when one of these arrives. Everything else, from reading the receipt through to queuing the reimbursement in Gusto, is handled automatically.
Step
What happens
Who acts
Type
1
An employee submits an expense claim in Expensify, attaching a receipt photo or PDF along with the amount, date, and merchant name. This submission immediately triggers the automation to begin processing.
Employee
Human
2
The Receipt Extraction and Policy Agent reads the submitted receipt, extracts key fields including amount, date, merchant name, and currency, then checks every field against the configured expense policy rules. Claims that pass all checks move forward instantly. Claims that fail are given a specific flag reason and held for exception handling.
Automation
Automated
3
If the receipt is missing, unreadable, or the amount does not match the claim, a templated follow-up email is sent automatically via Gmail asking the employee to resubmit the correct document. The claim is paused until a valid receipt arrives or the timeout period is reached.
Automation
Automated
4
For claims that pass the policy check, the GL Coding and Xero Sync Agent maps the verified claim to the correct general ledger code using merchant category and description matching. It then creates a draft spend money record in Xero with the receipt attached and all fields pre-filled, ready for final approval.
Automation
Automated
5
The Approval Routing and Notification Agent sends a Slack message to the relevant department manager, including the claim details, receipt preview, and one-click approve or reject actions. If the manager has not responded within 24 hours, a reminder is sent automatically.
Automation
Automated
6
If the manager rejects the claim, the Finance Admin receives a notification with the rejection reason. The Finance Admin reviews the rejection, communicates with the employee if needed, and decides whether to override the decision or close the claim. This is the only step that requires regular human judgement.
Finance Admin
Human
7
On manager approval, the automation finalises the Xero spend money record and marks it as approved and ready for reconciliation. No manual entry is required.
Automation
Automated
8
The approved reimbursement amount is added to the employee's next payroll run in Gusto as an expense reimbursement line. The system uses the employee's Gusto profile to match the claim to the correct payroll entry without any manual data input.
Automation
Automated
9
A confirmation email is sent via Gmail to the employee, stating that their claim has been approved and specifying the payroll date on which the reimbursement will appear. The process is complete for this claim.
Automation
Automated
Process Runbook / SOPPage 2 of 4
FS-DOC-03Operations
03Handling exceptions
Situation
What the system does
What you do
Receipt is missing or unreadable when the claim is submitted
The Receipt Extraction and Policy Agent flags the claim and automatically sends a templated Gmail chase email to the employee requesting a clear receipt. The claim is paused for up to 72 hours awaiting resubmission.
No immediate action needed. If the employee does not respond within 72 hours, you will receive an alert. Contact the employee directly and either obtain the receipt or close the claim with a note explaining why it was declined.
A duplicate claim is submitted by an employee
The system detects a matching combination of employee, merchant, date, and amount already present in Expensify or Xero within the past 30 days. The duplicate is automatically flagged and held, and a notification is sent to the Finance Admin.
Review the flagged duplicate in Expensify. If it is genuinely a second, different transaction on the same day at the same merchant, approve it manually and add a note. If it is a true duplicate, reject it in Expensify and notify the employee via Gmail that the claim was a duplicate of one already being processed.
A merchant or GL code cannot be matched automatically
The GL Coding and Xero Sync Agent is unable to match the merchant to a known GL category. The claim is placed in a review queue and a notification is sent to the Finance Admin with the unmatched merchant name and the raw claim details.
Open the claim in the review queue, assign the correct GL code manually in Xero, and add the merchant-to-GL mapping to the configuration table so future claims from the same merchant are coded automatically. Contact FullSpec at support@gofullspec.com if you need help updating the mapping table.
A manager does not respond to the Slack approval request
A reminder is sent automatically after 24 hours. If there is still no response after a further 48 hours (72 hours total from the initial request), the claim is escalated and a notification is sent to the Finance Admin.
Contact the manager directly to prompt a decision. If the manager is unavailable, check who holds delegated approval authority and forward the Slack approval request to that person. Update the manager assignment rules in the system if approval authority has permanently changed.
A claim is rejected by the manager
The automation marks the Xero draft record as rejected, notifies the Finance Admin via Slack with the rejection reason provided by the manager, and holds the Gusto reimbursement entry.
Review the rejection reason. Contact the employee to explain the outcome. If the rejection was an error or a policy exception applies, you can override the decision by approving the claim manually in Xero. Document any policy exceptions with a note on the record for audit purposes.
Expensify, Xero, Slack, or Gusto is temporarily unavailable
The automation platform detects the connection failure and pauses processing for the affected tool. It retries automatically at five-minute intervals for up to one hour. If the tool is still unavailable after one hour, all pending claims are held in a queue and the Finance Admin receives a system alert.
Check the status page for the affected tool to confirm whether an outage is in progress. No data is lost during the outage window. Once the tool comes back online, the automation resumes processing the held queue automatically. If the outage lasts longer than four hours and claims are time-sensitive, contact FullSpec at support@gofullspec.com for manual intervention guidance.
04Who to contact and when
Fill in the rows below once your team is confirmed. Keep this table updated whenever a role changes hands, so everyone knows where to go when an exception or escalation arises.
Role
Name
How to reach them
Process owner / Finance Admin
[Your name]
[Your email]
Department Manager (primary approver)
[Your name]
[Rep email]
Backup approver / Finance Manager
[Your name]
[Rep email]
Gusto payroll administrator
[Your name]
[Rep email]
FullSpec builder
FullSpec team
support@gofullspec.com
FullSpec support (bugs, outages, config changes)
FullSpec support
support@gofullspec.com
For any change to the expense policy rules, GL mapping table, manager assignment logic, or Gusto payroll integration, contact FullSpec at support@gofullspec.com before making changes directly in connected tools. Changes made directly to Xero chart of accounts or Gusto employee records without updating the automation configuration can cause GL coding failures or misdirected reimbursements.
Process Runbook / SOPPage 3 of 4
FS-DOC-03Operations
05Ongoing maintenance
Whenever the expense policy changes
Send the updated policy document to FullSpec at support@gofullspec.com so the policy rule set inside the Receipt Extraction and Policy Agent can be updated before the new rules take effect. Do not wait until claims start failing under the new policy.
Finance Admin + FullSpec
Whenever a new GL code or merchant category is added to Xero
Notify FullSpec so the GL mapping table used by the GL Coding and Xero Sync Agent can be updated. In the meantime, any claims with an unmapped merchant will land in your review queue and need manual GL assignment.
Finance Admin + FullSpec
Monthly spot-check (first week of each month)
Review five to ten processed claims from the prior month in Xero and Expensify to confirm that GL codes, receipt attachments, and Gusto reimbursement entries are correct. Flag any discrepancies to FullSpec.
Finance Admin
Weekly error-log review (every Monday)
Open the error notification summary sent by the automation platform each Monday morning. Check for any claims that failed, timed out, or could not be matched. Resolve outstanding items in the review queue before new claims accumulate.
Finance Admin
Whenever a team member joins, leaves, or changes role
Update the approver assignment rules with FullSpec so Slack approval requests route to the correct manager. Also update Gusto employee records and Expensify user permissions to reflect the change. Outdated routing will send approval requests to the wrong person.
Finance Admin + FullSpec
Quarterly volume review
At the end of each quarter, compare actual claim volumes against the baseline of 120 claims per month. If volume has grown significantly, review whether the current tool tier limits (Expensify seats, Gusto plan) and automation throughput are still adequate. Share the volume data with FullSpec so configuration can be scaled if needed.
Finance Admin + FullSpec
The most common maintenance issue for this process is an outdated GL mapping table. When new merchants appear or the chart of accounts in Xero is extended, the automation cannot match the transaction and the claim lands in the manual review queue. Checking the unmapped-merchant log monthly and keeping FullSpec informed of any Xero chart of accounts changes will prevent this queue from building up.
Process Runbook / SOPPage 4 of 4