Expensify
Connect & Ingest data from Expensify
Expensify is an expense management platform that automates receipt scanning, expense reporting, and reimbursement. The Sling Expensify connector extracts data from the Expensify Integration Server API, supporting policies, categories, tags, employees, reports, and individual expenses.
CLI Pro Required: APIs require a CLI Pro token or Platform Plan.
Setup
The following credentials and inputs are accepted:
Secrets:
partner_user_id(required) -> Your Expensify Integration Partner User IDpartner_user_secret(required) -> Your Expensify Integration Partner User Secret
Inputs:
anchor_date(optional) -> The starting date for historical data extraction (default: 1 year ago). Format:YYYY-MM-DD
Getting Your API Credentials
Log in to your Expensify account
Go to Settings > Workspaces > select your workspace
Navigate to Accounting or Connections section
Under Integration Partner Credentials, generate or view your:
Partner User ID (typically in the format
aa_yourname_domain_com)Partner User Secret (a long hex string)
Important: You need administrator access to the workspace to generate API credentials. The credentials provide access to all policies/workspaces the account can access.
Using sling conns
sling connsEnvironment Variable
See here to learn more about the .env.sling file.
Sling Env File YAML
See here to learn more about the sling env.yaml file.
With anchor date for historical data:
Replication
Here's an example replication configuration to sync Expensify data to a PostgreSQL database:
Sync only reports and expenses:
Endpoints
Policy Data
policies
List of all accessible policies/workspaces
No
policy_categories
Expense categories for each policy
No
policy_tags
Tags/labels for each policy
No
policy_employees
Employees/members for each policy
No
policy_report_fields
Custom report fields for each policy
No
Expense Data
reports
Expense reports (all states: Open, Submitted, Approved, Reimbursed, Archived)
Yes
expenses
Individual expense transactions within reports
Yes
To discover available endpoints:
Incremental Sync
The reports and expenses endpoints support incremental sync using date-based filtering:
First run: Fetches all records from
anchor_date(default: 1 year ago) to presentSubsequent runs: Only fetches records modified after the last sync
The connector tracks:
last_approvedfor reports (based on thesubmitteddate)last_modifiedfor expenses (based on themodifieddate)
Rate Limiting
Expensify's Integration Server API has strict rate limits. The connector:
Uses conservative rate limiting (~1 request per 3 seconds)
Limits concurrency to 1 request at a time
Automatically retries with exponential backoff on 429 (rate limit) and 400 responses
If you encounter rate limit errors, try running streams individually rather than all at once.
If you are facing issues connecting, please reach out to us at [email protected], on discord or open a Github Issue here.
Last updated
Was this helpful?