For Agents
Export expense reports, create expenses and reports, manage employee lists, and configure policies through Expensify's Integration Server endpoint.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Expensify API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fexpensify.com%2Fexpensify" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fexpensify.com%2Fexpensify" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Expensify API.
Export expense reports in configurable formats using Freemarker templates
Create expense entries programmatically with merchant, amount, and category details
Generate expense reports from a list of transactions and submit for approval
GET STARTED
Use for: I need to export all approved expense reports from last month, Create a new expense entry with receipt data for a team member, I want to add a list of new employees to an Expensify policy, Get the status of a previously submitted export job
Not supported: Does not process payments, issue cards, or handle accounting ledger entries - use for expense reporting, approval workflows, and policy management only.
Jentic publishes the only available OpenAPI specification for Expensify API, keeping it validated and agent-ready. Export expense reports, create reports and expenses, manage employees, and update policy configurations through a single Integration Server endpoint. All operations use a requestJobDescription JSON payload that specifies the job type (e.g., export, create, update) and parameters. Supports template-based exports, automated report creation, and policy rule management for enterprise expense workflows.
Synchronise employee rosters between HR systems and Expensify policies
Update policy rules including approval workflows, categories, and tag hierarchies
Patterns agents use Expensify API for, with concrete tasks.
★ AI Agent Expense Export Automation
AI agents use the Expensify API through Jentic to export expense reports, check job statuses, and pull financial data without managing partner credentials directly. The agent searches Jentic for 'export expense reports', receives the /ExpensifyIntegrations endpoint schema with the required requestJobDescription payload structure, and executes. Jentic handles credential injection so the agent never sees raw partnerUserID or partnerUserSecret values.
Submit an export job for all approved reports from April 2026 using the /ExpensifyIntegrations endpoint with type 'file' and reportState 'APPROVED', then poll until the job completes and retrieve the download URL
Expense Creation and Submission
Create individual expenses with merchant name, amount, currency, date, and category, then assemble them into reports for submission. The API accepts expense data via the create job type and assigns them to the specified employee's policy. Reports can be auto-submitted for approval once all required fields are populated.
Create three expense entries (hotel $250, taxi $45, dinner $78) for employee user@company.com with today's date, then generate a report named 'NYC Trip April 2026' containing all three
Employee Policy Management
Synchronise employee rosters between HR systems and Expensify policies. Add new hires, remove departing employees, and update reporting hierarchies through the API. The update job type supports bulk employee list operations, enabling automated onboarding and offboarding workflows that keep Expensify in sync with the company directory.
Add three new employees to the 'Engineering' policy with their email addresses and set their approver to manager@company.com
Template-Based Report Export
Export expense data in custom formats using Freemarker templates. Define output structure for CSV, JSON, or custom formats, then trigger exports filtered by date range, policy, report state, or employee. The export runs asynchronously - submit the job, poll for completion, then download the generated file from the returned URL.
Submit an export job with a Freemarker template that outputs merchant, amount, category, and date as CSV for all REIMBURSED reports in the 'Sales' policy from Q1 2026
1 endpoints — jentic publishes the only available openapi specification for expensify api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/ExpensifyIntegrations
Single endpoint for all operations via requestJobDescription payload
/ExpensifyIntegrations
Single endpoint for all operations via requestJobDescription payload
What agents get from Jentic-routed access to this vendor.
Setup
Wiring the Expensify API by hand means learning its partnerUserID and partnerUserSecret query credentials and hand-building the requestJobDescription payload the single integration endpoint expects. Through Jentic you install once, import Expensify from the API Directory, store the credentials once, and your agent calls it.
Permission scoping
Expensify routes every action through one endpoint (POST /ExpensifyIntegrations) with the job type set in the request body, so scope the agent to the job types it needs, such as exporting reports. Job types you leave out, like creating expenses, stay unavailable unless you add them.
Credential isolation
Your Expensify partnerUserID and partnerUserSecret are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'export expense reports' or 'create an expense', and Jentic returns the /ExpensifyIntegrations operation with its requestJobDescription schema so the agent builds the right payload without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using Expensify API through Jentic.
Why is there no official OpenAPI spec for Expensify API?
Expensify does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Expensify API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.
What authentication does the Expensify API use?
Expensify uses partner credentials - a partnerUserID and partnerUserSecret included in the requestJobDescription JSON payload on every request. Through Jentic, these credentials are stored encrypted in your Jentic One instance and injected into requests automatically - agents never handle raw partner secrets.
How does the single-endpoint architecture work?
All Expensify API operations go through POST /ExpensifyIntegrations. The request body contains a requestJobDescription field specifying the operation type (e.g., 'file' for export, 'create' for new records). Parameters, filters, and templates are passed within this JSON structure. The response varies by job type - exports return a job ID for async polling, while creates return immediate confirmation.
Can I export expense reports in custom formats with the Expensify API?
Yes. Set the type to 'file' in the requestJobDescription and provide a Freemarker template defining the output format. The template has access to report fields including merchant, amount, category, date, and policy. Exports run asynchronously - poll the returned job ID until status is 'complete', then download from the file URL.
How do I export expense reports through the Expensify API via Jentic?
Search Jentic for 'export expense reports', then load the /ExpensifyIntegrations operation schema. Build the requestJobDescription with type 'file', specify reportState and date filters, and Jentic handles credential injection. Poll the job until complete, then retrieve the download URL. Install with pip install jentic and run it through Jentic One, the self-hosted execution layer.
Can I add employees to an Expensify policy programmatically?
Yes. Use the requestJobDescription with type 'update' and command 'policyList' to manage employee rosters. Provide the policy ID, a list of employee email addresses, and their approval chain settings. This enables automated onboarding when new hires are added to HR systems.
Can I limit what my agent is allowed to do with the Expensify API?
Yes. Because Jentic One is self-hosted, you set the rules that decide which Expensify operations and credentials your agent may use. Every Expensify action runs through the single POST /ExpensifyIntegrations endpoint with the job type set in the request body, so you can scope the agent to only the job types it needs, such as exporting reports. Job types you leave out, like creating expenses or updating policy rosters, stay unavailable unless you add them.