Finance playbook · AI Employee: Fin

Receipt Match & Policy Compliance

Missing-receipt rate < 2%

The problem

Corporate cards generate a stream of charges the cardholder is supposed to receipt-match within 30 days. Half don't. Finance chases receipts for weeks; cardholders forget which meal the $73 charge was; reconciliation ties up an accountant for a week each month. Policy compliance is inspected by sampling; the un-inspected 90% may or may not comply, and the auditor discovers the pattern at year-end.

At a glance
Trigger
Cron (daily)
Approvals
None
What it does
Read-only
Systems
Ramp · Brex · Expensify
How it feels in production

An hour-by-hour walkthrough.

Every corporate-card charge lands in Fin's queue as it clears. For each, Fin tries to auto-match against submitted receipts (from the reimbursement-intake flow, expense-tool captures, and email forwards). Match is by merchant + amount + date within a small window. Match rates vary: - Same-day match: ~40% (user forwards receipt right after charge) - 48-hour match: ~65% - 7-day match: ~78% - Unmatched at 30 days: ~10-15% For unmatched charges, Fin nudges the cardholder with the charge detail + reminder + one-click "upload receipt" or "missing receipt affidavit." Nudge escalates at 15, 25, and 30 days. At 30 days without a receipt or affidavit, cardholder's manager is CC'd; at 45 days, card can be suspended per policy (configurable — some companies never suspend, some auto-suspend hard). Policy checks run on every match: category matches expected merchant type (parking charge at a restaurant flags), amount within per-diem, business justification present. Policy flags open a Fin-drafted question to the cardholder with the specific concern; user answers or edits, Fin closes. Monthly reconciliation is what used to take a week: statement matches expense report line-by-line, exceptions surface with reason, finance signs off in an afternoon.
How it works

Step by step.

  1. 01

    Ingest card charges as they clear

    Direct integration with corporate card providers (Amex, Ramp, Brex, Airbase, Divvy). Charge cleared → immediately in Fin's queue with merchant, amount, date, MCC code, cardholder identity.

    Amex · Ramp · Brex · Airbase · Divvy · Card provider APIs
  2. 02

    Match against submitted receipts

    Match algorithm: merchant + amount + date window. Handles minor variations (currency conversion rounding, tips added to signed amount). Match confidence scored; low-confidence flagged for cardholder confirmation.

    Receipt corpus · Match engine
  3. 03

    Nudge for unmatched at 7/15/25/30 days

    Graduated nudge cadence via Slack / email / mobile. Cardholder can upload receipt, file missing-receipt affidavit, or dispute the charge (fraud / duplicate). Non-response escalates to manager at 30 days.

    Slack · Email · Mobile push · Cardholder registry
  4. 04

    Run policy checks on every match

    Category vs. merchant type (MCC), per-diem limits, business-justification presence, receipt image quality. Flags open Fin-drafted question; user resolves or CFO approves exception.

    Policy engine · Category-MCC registry
  5. 05

    Monthly reconciliation + audit-ready records

    Statement-to-expense-report reconciliation runs continuously. Month-end is a review + sign-off, not a construction. Exceptions bucketed for review; audit trail complete per line.

    Accounting · Audit log · CFO dashboard
Systems and wiring

What you connect to make this run.

Amex · Ramp · Brex · Airbase · Divvy

read+write

Direct card-provider integrations for charge stream. Write suspension events (extreme non-compliance), category updates, cardholder notes.

Concur · Expensify · Ramp · Expense platform

read+write

Expense report matching. Write matched receipts + policy-check status + business justifications. Read submitted receipts for match candidacy.

Slack · Email · Mobile push

read+write

Graduated nudge cadence. Cardholder response actions (upload receipt, file affidavit, dispute charge). Manager escalation at 30 days.

NetSuite · Sage · QuickBooks

read+write

Accounting system for reconciliation and GL posting. Fin writes categorised expense entries with cost-center + business-purpose narrative for audit-ready records.

What changes

Before and after, honestly.

Receipt-match rate within 7 days
Before
35-55%
After
80-92%
Unmatched charges at month-end
Before
20-35%
After
Under 5%
Time to close monthly reconciliation
Before
5-10 business days
After
1-2 business days
Policy violations caught at year-end audit
Before
8-25 per audit (sampling)
After
Zero at year-end (caught + resolved live)
Frequently asked

Answers about this playbook.

What if a cardholder disputes a charge as fraudulent?

Dispute flow: cardholder tags, Fin files with card provider, charge suspended pending resolution, alternative flow for the missing-legitimate-expense. Fraud pattern feeds security alerting.

How does it handle recurring charges (SaaS on card)?

Recurring charges auto-flag for setup as subscription with a persistent match rule ("Zoom monthly $199") — subsequent charges auto-match against the rule. Reduces cardholder nag on repeats.

What about split expenses (partial personal, partial business)?

Split-expense flow: cardholder marks business portion (with reason) + personal portion (reimburses company). Both amounts recorded; personal portion routed to payroll deduction or direct payment.

Can it suspend cards for policy violations?

Configurable per policy. Some companies never suspend (nudge-only), some auto-suspend after 45 days without receipt, some suspend on repeat category violations. Fin executes per policy.

How does it work with virtual cards (per-transaction)?

Virtual cards issued per intended purpose with pre-authorised amount + category. Match is one-shot (single expected charge), and mismatches (charge higher than authorised) flag immediately.

See it run on your data.

Free plan, no credit card. Connect the systems this playbook needs and run it against a past event first.