Connect to Cursor
Overview
The Cursor integration ingests cost and usage data from your Cursor account and makes it available in MegaBill alongside other cost centers (such as AWS and GCP). This allows you to analyze Cursor spend alongside the rest of your infrastructure costs.
Finout connects to Cursor using the Admin API and retrieves read-only data. The integration does not perform any actions in your Cursor account.
Once connected, you can break down Cursor costs by key dimensions, including User, Model, Kind (e.g. included in business for pre-paid tokens or usage-based for on-demand tokens), and Day.
This helps you understand who is driving usage, which models are being used, and how costs evolve over time.
Connect to Cursor
Prerequisite: You must be a Cursor team admin to generate an Admin API key.
1. Create an API Key in Cursor
In Cursor, navigate and click on Team Settings. You are brought to the Team Settings page.

Scroll down to the Advanced section.

Click Add. A new API Key row appears. Set its scope to Read-Only and its expiration to Never Expires

Enter an API Key Name and click Save. The 'API Key Created' pop-up appears.

Copy the API Key, save it for later, and click Done.
2. Integrate Cursor with Finout
In Finout, navigate to Settings > Cost Centers.

Under Cursor, click Connect Now. You are taken to the Connect Cursor step.

Fill in the following fields:
Cost Center Name
Admin API Key (the key saved in the previous step)
Enter a Monthly Seat Price in USD; enter $0 if your Cursor plan does not charge per seat
Click Complete Setup. Your Cost Center is created - data should be available on Finout within 24 hours.
Understanding Cursor Cost Data in Finout
Cursor pricing and usage differ from those of typical cloud providers. Understanding these differences will help you interpret your data correctly in Finout.
Cost is not broken down by token type
Cursor's API reports token usage split by type (input, output, cache read and cache write), but returns a single aggregated cost across all types combined.
As a result, Finout reports token counts broken down by type under usage, but cannot attribute cost to a specific token type.
Usage-based vs. seat-based costs
Cursor charges in two parts:
Included in business - costs already pre-paid in your plan, such as tokens from a shared organization pool or usage included in a paid seat
To exclude 'included in business' costs from your data, contact your CSM
These costs are pre-paid and already factored into your seat price. On seat-based plans, including them alongside seat costs counts the same spend twice. To report only on-demand usage, contact your CSM.
Usage-based cost - on-demand API costs driven by model usage. These are sourced directly from Cursor's Admin API.
Seat cost - a fixed monthly price per active user. In Finout, this is an estimate based on the number of billable seats in your team and the monthly seat price you provide during setup. This price is set manually and does not sync with your actual Cursor contract - if your contract changes, update it yourself in the cost center settings.
Seat-based costs are available from your integration date onward
Cursor's API does not expose historical seat membership data, so seat costs prior to the day you connected Finout cannot be retrieved.
On-demand (usage-based) costs are unaffected and are backfilled historically.
Why Finout's usage-based numbers won't match your Cursor invoice exactly
Finout reports costs by full calendar day, which matches what you see in Cursor's Admin Console under the usage page.
Cursor invoices work differently: rather than closing at midnight, Cursor charges for usage whenever your organization's cumulative spend hits an internal threshold, then resets the counter. Since that threshold can be crossed at any point during the day, invoice lines won't align with calendar dates. The totals will be close but won't match to the cent.
When verifying Finout's numbers, use the Admin Console usage page - not the invoice.
Per-user quota reset behavior
Each user's monthly quota resets based on their individual join date, not on the first of the month. This means users will have different quota cycles within the same calendar month, and usage patterns may appear uneven or staggered across users. This is expected behavior and does not indicate a data issue.
FAQs
Why do users show different usage patterns within the same month? Each user's quota resets on their individual join date. Usage is therefore distributed across different time windows per user - this is expected and does not indicate a data issue.
Why is Finout reporting more spend than my Cursor invoice on a seat-based plan? Cursor's API reports usage already included in your seat price as a separate "included in business" cost line. By default, Finout reports all cost lines returned by the API, including these prepaid costs - which can make your total appear higher than your invoice.
To exclude "included in business" costs and report only on-demand usage billed on top of your plan, contact your CSM.
Why is Finout reporting lower cost than Cursor's dashboard, when looking at only charged kinds? When filtering out free, errored and aborted events, Cursor's dashboard may report a marginally higher cost than Finout.
This is because some of these events are actually partially charged for helpful model work, which is reflected in Cursor's dashboard but not in their API.
Why doesn't my total match my Cursor invoice exactly? Finout reports by full calendar day, while Cursor invoices are cut whenever cumulative spend hits an internal billing threshold - not at midnight. The numbers will be close but won't align to the cent. For verification, use the Admin Console usage page instead of the invoice.
Why does a team member who left still appear in Finout? Finout displays users based on data returned from Cursor's Admin API. If a user still appears, they are included in the usage or membership data for the selected time range. Historical usage for that user will continue to appear in Finout.
How do I update my seat price after a contract change? Edit your Cursor cost center and enter the new seat price. If your new contract has no per-seat charge, enter $0.
This takes effect going forward only - seat costs already calculated for past dates are not recalculated. This setting is independent of "included in business" cost reporting (see below); changing one does not affect the other.
If I change how 'included in business' costs are reported, does that affect past data? The "included in business" cost-reporting setting (changed via your CSM) is not time-bound: if it's toggled and a historical backfill is run, past dates are affected too, not just dates going forward.
Can I have Finout apply different pricing logic to different date ranges (e.g. seat-based through June, usage-based from July)? No. Both the seat price and "included in business" settings apply account-wide from the point they're changed - there's no way to define time-bound rules per contract period.
Last updated
Was this helpful?