# Get Expense — Brex

> Retrieves one expense and its receipts. Receipt download links expire 15 minutes after the response, so download rather than store them. Use Search Expenses to find an expense ID. See the documentation

- Key: `brex-get-expense`
- Type: Action (Read-only)
- Version: 0.0.1
- App: Brex (`brex`) — https://pipedream.com/apps/brex.md
- This page (HTML): https://pipedream.com/apps/brex/actions/get-expense
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/brex/actions/get-expense/get-expense.mjs

## Description

Retrieves one expense and its receipts. Receipt download links expire 15 minutes after the response, so download rather than store them. Use **Search Expenses** to find an expense ID. [See the documentation](https://developer.brex.com/openapi/expenses_api/expenses/getexpense)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `expenseId` | `string` | Yes | The ID of the expense, e.g. expense_cmVjZWlwd. Use Search Expenses to search by merchant, amount, or date, or Search Card Transactions to get the expense_id behind a card posting. |
| `expand` | `string[]` | No | Related records to include in the response. Keep receipts.download_uris to get the receipt files themselves. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "brex",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "brex-get-expense",
  arguments: {
    expenseId: "Expense ID",
    expand: ["Expand"],
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "brex-get-expense",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    brex: { authProvisionId: "apn_xxxxxxx" },
    expenseId: "Expense ID",
    expand: ["Expand"],
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "brex-get-expense",
    "configured_props": {
      "brex": { "authProvisionId": "apn_xxxxxxx" },
      "expenseId": "Expense ID",
      "expand": ["Expand"]
    }
  }'
```

---

- App: https://pipedream.com/apps/brex.md · All apps: https://pipedream.com/apps
