Head to head · Spend transactions · October 2026 research run

BILL vs Expensify

BILL scores 60.9 (C) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments & pricing. Both do spend transactions.

Which one, for what

BILL C

Good for A US company already on BILL that wants an agent to create and read bills, run approvals, schedule vendor payments, raise invoices and manage budgets, vendor cards, card transactions and reimbursements.

Ahead on

  • Reliability, 81 against 62
  • Schema & documentation, 83 against 28
  • Agent ergonomics, 60 against 45
  • Security & auth, 56 against 34
  • Maintenance & community, 32 against 23
  • Transparency & trust, 66 against 58

Watch for

POST /v3/login takes a user's username and password with a developer key, and the session carries that user's role with no scopes

Expensify E

Good for A finance team already on Expensify that wants an agent to export approved reports to an accounting system, create expenses and reports, keep categories, tags and employees in step with an HR system, or mark reports reimbursed.

Ahead on

  • Payments & pricing, 30 against 25

Watch for

No OpenAPI spec, llms.txt, version number or changelog was found for the Integration Server API

Score by category

CategoryWeight this runBILLExpensifyEdge
Reliability16%208162BILL +19
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28328BILL +55
Agent ergonomics13%16.26045BILL +15
Security & auth14%17.55634BILL +22
Payments & pricing10%12.52530Expensify +5
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.83223BILL +9
Transparency & trust7%8.86658BILL +8
Negative events≤1500
Total60.9 · C41.1 · E

Facts side by side

FactBILLExpensify
KindHTTP APIHTTP API
VendorBILL Holdings, Inc.Expensify, Inc.
Hosted endpointhttps://gateway.prod.bill.com/connecthttps://integrations.expensify.com/Integration-Server/ExpensifyIntegrations
TransportsHTTPHTTP
AuthOAuth or keyOAuth or key
PricingFreemiumFreemium
x402nono
LicenceProprietary service under the BILL Developer Terms and the BILL General Terms of ServiceProprietary service under the Expensify Terms of Service. The Expensify app client and help articles on GitHub (Expensify/App) are MIT
Read-only variant documentednoyes
llms.txtyesno
Last release2026-05-21none
Terms last updated2026-03-032026-09-10
Privacy policy last updated2026-01-302026-04-01
Customer content may train modelsnot found in the textnot found in the text
Terms restrict automated accessnot found in the textyes
Terms restrict benchmarkingnot found in the textnot found in the text
Terms or service can change without noticenot found in the textyes
Arbitration or class-action waivernot found in the textyes

Verdicts

BILL

A public OpenAPI 3.0.1 spec covers 326 operations, a self-serve sandbox moves no money, and payments need a session trusted by multi-factor authentication. The AP and AR API signs in with a user's password and has no scopes, no idempotency key protects payment calls, and no official SDK was found.

Expensify

One endpoint exports reports through caller-written templates and creates expenses, reports, rules and workspace settings, with limits of 5 requests per 10 seconds published and a status page that tracks the API separately. There is no OpenAPI spec, changelog, SDK, pagination or idempotency key, and one credential pair carries the whole account's rights.

Before you call either

BILL

  1. Sign in with POST /v3/login and send sessionId and devKey as headers on every AP and AR call. The session expires after 35 minutes idle
  2. Send the apiToken header alone on /v3/spend/ paths. Spend & Expense calls need no login and are limited to 60 a minute per token
  3. Complete the MFA challenge before POST /v3/payments. An untrusted session fails with BDC_1361
  4. Read back payments before retrying a failed POST /v3/payments. No idempotency key is accepted, so a blind retry can pay twice
  5. Keep to three concurrent requests per developer key per organisation and 20,000 an hour. After BDC_1144, wait for the next hour

Expensify

  1. POST requestJobDescription as a form field to the single endpoint. Keep it out of the URL query string, because it carries the secret
  2. Read responseCode in the body on every reply. HTTP status can be 200 on failure, and validation errors use 410
  3. Stay under 5 requests per 10 seconds and 20 per 60 seconds. No Retry-After header is documented, so space retries yourself
  4. Export in two calls. A file job returns a filename, then a download job fetches it. Amounts are in cents
  5. Don't retry a create job blindly. No idempotency key exists, so export and check before resending. Set dry-run to true when testing the Advanced Employee Updater

Questions

Which is better for AI agents, BILL or Expensify?

BILL scores 60.9 (C) on agent readiness against Expensify's 41.1 (E), and leads in 6 of 7 scored categories. Expensify leads on payments & pricing.

Do BILL and Expensify need an API key?

Both take an API key or an OAuth sign-in.

Can an agent call BILL and Expensify without installing anything?

Yes. BILL has a hosted endpoint at https://gateway.prod.bill.com/connect and Expensify at https://integrations.expensify.com/Integration-Server/ExpensifyIntegrations.

Other comparisons with BILL or Expensify

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.