Every transaction checked. Only the violations surface.
Brex transactions from the past month are pulled, matched line-by-line against your policy rules (meal limits, receipt thresholds, category requirements), and cross-referenced with Sage GL entries. What lands in your inbox is an exception report with 15 violations, not 500 rows.
Every Brex transaction checked against your expense policy and cross-referenced with Sage GL entries. The controller reviews 15 flagged exceptions instead of scanning 500 transactions.
What changes
| Dimension | Before | With Doe |
|---|---|---|
| Transactions reviewed | Controller manually scans each one | All 487 checked automatically; only exceptions surfaced |
| Time to audit | 2 full days per month | Report ready on the 1st; controller reviews in under an hour |
| Violations caught | Whatever the reviewer spots before fatigue sets in | Every violation, including fuzzy duplicate vendor matches |
| GL reconciliation | Done separately, often a week later | Included in the same scan with mismatches flagged |
How Doe scans for expense policy violations
Pulled 487 transactions from February. $342K total spend across 6 departments. 89 transactions over $500. 12 international charges. 34 recurring vendor payments.
GL entries for February pulled. 3 Brex transactions have no matching GL entry. 2 GL entries reference vendors not appearing in Brex data (possible manual payments booked incorrectly).
14 exceptions: 2 duplicate vendor charges ($2,400 and $890), 3 meals over the $75 per-person limit, 4 transactions missing receipt attachments, 2 charges with no expense category, and 3 Brex-to-GL mismatches. Each includes employee, date, amount, and specific policy violated.
The controller spends two days reviewing transactions that a policy check could catch in minutes.
Month ends. The controller exports 487 Brex transactions into a spreadsheet and starts reviewing. Duplicate charges, meals over the $75 limit, uncategorized spend, missing receipts. It takes two full days. By the time they finish, two more weeks of transactions have piled up.
The real problem is not the time. It is what gets missed. A $2,400 duplicate SaaS charge slipped through for three months because the vendor name was slightly different on the second charge. A team lead's $1,200 dinner was filed under "Client Entertainment" but had no client name attached. These violations are easy to catch when you check every line. Nobody checks every line.
Get started in under 10 minutes
Connect your tools
One-click OAuth for each integration. No API keys, no engineering.
Describe what you need
“On the 1st of each month, pull every Brex transaction and check against our expense policy: $75 per-person meal limit, receipts required over $25, no duplicate vendor charges. Cross-reference with our Sage GL.”
It runs on schedule
Runs on the 1st of each month and produces the exception report in Doe.
Expense Policy Compliance Scan FAQ
Yes. You define your rules: per-person meal limits, receipt thresholds, approved expense categories, vendor restrictions. Doe applies them line by line. When your policy changes, update the rules and the next scan uses the new version.
Related workflows
Stop doing the work your tools should do for you.
Set it up once. Doe runs it every time.