
Connect your stack
27 native integrations. 3,200+ tools via managed connectors. Most are one-click OAuth, some use API keys - Viktor handles auth and starts working. No webhooks, no Zapier zaps.
Viktor is an AI employee that connects to Expensify with a scoped API key and helps you track employee expenses, corporate cards, and business travel, running 9 Expensify actions for you like Get Report, List Reports, and List Policies. Ask in plain English in Slack or Microsoft Teams; Viktor does the work in Expensify and reports back. Setup takes about two minutes.
Free to start · No credit card · SOC 2 Type 1 · Works in Slack & Microsoft Teams
Messages you'd actually send. Paste one into Slack or Microsoft Teams, swap in your specifics, and Viktor takes it from there.
“Check Expensify for expense reports awaiting my approval and summarize them.”
— you, in Slack or Teams
“Find receipts missing from this month's Expensify report and remind the team.”
— you, in Slack or Teams
“Watch Expensify for a purchase over the policy limit and alert me right away.”
— you, in Slack or Teams
“Book this trip in Expensify within the standard policy and send me the itinerary.”
— you, in Slack or Teams
Ask in plain English in Slack or Microsoft Teams. Viktor picks the right Expensify actions, runs the work, and reports back. No workflows to build.
Mark an APPROVED Expensify report as REIMBURSED via the Integration Server reportStatus updater. This is the only report-status transition the API supports — Approve and Reject are not available (attempting APPROVED returns responseCode 410). Use List Reports with reportState=APPROVED to find reports eligible for reimbursement.
Search Expensify reports by state and/or date range and return a structured JSON array of report summaries (reportID, reportName, total, status, submitterEmail, etc.), NOT a file. Use this to find reports before acting on them. Under the hood this calls the Report Exporter with an embedded Freemarker JSON template and reads the result in memory (no /tmp file written). You must provide either a reportState or a startDate/endDate range. Note: OPEN reports cannot be returned when an employeeEmail filter is set (API restriction). Use List Policies to discover valid policy IDs for the optional policyId filter. Use Get Report to retrieve a single report's full expense line items.
Retrieves a list of policies.
List individual expenses (transactions) for an employee within a date range, returning a structured JSON array (each with amount, currency, merchant, created date, category, receiptURL, reportID). NOT a file. Implemented via the Report Exporter with an embedded Freemarker JSON template that flattens transactionList, read in memory. Use List Policies to discover valid IDs for the optional policyId filter. To read all expenses on one specific report, use Get Report instead.
Retrieve a single Expensify report by ID, returning a structured object with the report metadata plus its complete expense line-item list (per-expense amount, currency, merchant, date, category, receiptURL, etc.). NOT a file. Implemented via the Report Exporter with reportIDList set to the given ID and an embedded Freemarker JSON template read in memory. Use List Reports to discover report IDs. This action also covers per-expense reads: the returned transactionList contains full expense details, so a separate expense-by-ID lookup is unnecessary.
Export Expensify reports to a file (csv, xls, xlsx, txt, pdf, json, xml).
Export a report to PDF.
Creates a new report with transactions in a user's account.
Creates a new expense.

27 native integrations. 3,200+ tools via managed connectors. Most are one-click OAuth, some use API keys - Viktor handles auth and starts working. No webhooks, no Zapier zaps.
Message Viktor in Slack like you'd message a teammate. "Check Expensify for expense reports awaiting my approval and summarize them." "Find receipts missing from this month's Expensify report and remind the team." Plain English, any tool.
Viktor opens Expensify, runs the work, and posts back what changed. Sensitive actions wait for your approval. Everything is logged. You stop doing the work and start reviewing it.
A Expensify AI agent is an AI that connects to your Expensify account and completes work in it - it doesn't just answer questions about Expensify, it takes the actions. Viktor is that agent: an AI employee that works in Expensify on your behalf and delivers the finished result in Slack or Microsoft Teams.
Unlike workflow builders such as Zapier or Make, there is nothing to configure - no triggers to map, no workflows to maintain. You describe the outcome in plain English, and Viktor picks the right Expensify actions, chains them with the other 3,200+ tools it connects to, and asks for approval before anything sensitive runs.
From unlimited receipt scanning and mileage tracking to next-day reimbursement, automate your preaccounting system with an easy to use expense tracking app.
Scoped API keys - Viktor stores your key securely, uses only the scopes you grant, and you can revoke it at any time.
Review-first approvals: sensitive Expensify actions wait for your sign-off before they run.
Isolated compute per team, encrypted in transit and at rest - and your data is never used to train models.
SOC 2 Type 1 compliant, with Type 2 and ISO 27001 in progress.
Yes. Expensify is one of the 3,200+ tools Viktor connects to, via a managed connector. Once connected, anyone on your team can put Viktor to work in Expensify from Slack or Microsoft Teams - no workflow builder, no code.