Supergood | BILL Spend & Expense API
Programmatically access BILL Spend & Expense corporate card data, budgets, transactions, receipts, reimbursements, and approvals with a stable REST API. Supergood builds and operates production-grade, unofficial BILL Spend & Expense integrations so your team can automate spend controls and accounting workflows without heavy custom engineering.
Plain English: BILL Spend & Expense is corporate card and expense management software (formerly Divvy) that helps companies issue physical and virtual cards, set budgets, capture receipts, approve expenses, and sync spending to accounting. An unofficial API lets you pull cards, budgets, transactions, merchants, and receipt images—and push updated expense coding, approvals, reimbursements, and policy changes back into BILL Spend & Expense.
For a tech company integrating with BILL Spend & Expense, this means you can ingest real-time transactions for analytics and fraud monitoring, sync GL coding to ERP/accounting (e.g., QuickBooks, NetSuite, Xero, Sage Intacct), automate budget provisioning and card issuance from HRIS or workflow tools, attach receipts captured in your product, and drive approvals. You can also trigger spend alerts, enforce policy via your own rules engine, and keep stakeholder systems (ERP, analytics, finance ops, procurement) in lockstep.
What is BILL Spend & Expense?
BILL Spend & Expense (https://www.bill.com/spend-and-expense) is a cloud platform for corporate card issuing and expense management. Finance teams use it to create budgets, provision physical and virtual cards, enforce spend policies, capture receipts, streamline approvals, reimburse employees, and sync transactions to accounting systems.
Core product areas include:
- Corporate Cards & Budgets (physical/virtual cards, spend limits, budget membership, controls)
- Expense Management & Reimbursements (receipt capture, coding, approvals, ACH reimbursements)
- Policy & Approvals (MCC restrictions, per-transaction limits, rules-based approvals, audit trail)
- Accounting Integrations (GL accounts, departments/classes, vendor mapping, ERP sync for transactions and statements)
- Merchant & Subscription Management (virtual cards for vendors, recurring spend tracking)
Common data entities:
- Companies, Users, Roles/Permissions (Admins, Approvers, Cardholders)
- Budgets (name, limit, period, owner, members, policies)
- Cards (physical/virtual, last4, status, assigned user, budget)
- Transactions (merchant, MCC, amount, auth/posted timestamps, status, currency)
- Expenses (coding: GL account, department/class, memo, custom fields, approval state)
- Receipts & Attachments (images, PDFs, upload tokens, status)
- Reimbursements (non-card expenses, payable to employee, ACH details)
- Merchants (name, MCC, location, recurring indicators)
- Statements & Exports (period totals, CSV/OFX)
The BILL Spend & Expense Integration Challenge
Finance teams rely on BILL Spend & Expense daily, but turning portal-based workflows into API-driven automation is non-trivial:
- Role-aware views: Admins, approvers, and cardholders see different objects, permissions, and approval states
- Policy rigor: Budgets, MCC restrictions, limits, receipts, and multi-step approvals require careful handling and auditability
- Portal-first features: Receipt capture, reimbursements, and approvals are optimized for front-end flows, not headless automation
- Authentication complexity: SSO/MFA and session lifecycles complicate unattended integrations
- Data fragmentation: Key context spans cards, budgets, transactions, expenses, and accounting mappings
- Common complaints: Limited or gated official API access, extra costs for API usage, CSV exports that miss fields or receipt links, lack of webhooks for real-time automation, and difficulty pulling complete receipt images or coding metadata
How Supergood Creates BILL Spend & Expense APIs
Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your BILL Spend & Expense tenant.
- Handles username/password, SSO/OAuth, and MFA (SMS, email, TOTP) securely
- Maintains session continuity with automated refresh and change detection
- Normalizes responses so you can integrate once and rely on consistent objects across modules
- Aligns with customer entitlements, budgets, and role-based permissions to ensure compliant access
Use Cases
Card, Budget, & User Sync
- Mirror cards, budgets, and users into your internal systems
- Keep card assignments and budget membership current for analytics and policy enforcement
- Normalize limits, statuses, and MCC controls for multi-entity operations
Expense Coding & Approval Automation
- Auto-code transactions from your rules engine and push updates back to expenses
- Trigger approvals, track states, and reconcile with ERP/GL
- Attach receipts captured in your product and validate policy compliance
Real-Time Spend Monitoring & Controls
- Stream transactions for anomaly detection and spend alerts
- Provision virtual cards programmatically for vendors/subscriptions
- Adjust limits or lock cards in response to detected risks
Accounting & ERP Sync
- Map merchants and MCCs to GL accounts, departments, and classes
- Push approved, coded transactions to accounting systems (QuickBooks, NetSuite, Xero, Sage Intacct)
- Reconcile statements and reimbursement payouts with your ERP
Available Endpoints
Authentication
POST /sessions: Establish a session using credentials. Supergood manages MFA (SMS, email, TOTP) and SSO/OAuth when enabled. Returns a short-lived auth token maintained by the platform.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/sessions \
--header 'Authorization: Basic <Base64 encoded token>' \
--header 'Content-Type: application/json' \
--data '{
"username": "[email protected]",
"password": "<password>",
"mfa": { "type": "totp", "code": "123456" }
}'
Example response
{
"authToken": "eyJhbGciOi...",
"expiresIn": 3600,
"user": {
"id": "u_bill_82c91e",
"name": "Finance Admin",
"entitlements": ["cards", "budgets", "transactions", "expenses", "reimbursements"]
}
}
POST /sessions/refresh: Refresh an existing token to keep sessions uninterrupted.
Cards
GET /cards: List corporate cards with filters and summary details.
Query parameters
- userId: string
- budgetId: string
- status: active | locked | closed
- type: physical | virtual
- updatedFrom, updatedTo: ISO 8601 timestamps
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"cardId": "card_57a3de",
"last4": "8291",
"type": "virtual",
"status": "active",
"holderUserId": "u_bill_3f4b10",
"holderName": "Alex Rivera",
"budgetId": "bud_9a1201",
"budgetName": "Marketing FY26",
"limits": {
"perTransaction": 2000.00,
"daily": 5000.00,
"monthly": 20000.00,
"currency": "USD"
},
"mccRestrictions": ["7311", "2741"],
"spendTotals": {
"monthToDate": 4821.37,
"lifetime": 91820.54
},
"createdAt": "2026-01-05T16:21:00Z",
"updatedAt": "2026-01-20T12:10:45Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Transactions
GET /transactions: Retrieve card transactions with merchant, coding, and receipt metadata.
Query parameters
- budgetId: string
- cardId: string
- userId: string
- status: pending | posted | reversed
- receiptStatus: missing | uploaded | required
- merchant: string (contains)
- mcc: string
- amountFrom, amountTo: decimal
- postedFrom, postedTo: ISO 8601 timestamps
- needsCoding: true | false
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"transactionId": "txn_21f7c9",
"cardId": "card_57a3de",
"userId": "u_bill_3f4b10",
"merchantName": "Canva",
"mcc": "7372",
"amount": 12.99,
"currency": "USD",
"authAt": "2026-01-18T09:14:11Z",
"postedAt": "2026-01-18T09:15:03Z",
"status": "posted",
"location": {"city": "Sydney", "country": "AU"},
"expense": {
"expenseId": "exp_90a112",
"glAccountId": "gl_6000_marketing",
"departmentId": "dept_mkt",
"classId": null,
"memo": "Social media design",
"customFields": {"campaign": "Q1 Launch"},
"approvalStatus": "approved"
},
"receipt": {
"required": true,
"status": "uploaded",
"files": [
{"fileName": "canva_invoice_jan.pdf", "url": "https://files.supergood.ai/signed/rcpt_1a2b3c"}
]
},
"policyViolations": []
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Expenses
PATCH /expenses/{expenseId}: Update coding, attach receipts, and manage approvals for an expense.
curl --request PATCH \
--url https://api.supergood.ai/integrations/<integration_id>/expenses/exp_90a112 \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"glAccountId": "gl_6000_marketing",
"departmentId": "dept_mkt",
"classId": null,
"memo": "January design subscription",
"customFields": {"campaign": "Q1 Launch", "projectCode": "PRJ-2045"},
"attachments": [
{"fileName": "canva_invoice_jan.pdf", "uploadToken": "upl_73cd10"}
],
"submitForApproval": true,
"notifyApprovers": true
}'
Example response
{
"expenseId": "exp_90a112",
"approvalStatus": "awaiting_approval",
"updatedAt": "2026-01-21T14:33:22Z"
}
Budgets
POST /budgets: Create a budget with spend limits, membership, and policy controls.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/budgets \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Events FY26",
"periodType": "monthly",
"limitAmount": 30000.00,
"currency": "USD",
"carryover": true,
"ownerUserId": "u_bill_admin_001",
"memberUserIds": ["u_bill_3f4b10", "u_bill_28d7aa"],
"policies": {
"perTransactionLimit": 5000.00,
"receiptRequiredAbove": 25.00,
"mccAllowList": ["7392", "5814"],
"mccBlockList": ["7995"]
},
"notifications": {"approverEmails": ["[email protected]"], "alertThresholdPercent": 80}
}'
Example response
{
"budgetId": "bud_7f8e31",
"status": "active",
"createdAt": "2026-01-21T10:03:11Z"
}
Technical Specifications
- Authentication: Username/password with MFA (SMS, email, TOTP) and SSO/OAuth where enabled; supports service accounts or customer-managed credentials
- Response format: JSON with consistent resource schemas and pagination across modules
- Rate limits: Tuned for enterprise throughput while honoring customer entitlements and usage controls
- Session management: Automatic reauth and cookie/session rotation with health checks
- Data freshness: Near real-time retrieval of cards, budgets, transactions, expenses, and receipts
- Security: Encrypted transport, scoped tokens, and audit logging; respects BILL role-based permissions and budget policies
- Webhooks: Optional asynchronous delivery for transaction postings, approval changes, and receipt updates
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume transaction ingestion and expense update workflows
- Reliability: Retry logic, backoff, and idempotency keys minimize duplicate actions
- Adaptation: Continuous monitoring for UI/API changes with rapid adapter updates
Getting Started
- Schedule Integration Assessment
Book a 30-minute session to confirm your modules, licensing, and authentication model.
- Supergood Builds and Validates Your API
We deliver a hardened BILL Spend & Expense adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as BILL evolves.
Frequently Asked Questions
Q: Which BILL Spend & Expense modules can this integration cover?
Supergood supports workflows across commonly used modules such as Corporate Cards (physical/virtual), Budgets, Transactions, Expenses/Receipts, and Reimbursements, subject to your licensing and entitlements. We scope coverage during integration assessment.
Q: How are MFA and SSO handled for automation?
We support username/password + MFA (SMS, email, TOTP) and can operate behind SSO/OAuth when enabled. Sessions are refreshed automatically with secure challenge handling.
Q: Can you sync transactions and reimbursements to our accounting system?
Yes. We can normalize transactions, reimbursements, and coding fields (GL accounts, departments, classes) to match your ERP/accounting schema and deliver updates via webhooks or polling while complying with rate and permission constraints. We commonly integrate with QuickBooks, NetSuite, Xero, and Sage Intacct.
Q: Are receipts and approval artifacts supported?
Yes. We support downloading receipt images/PDFs via signed URLs and uploading attachments via signed uploads, with checksum validation and time-limited URLs. Approval states and policy requirements are modeled explicitly in our normalized responses.
Related Integrations
QuickBooks Online API - Programmatically access QuickBooks with Supergood
Ready to automate your BILL Spend & Expense workflows?
Supergood can have your BILL Spend & Expense integration live in days with no ongoing engineering maintenance.