canonical: https://jentic.com/apis/brex.com/brex

# Brex API

Jentic publishes the only available OpenAPI specification for Brex API, keeping it validated and agent-ready. Track corporate card expenses, initiate outgoing payments, manage team members and cards, monitor transaction history, and set budget controls across a company's financial operations. The API covers expense card management, receipt matching, payment initiation, team administration, and budget tracking through 15 endpoints with bearer token authentication.

## For AI agents

Track corporate card expenses, initiate payments, manage team members and cards, and monitor transactions across company accounts.

## Scope

Does not handle accounting, invoicing, or payroll - use for corporate card expense tracking, payment initiation, and team card management only.

## Capabilities

- Track and categorise corporate card expenses with receipt matching
- Initiate outgoing payments to vendors and employees with approval workflows
- Issue virtual and physical cards for team members with spend controls
- Pull primary card and cash transaction history for reconciliation
- Set and monitor department-level budgets with real-time spend tracking

## Use cases

### AI Agent Expense Tracking

AI agents use the Brex API through Jentic to pull card expenses, match receipts, and categorise spending without handling bearer tokens directly. The agent searches Jentic for the operation it needs (e.g., 'list card expenses'), receives the endpoint schema with required parameters, and executes. Jentic isolates the bearer token in its vault so the agent never sees raw credentials.

Example prompt: Retrieve all card expenses from the last 30 days via `/v1/expenses/card` and return the total spend grouped by merchant

### Payment Initiation and Approval

Initiate outgoing payments to vendors, contractors, or employees through the Brex payments endpoint. The API supports scheduling payments and tracking their status through approval workflows. Each payment request includes recipient details, amount, and payment method, with status updates available via polling.

Example prompt: Create an outgoing payment of $2,500 to a vendor via `/v1/payments/outgoing` and check the payment status until it shows as completed

### Team and Card Management

Administer team members, issue corporate cards, and set individual spending limits programmatically. The API enables onboarding new employees with card assignments, updating spend controls, and deactivating cards for departing staff. Card listing endpoints support filtering by team member or card status.

Example prompt: List all active team members via `/v1/team/members`, find those without assigned cards, and retrieve the current card list via `/v1/team/cards`

### Transaction Reconciliation

Pull primary card and cash transaction history for financial reconciliation. The API separates card transactions from cash (ACH/wire) transactions, each with amount, date, description, and status fields. Transaction endpoints support pagination for processing large volumes.

Example prompt: Retrieve all primary card transactions from `/v1/transactions/card/primary` for the current month and sum the total settled amount

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v1/expenses/card` | List all card expenses |
| GET | `/v1/expenses/card/{id}` | Get a specific card expense |
| POST | `/v1/expenses/card/{id}/receipt_match` | Match a receipt to a card expense |
| GET | `/v1/transactions/card/primary` | List primary card transactions |
| GET | `/v1/transactions/cash/primary` | List primary cash transactions |
| GET | `/v1/team/members` | List team members |
| POST | `/v1/payments/outgoing` | Create an outgoing payment |
| GET | `/v1/budgets` | List budgets |

## Key resources

- **Expenses** — Corporate card expenses with receipt matching and categorisation
- **Transactions** — Card and cash transaction history for the primary account
- **Team** — Team members and their assigned corporate cards
- **Payments** — Outgoing payment initiation and status tracking
- **Budgets** — Department-level budget allocation and spend monitoring

## Why Jentic

- **Setup:** Wiring Brex by hand means handling its OAuth2 bearer tokens, attaching the Authorization header on every request, and separating card, cash, and outgoing-payment endpoints yourself. Through Jentic you install once, import the Brex API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Brex puts the expense id in the URL path (`/v1/expenses/card/{id}/...`), so a rule can pin your agent to reading and matching receipts for card expenses: it can list expenses and attach receipt matches and nothing else. You choose the operations it may call, so initiating an outgoing payment is not included unless you add it.
- **Credential handling:** Your Brex bearer token is stored once, encrypted, by your own Jentic One instance and injected as the Authorization header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list card expenses' or 'match a receipt to an expense', and Jentic returns the matching Brex operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Expensify API** — Expensify focuses on employee expense reporting and reimbursement while Brex handles corporate card management
- **Stripe API** — Stripe processes incoming customer payments while Brex manages outgoing corporate spending
- **Xero Accounting API** — Xero records expenses in the ledger while Brex is the source of corporate transaction data

## FAQ

### Why is there no official OpenAPI spec for Brex API?

Brex does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Brex API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Brex API use?

Brex uses bearer token authentication. An OAuth bearer token must be included in the Authorization header of every request. Through Jentic, bearer tokens are stored encrypted in your Jentic One instance - agents receive pre-authenticated requests and never handle raw tokens.

### Can I retrieve corporate card expenses with the Brex API?

Yes. GET `/v1/expenses/card` returns all card expenses with amount, merchant, date, and category fields. Individual expenses can be retrieved by ID at `/v1/expenses/card/{id}`, and receipts can be matched to expenses via the `/v1/expenses/card/{id}/receipt_match` endpoint.

### What are the rate limits for the Brex API?

Brex enforces rate limits per API token. The specific limits vary by endpoint and plan tier. When limits are exceeded, the API returns a 429 status code. For high-volume use cases, implement exponential backoff on retries.

### How do I initiate a payment through the Brex API via Jentic?

Search Jentic for 'initiate outgoing payment', then load the `/v1/payments/outgoing` operation schema. The agent provides recipient details and amount, and Jentic handles authentication. The payment enters an approval workflow and status can be polled until completion. Install with pip install jentic and run it through Jentic One, the self-hosted execution layer.

### Can I manage team members and cards programmatically with Brex?

Yes. GET `/v1/team/members` lists all team members with their profiles. GET `/v1/team/cards` returns assigned cards with spend limits and status. The API supports filtering members by ID and retrieving card details for specific team members.

### Can I limit what my agent is allowed to do with the Brex API?

Yes. Because you self-host Jentic One, your own rules decide which Brex operations and credentials your agent may use. Brex puts the expense id in the URL path, so you can pin the agent to listing card expenses via GET `/v1/expenses/card` and attaching receipt matches via POST `/v1/expenses/card/{id}/receipt_match`, and nothing else. Sensitive operations like creating an outgoing payment through `/v1/payments/outgoing` stay off limits unless you explicitly add them to the allowed set.
