Head to head · Spend transactions · October 2026 research run
BILL vs Spendesk API + MCP
Spendesk API + MCP scores 62.3 (B) on agent readiness against BILL's 60.9 (C), and leads in 5 of 7 scored categories. BILL leads on reliability and 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 55
- Payments & pricing, 25 against 0
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
Good for A finance team already on Spendesk that wants an assistant to analyse spend, follow invoices and prepare the accounting close, or an ERP sync reading payables and settlements.
Ahead on
- Security & auth, 86 against 56
- Maintenance & community, 57 against 32
- Transparency & trust, 80 against 66
Watch for
No public price, free tier or self-serve signup. API access and demo credentials are requested from a Spendesk representative
Score by category
| Category | Weight this run | BILL | Spendesk API + MCP | Edge |
|---|---|---|---|---|
| Reliability | 16%20 | 81 | 55 | BILL +26 |
| Performance | 10%pending | pending | pending | not scored in this run |
| Schema & documentation | 13%16.2 | 83 | 87 | Spendesk API + MCP +4 |
| Agent ergonomics | 13%16.2 | 60 | 62 | Spendesk API + MCP +2 |
| Security & auth | 14%17.5 | 56 | 86 | Spendesk API + MCP +30 |
| Payments & pricing | 10%12.5 | 25 | 0 | BILL +25 |
| Task success | 10%pending | pending | pending | not scored in this run |
| Maintenance & community | 7%8.8 | 32 | 57 | Spendesk API + MCP +25 |
| Transparency & trust | 7%8.8 | 66 | 80 | Spendesk API + MCP +14 |
| Negative events | ≤15 | 0 | 0 | |
| Total | 60.9 · C | 62.3 · B |
Facts side by side
| Fact | BILL | Spendesk API + MCP |
|---|---|---|
| Kind | HTTP API | HTTP API |
| Vendor | BILL Holdings, Inc. | Spendesk SAS |
| Hosted endpoint | https://gateway.prod.bill.com/connect | https://public-api.spendesk.com |
| Transports | HTTP | HTTP |
| Auth | OAuth or key | OAuth or key |
| Pricing | Freemium | Paid |
| x402 | no | no |
| Licence | Proprietary service under the BILL Developer Terms and the BILL General Terms of Service | Proprietary service under Spendesk's terms and conditions and a separate Spendesk API agreement |
| Tools exposed | none | 62 |
| Read-only variant documented | no | no |
| llms.txt | yes | yes |
| Last release | 2026-05-21 | 2026-09-29 |
| Terms last updated | 2026-03-03 | couldn't be read |
| Privacy policy last updated | 2026-01-30 | 2025-03-01 |
| Customer content may train models | not found in the text | couldn't be read |
| Terms restrict automated access | not found in the text | couldn't be read |
| Terms restrict benchmarking | not found in the text | couldn't be read |
| Terms or service can change without notice | not found in the text | couldn't be read |
| Arbitration or class-action waiver | not found in the text | couldn't be read |
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.
Spendesk API + MCP
Scoped credentials, MCP write permissions that are off by default, an action log and published guidance on prompt injection suit delegated finance work. Access needs a paying customer and a request to Spendesk, most write endpoints are experimental, no official SDK was found, and the status page lists three critical incidents between 2 and 29 September 2026.
Before you call either
BILL
- Sign in with
POST /v3/loginand sendsessionIdanddevKeyas headers on every AP and AR call. The session expires after 35 minutes idle - Send the
apiTokenheader alone on/v3/spend/paths. Spend & Expense calls need no login and are limited to 60 a minute per token - Complete the MFA challenge before
POST /v3/payments. An untrusted session fails withBDC_1361 - Read back payments before retrying a failed
POST /v3/payments. No idempotency key is accepted, so a blind retry can pay twice - Keep to three concurrent requests per developer key per organisation and 20,000 an hour. After
BDC_1144, wait for the next hour
Spendesk API + MCP
- Request a token at POST /v1/auth/token with HTTP Basic (client ID and secret). It lasts 3,600 seconds, so renew on a 401
- Stop paging at the last page calculated from
totalandpageSize(maximum 30). A page past the end returns 404, not an empty list - With an organisation-level token, send
X-Company-Idon every v1 call or expect a 400 - The MCP server refuses API keys. Connect with OAuth authorisation code and PKCE, and treat
Tool not found(-32601) as a missing permission - After an unclear write result, read the object again before retrying. Creating a purchase order or supplier twice creates two
Questions
Which is better for AI agents, BILL or Spendesk API + MCP?
Spendesk API + MCP scores 62.3 (B) on agent readiness against BILL's 60.9 (C), and leads in 5 of 7 scored categories. BILL leads on reliability and payments & pricing.
Do BILL and Spendesk API + MCP need an API key?
Both take an API key or an OAuth sign-in.
Can an agent call BILL and Spendesk API + MCP without installing anything?
Yes. BILL has a hosted endpoint at https://gateway.prod.bill.com/connect and Spendesk API + MCP at https://public-api.spendesk.com.
Other comparisons with BILL or Spendesk API + MCP
- Airwallex Spend and Issuing vs BILL
- Airwallex Spend and Issuing vs Spendesk API + MCP
- BILL vs Brex
- BILL vs Expensify
- BILL vs Mercury API
- BILL vs Pleo API + MCP
- BILL vs Ramp
- Brex vs Spendesk API + MCP
- Expensify vs Spendesk API + MCP
- Mercury API vs Spendesk API + MCP
- Pleo API + MCP vs Spendesk API + MCP
- Ramp vs Spendesk API + MCP
Machine-readable
- This page as Markdown
/compare/bill-vs-spendesk.md· slim.min.md· JSON.json(or sendAccept: text/markdown) - Each listing in full
/api/v1/tools/bill.json·/api/v1/tools/spendesk.json - From a terminal
anchor compare bill spendesk(the CLI) - Over MCP
compare_tools {"a": "bill", "b": "spendesk"}at/mcp, no key