Supergood | Chrome River API
Programmatically access Chrome River expense reports, corporate card transactions, invoices, and approvals with a stable REST API. Supergood builds and operates production-grade, unofficial Chrome River integrations so your team can automate finance operations without heavy custom engineering.
Plain English: Chrome River is enterprise expense and invoice management software (by Emburse) used to capture receipts, build expense reports, reconcile corporate cards, route approvals, and process AP invoices with policy controls and ERP exports. An unofficial API lets you programmatically pull users, expense reports and line items, corporate card feeds, invoices, approvals, and receipt images—and push new expenses, allocations, invoice entries, and status changes back into Chrome River.
For a tech company integrating with Chrome River, this means you can ingest real-time employee and spend data to power analytics, sync expense and invoice coding to your ERP (e.g., NetSuite, SAP, QuickBooks, Xero), automate receipt capture and policy checks from your product, reconcile card transactions, or trigger approvals and payments. You can also export attachments, normalize tax/VAT codes, maintain project and cost center alignment, and keep downstream systems (ERP, HRIS, travel, analytics) in lockstep.
What is Chrome River?
Chrome River (https://www.chromeriver.com/) is a cloud platform for travel and expense (T&E) and AP invoice automation. Finance teams use Chrome River to capture receipts via mobile, import corporate card transactions, build and submit expense reports, enforce policy with automated rules, route approvals, and post reimbursable and non-reimbursable spend to their ERP. AP teams use Chrome River to ingest invoices, perform OCR/data capture, match to POs, code lines, orchestrate multi-level approvals, and release for payment.
Core product areas include:
- Expense Management (Expense Reports, Line Items, Categories, Per Diem, Mileage, Attendees, Receipts, Policy Enforcement, Reimbursements)
- Corporate Card & Travel (Card Transaction Feeds, Card Program Management, E-Receipts, Travel Booking Connectors)
- AP Automation (Invoice Capture/OCR, PO/3-Way Matching, Coding, Approvals, Suppliers/Vendors, Payments Files)
- Controls & Compliance (Approval Workflows, Delegation, Audit, VAT/GST Handling, Tax Codes, Export/Posting Rules)
- Analytics & Administration (Dashboards, Data Exports, Roles/Permissions, Cost Centers, Projects, GL Accounts)
Common data entities:
- Employees/Users, Roles/Approvers, Delegates
- Expense Reports (headers, statuses, approval routes)
- Expense Lines (date, category, merchant, amount, tax/VAT, allocations, attendees, mileage/per diem)
- Receipts/Documents (images, PDFs, e-receipts)
- Corporate Card Transactions (auth/posted dates, MCC, merchant, amounts, match status)
- Invoices (header, vendor/supplier, lines, PO references, taxes, payments)
- Vendors/Suppliers, Purchase Orders, Projects/Jobs, Cost Centers/Departments, GL Accounts, Tax Codes
- Approvals & Policy Violations (states, comments, audit trail)
The Chrome River Integration Challenge
Finance teams rely on Chrome River every day, but turning portal-based workflows into API-driven automation is non-trivial:
- API availability and cost: Many tenants rely on scheduled flat-file/SFTP exports; real-time APIs can be add-ons, rate-limited, or inconsistently documented. Receipt and invoice image retrieval is often cumbersome.
- Complex, policy-based workflows: Dynamic routing, conditional approvals, exceptions, and return/resubmit loops make status modeling and idempotency tricky.
- Global tax and currency: VAT/GST codes, reclaim eligibility, multi-currency, and multi-ledger posting rules require careful normalization.
- Identity & SSO: Okta/Azure AD SSO and MFA complicate headless automation and session lifecycles.
- Data spread: Expense lines, card transactions, invoices, and coding live across multiple views and exports; linking them reliably is challenging.
How Supergood Creates Chrome River APIs
Supergood reverse-engineers authenticated browser flows and network interactions to deliver a resilient API endpoint layer for your Chrome River 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 and role-based permissions to ensure compliant access
- Supports large file handling for receipts and invoice PDFs with secure, time-limited URLs
Use Cases
Expense & Employee Data Sync
- Mirror employees, approvers, expense reports, and policy states into your internal systems
- Keep report headers and line-level allocations current for analytics and audit
- Normalize cost centers, projects, GL accounts, and tax codes across entities
Card Reconciliation & Receipt Automation
- Pull corporate card transactions daily and auto-match to expenses based on merchant, amount, and date
- Attach receipts programmatically from your capture pipeline and flag missing documentation
- Surface policy exceptions (e.g., unassigned card charges) and drive reminders
Invoice Automation & ERP Sync
- Create invoices with PO references and coded line items directly from procurement flows
- Track match status and approvals, then export to ERP for payment
- Normalize vendor master data and GL mappings for multi-entity operations
Analytics & Compliance
- Build near real-time spend dashboards for FP&A and budget owners
- Monitor policy violations, audit outcomes, and approval SLAs
- Reconcile T&E vs. AP spend, VAT reclaim opportunities, and card program usage
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_chr_3f2910",
"name": "AP Manager",
"entitlements": ["expense_reports", "corporate_cards", "invoices", "administration"]
}
}
POST /sessions/refresh: Refresh an existing token to keep sessions uninterrupted.
Expense Reports
GET /expense-reports: List expense reports with filters and summary details.
Query parameters
- employeeId: string
- status: draft | submitted | pending_approval | approved | exported | paid | rejected | returned
- updatedFrom, updatedTo: ISO 8601 timestamps
- hasReceipts: true | false
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"reportId": "rep_7a21c9",
"reportNumber": "EXP-2026-00412",
"title": "Q1 Sales Trip - NYC",
"employeeId": "emp_2519",
"employeeName": "Jordan Smith",
"email": "[email protected]",
"department": "Sales",
"costCenterCode": "SALES-EAST",
"currency": "USD",
"status": "pending_approval",
"reimbursableTotal": 1243.55,
"nonReimbursableTotal": 380.00,
"taxTotal": 97.12,
"submittedAt": "2026-01-20T16:10:10Z",
"approvedAt": null,
"paidAt": null,
"policyViolations": [
{"code": "MEAL_LIMIT_EXCEEDED", "severity": "warning"}
],
"approvalRoute": {
"currentStep": 2,
"nextApproverId": "emp_0098",
"steps": 3
},
"exportStatus": "not_exported",
"updatedAt": "2026-01-21T12:34:45Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Expenses
POST /expense-reports/{reportId}/expenses: Add an expense line to a report with category, merchant, taxes, allocations, and receipt attachments.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/expense-reports/rep_7a21c9/expenses \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"expenseDate": "2026-01-18",
"categoryCode": "HOTEL",
"amount": 380.00,
"currency": "USD",
"merchantName": "Hotel Midtown",
"description": "2 nights, standard room",
"tax": {"amount": 32.30, "taxCode": "US-LODGING"},
"attendees": [],
"mileage": null,
"corporateCardTransactionId": "cctx_91b203",
"allocations": [
{"costCenterCode": "SALES-EAST", "projectCode": "PRJ-ALPHA", "percent": 100}
],
"receipts": [
{"fileName": "hotel_invoice.pdf", "uploadToken": "upl_08ab73"}
]
}'
Example response
{
"expenseId": "exp_5f4120",
"status": "awaiting_validation",
"policyWarnings": [],
"createdAt": "2026-01-21T10:03:11Z"
}
Corporate Card Transactions
GET /corporate-cards/transactions: List corporate card transactions with match/assignment status.
Query parameters
- cardProgramId: string
- employeeId: string
- status: unassigned | assigned | reconciled | disputed
- postedFrom, postedTo: ISO 8601 dates
- page, pageSize: integers for pagination
Example response
{
"items": [
{
"transactionId": "cctx_91b203",
"cardAccountId": "card_4455",
"last4": "4455",
"employeeId": "emp_2519",
"merchantName": "Hotel Midtown",
"mcc": "7011",
"amount": 380.00,
"currency": "USD",
"authDate": "2026-01-18",
"postedDate": "2026-01-19",
"status": "assigned",
"matchedExpenseId": "exp_5f4120",
"reportId": "rep_7a21c9",
"receiptMatched": true,
"updatedAt": "2026-01-21T10:03:11Z"
}
],
"page": 1,
"pageSize": 50,
"total": 1
}
Invoices
POST /invoices: Create an AP invoice with coded lines, tax, and optional PO references.
curl --request POST \
--url https://api.supergood.ai/integrations/<integration_id>/invoices \
--header 'Authorization: Bearer <authToken>' \
--header 'Content-Type: application/json' \
--data '{
"supplierId": "sup_12009",
"invoiceNumber": "INV-98421",
"invoiceDate": "2026-01-17",
"dueDate": "2026-02-16",
"currency": "USD",
"total": 2150.00,
"taxTotal": 172.00,
"lines": [
{
"description": "Laptop - Marketing",
"quantity": 5,
"unitPrice": 400.00,
"glAccount": "6600-IT-EQUIP",
"costCenterCode": "MKT-NORTH",
"projectCode": null,
"taxCode": "US-ST",
"poNumber": "PO-56210",
"poLineNumber": 1
}
],
"attachments": [
{"fileName": "INV-98421.pdf", "uploadToken": "upl_7fa223"}
],
"referenceId": "ap-batch-20260118"
}'
Example response
{
"invoiceId": "inv_3a9d10",
"status": "pending_approval",
"matchStatus": "2_way_match_pending",
"exceptionFlags": [],
"createdAt": "2026-01-21T11:20:44Z"
}
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 expense reports, card transactions, invoices, and approvals
- Security: Encrypted transport, scoped tokens, and audit logging; respects Chrome River role-based permissions
- Webhooks: Optional asynchronous delivery for long-running workflows (e.g., approvals, invoice match updates)
Performance Characteristics
- Latency: Sub-second responses for list/detail queries under normal load
- Throughput: Designed for high-volume expense report sync, card reconciliation, and invoice processing
- 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 Chrome River adapter tailored to your workflows and entitlements.
- Deploy with Monitoring
Go live with continuous monitoring and automatic adjustments as Chrome River evolves.
Frequently Asked Questions
Q: Which Chrome River modules can this integration cover?
Supergood supports workflows across commonly used modules such as Expense Management (Reports, Lines, Receipts), Corporate Cards (Transaction Feeds, Matching), and AP Automation (Invoices, PO Matching, Approvals), 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 invoices and expense reports to our accounting system?
Yes. We can normalize invoices, expense reports, and line-item coding to match your ERP/accounting schema (e.g., NetSuite, SAP, QuickBooks, Xero) and deliver updates via webhooks or polling while complying with rate and permission constraints.
Q: Are receipt images and invoice PDFs supported?
Yes. We provide secure, time-limited URLs for downloading images/PDFs and support uploading attachments via signed uploads with checksum validation. We also model receipt status (missing, attached, e-receipt) in normalized responses.
Related Integrations
Intralinks API - Programmatically access the Intralinks VDR with Supergood
Ready to automate your Chrome River workflows?
Supergood can have your Chrome River integration live in days with no ongoing engineering maintenance.