Supergood | BILL Spend & Expense API

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"
}

Get full API Specs →


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

  1. Schedule Integration Assessment

Book a 30-minute session to confirm your modules, licensing, and authentication model.

  1. Supergood Builds and Validates Your API

We deliver a hardened BILL Spend & Expense adapter tailored to your workflows and entitlements.

  1. Deploy with Monitoring

Go live with continuous monitoring and automatic adjustments as BILL evolves.

Schedule Integration Call →


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.


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.

Get Started →

Read more