# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Use a dedicated read-only API token</strong></td><td>Generate a Brex API token scoped to read-only access for each resource you need. Avoid reusing tokens across tools — if a token is compromised, a dedicated one limits exposure.</td></tr><tr><td><strong>Join Transactions with Users and Departments</strong></td><td>Transactions alone don't tell the full story. Use Coupler.io's Join transformation to enrich transaction data with user names and department names for meaningful cost center reporting.</td></tr><tr><td><strong>Append data from multiple Brex accounts</strong></td><td>If your organization runs more than one Brex account, create a separate source for each API key and use the Append transformation to consolidate everything into one destination table.</td></tr><tr><td><strong>Start with a focused date range</strong></td><td>For Transactions and Expenses, begin with the current quarter rather than pulling all historical data at once. This keeps your first run fast and lets you validate the data before expanding the range.</td></tr></tbody></table>

## Data refresh and scheduling

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Refresh Transactions daily</strong></td><td>Pending transactions settle over time and amounts can change. A daily refresh ensures your reports reflect settled values and capture new spend promptly.</td></tr><tr><td><strong>Refresh Budgets at least weekly</strong></td><td>Budget remaining amounts are point-in-time snapshots. For active budget periods, weekly refreshes keep your budget vs. actual reports accurate enough for most finance reviews.</td></tr><tr><td><strong>Sync Users and Departments less frequently</strong></td><td>These entities change rarely — new hires, offboarding, or restructuring. A weekly or monthly refresh is usually sufficient, saving API calls for the entities that matter more.</td></tr></tbody></table>

## Performance optimization

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Filter by status in your destination</strong></td><td>Rather than filtering at the source, pull all transaction statuses and filter in your spreadsheet or BI tool. This gives you flexibility to switch between pending and settled views without re-running the data flow.</td></tr><tr><td><strong>Use Aggregate for summary reporting</strong></td><td>If you're building a high-level spend dashboard, use Coupler.io's Aggregate transformation to pre-summarize spend by department, category, or month — reducing the data volume hitting your destination.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't build reports on pending transactions. Pending amounts are estimates and will change once the transaction settles. Always flag status in your reports and base financial conclusions on settled data only.
{% endhint %}

{% columns %}
{% column %}
**Do**

* Use separate API tokens for Coupler.io and other integrations
* Join Transactions with Departments for cost center attribution
* Validate your first run before scheduling
* Pull a short date range first to confirm data looks correct
  {% endcolumn %}

{% column %}
**Don't**

* Use a single broad-scope admin token across all tools
* Rely on Budget remaining amounts without checking the last sync time
* Set the start date to a year ago on your first run without testing a shorter range first
* Treat draft expenses as final — they may be rejected or edited
  {% endcolumn %}
  {% endcolumns %}
