These cookies are required for the website to function properly. They ensure security, enable basic features like page navigation, and store user session data. You cannot disable these cookies.
- Expense Reporting System
- Data model
The tables behind Expense Reporting System
Expense Reporting System ships with 18 tables, grouped here by the feature that uses them. Every record your team works with lives in one of them, and you can add fields and tables in Proto.
- Tables
- 18
- Features
- 6
- Change it
- Add fields and tables in Proto
Every table, by feature
- Expense capture6
- Expense policies6
- Mileage and travel7
- Approval workflow6
- Reimbursements5
- Corporate cards7
- Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match) - Receipts
The supporting documentation — phone snap, PDF, emailed receipt forwarded to a capture inbox. OCR runs on upload and backfills the parsed fields; the submitter (or auto-fill on high-confidence parse) writes the canonical values onto the expense line.
Linked to Expense lines - Card transactions
The daily transaction feed from the card program. One row per posted swipe / charge / refund. New rows land via the
Linked to Corporate cards, Expense lines (set when matched)card-transaction-feed-importworkflow withStatus: Unmatched; thecard-txn-to-expense-line-matchworkflow advances them toMatchedon a unique expense line pairing. - Mileage entries
One row per business trip drive. Either the user enters From / To addresses and the
Linked to Expense lines (the auto-created Mileage line), Vehicles, Mileage rates (resolved from EntryDate.year)mileage-calculation-from-google-mapsworkflow computes Miles, or the user enters Miles directly with an odometer-style override. Calculated reimbursement uses the active mileage rates row for the entry date’s tax year. - Meals and entertainment
The meals and entertainment classification log for tax review. One row per expense line where
Linked to Expense linesCategory.MealsAndEntertainment = true. Carries the attendee list and business purpose required for the deduction; drives the M&E memo on the GL posting and the M&E detail report.
- Expense policies
Policy header. Scope: Org / Department / Role. One default Org policy plus targeted overrides. Active policies are evaluated by
policy-violation-flagon every line submission. - Policy rules
The declarative rules. One row per per-diem cap, alcohol limit, weekend trigger, single-meal ceiling, receipt-required override, or M&E attendee-list requirement. Each rule has a Severity that governs whether it warns, requires justification, or blocks submission.
Linked to Expense policies, Expense categories (null = all), Per diem rates (when RuleType = PerDiemCap) - Expense categories
The category catalog. Drives default GL coding, receipt-required threshold per category, M&E classification flag, and per-category policy hooks. Active categories appear in the line-entry picker.
- Policy violations
One row per breached policy rules row per expense line. The
Linked to Expense lines, Policy rules, Employees (the approver who passed it through)policy-violation-flagandfraud-pattern-detectionworkflows write these. Violation count on the parent report rolls up. Severity governs the submission gate — Block prevents the submitter from advancing the report. - Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match)
- Mileage entries
One row per business trip drive. Either the user enters From / To addresses and the
Linked to Expense lines (the auto-created Mileage line), Vehicles, Mileage rates (resolved from EntryDate.year)mileage-calculation-from-google-mapsworkflow computes Miles, or the user enters Miles directly with an odometer-style override. Calculated reimbursement uses the active mileage rates row for the entry date’s tax year. - Mileage rates
The per-tax-year mileage reimbursement rate. Defaults to the IRS standard mileage rate published annually (e.g. 67¢/mi for 2024, 70¢/mi for 2025); a company-override row supersedes the IRS row for a given year and
RateScope. - Per diem rates
GSA-style per-diem rates by US city / locality and effective fiscal year. Drives the
PerDiemCapPolicy rules rows for Lodging, M&IE, and Conference per-diem. Refreshed annually from the GSA per-diem publication. - Vehicles
The submitter’s registered personal vehicle(s) used for business mileage. Mileage entries reference one Vehicle so the audit trail captures which car drove which trip.
Linked to Employees - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match) - Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Meals and entertainment
The meals and entertainment classification log for tax review. One row per expense line where
Linked to Expense linesCategory.MealsAndEntertainment = true. Carries the attendee list and business purpose required for the deduction; drives the M&E memo on the GL posting and the M&E detail report.
- Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match) - Expense approval steps
The audit trail of approver actions on the report. One row per step in the chain — Manager, Finance Reviewer, optionally Controller for high-value. Each step records who approved / rejected / held, when, and what they wrote in the comment.
Linked to Expense reports, Employees - Policy violations
One row per breached policy rules row per expense line. The
Linked to Expense lines, Policy rules, Employees (the approver who passed it through)policy-violation-flagandfraud-pattern-detectionworkflows write these. Violation count on the parent report rolls up. Severity governs the submission gate — Block prevents the submitter from advancing the report. - Receipts
The supporting documentation — phone snap, PDF, emailed receipt forwarded to a capture inbox. OCR runs on upload and backfills the parsed fields; the submitter (or auto-fill on high-confidence parse) writes the canonical values onto the expense line.
Linked to Expense lines - Employees
A scoped employee identity directory synchronized from the organization identity or HR source. This reference supports ownership and approval attribution; it does not add payroll or HR administration. Role membership alone never grants access to every directory field. External auditors and portal users receive only the identities needed for their granted work.
- Reimbursements
The paid-out record. One row per expense report per reimbursement channel. Reimbursement method selects whether the cash leg rides the next Payroll run as an
Linked to Expense reports, EmployeesOneTimePaymentor the next AP cycle as a separate ACHPaymentsMadeagainst the Employee-as-Vendor record. Reimbursement method copies from expense policy reimbursement channel at creation but persists independently — policy changes after report submission do not retro-route an in-flight reimbursement. The dual-destination pattern (payroll one time payment ref vs payment run ref) means an in-flight reimbursement keeps its original routing path. - Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match) - Expense approval steps
The audit trail of approver actions on the report. One row per step in the chain — Manager, Finance Reviewer, optionally Controller for high-value. Each step records who approved / rejected / held, when, and what they wrote in the comment.
Linked to Expense reports, Employees - Employees
A scoped employee identity directory synchronized from the organization identity or HR source. This reference supports ownership and approval attribution; it does not add payroll or HR administration. Role membership alone never grants access to every directory field. External auditors and portal users receive only the identities needed for their granted work.
- Corporate cards
Issued company cards. One Cardholder per card; a Cardholder may hold multiple cards. Card last4 is the only card-number field stored — the full PAN never enters the system (the card-program integration uses tokenized references).
Linked to Employees - Card transactions
The daily transaction feed from the card program. One row per posted swipe / charge / refund. New rows land via the
Linked to Corporate cards, Expense lines (set when matched)card-transaction-feed-importworkflow withStatus: Unmatched; thecard-txn-to-expense-line-matchworkflow advances them toMatchedon a unique expense line pairing. - Card reconciliations
Period-end (typically monthly) reconciliation per corporate card. Compares the issuer statement balance to the sum of imported card transactions. On Controller-approved reconciliation, advances all eligible in-period card transactions from
Linked to Corporate cards, Employees, Employees (Controller / CFO signs the reconciliation)Matched → Reconciledand the corresponding APBillsrow to the card issuer is marked ready for payment. - Expense reports
The submitter’s report header. One report aggregates many expense lines for a single trip, project, or pay period. Lifecycle: Draft → Submitted → approved by mgr → approved by finance → Reimbursed; with branches Held and Rejected. Reimbursed is set when the downstream Payroll or AP cycle confirms payment.
Linked to Employees, Expense policies (resolved at submit by submitter scope) - Expense lines
The line grain. One row per receipt / per per-diem day / per mileage trip. Carries the GL coding, project costing, approved amount (set by the approver — may differ from Amount when a partial disallowance applies), and payment method (out of pocket vs corporate card) that drives the reimbursement branch.
Linked to Expense reports, Expense categories, Per diem rates, Card transactions (set on match) - Receipts
The supporting documentation — phone snap, PDF, emailed receipt forwarded to a capture inbox. OCR runs on upload and backfills the parsed fields; the submitter (or auto-fill on high-confidence parse) writes the canonical values onto the expense line.
Linked to Expense lines - Employees
A scoped employee identity directory synchronized from the organization identity or HR source. This reference supports ownership and approval attribution; it does not add payroll or HR administration. Role membership alone never grants access to every directory field. External auditors and portal users receive only the identities needed for their granted work.
Migration order
- Employees, expense policies, policy rules and expense categories establish ownership and the governing rules.
- Vehicles, mileage rates and per diem rates retain reviewed travel references and effective intervals.
- Corporate cards and card transactions preserve card assignment and stable issuer transaction identities.
- Expense reports, expense lines, Receipts, mileage entries and meals and entertainment retain the claim and its evidence.
- Policy violations and expense approval steps retain findings and revision-specific decisions.
- Reimbursements and card reconciliations preserve the separate employee and issuer settlement trails.
Financial identity
Employee payable amount includes eligible approved out of pocket, Mileage and per diem lines and excludes company-card costs. A stable source key and external confirmation reference prevent duplicate reimbursement. Preserve approved report revisions and source calculation bases; correction must not silently rewrite earlier decisions.
Set up Expense Reporting System your way.
Start free, then use Proto to change fields, steps and approvals before your team goes live.