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.

circle-check

Setup

The following credentials and inputs are accepted:

Secrets:

  • partner_user_id (required) -> Your Expensify Integration Partner User ID

  • partner_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

  1. Log in to your Expensifyarrow-up-right account

  2. Go to Settings > Workspaces > select your workspace

  3. Navigate to Accounting or Connections section

  4. 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)

circle-exclamation

Using sling conns

Environment 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

Endpoint
Description
Incremental

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

Endpoint
Description
Incremental

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 present

  • Subsequent runs: Only fetches records modified after the last sync

The connector tracks:

  • last_approved for reports (based on the submitted date)

  • last_modified for expenses (based on the modified date)

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

circle-info

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]envelope, on discordarrow-up-right or open a Github Issue herearrow-up-right.

Last updated

Was this helpful?