Documentation / Attribution / Seats and licenses
Seats and licenses
Use the full product name. Microsoft 365 Copilot, Office Copilot, and Microsoft Copilot are the Microsoft 365 seat. GitHub Copilot and Copilot Business are the GitHub seat. ChatGPT Enterprise and ChatGPT Team are the ChatGPT seat. Cursor is its own seat. A cell that only says Copilot is currently read as GitHub Copilot.
There is no separate connector guide. You upload the file on Uploads.
What you set up
- Create each department under Governance before you upload. The department cell has to match a department name that already exists. Matching ignores case. A department code is not enough.
- Build a CSV. The upload form names these columns:
user_emailoruser_name,product,monthly_cost, anddepartment. A header has to match exactly, in any letter case. Spaces are not turned into underscores. - The same columns also accept these headers. Person:
email,user,name, orassignee. Product:sku,license, orlicense_sku. Amount:costoramount. Department:dept,department_name,cost_center, orteam. - Put that full product name in the product column.
- On Uploads, choose the period start and period end, then import the file. Those dates are not columns in the file.
A seat is a license assigned to a person. It answers who is licensed. It does not answer which agent spent the license. (Copilot Studio licensing)
What Meridian receives
One charge per accepted row. The date is the period start you chose on the form. The amount is monthly_cost times the number of days in that period, divided by 30. A zero or blank amount is skipped. The grain is that seat line, not a day of model calls and not a single prompt.
Uploading the same person, product, department, and period again replaces that charge. It does not add a second copy.
How it's attributed
The department is inherited from the department name on the row. The agent is always empty. A rule does not replace an inherited row. A person's assignment does not replace it either.
Chargeback uses that department. There is no agent to group by.
What lands unattributed, and how to fix it
A row is skipped, not stored, when the person cell is empty, the product is missing or not one of the names above, the amount is missing or not a positive number, or the department is empty or not already in Governance. The upload reports how many rows were skipped. Fix the file or add the department, then upload again. A skipped row is not an unattributed ledger line.
These rows do not appear in the unattributed inbox with an agent to assign. The agent stays empty on purpose. To charge a person-level license to a team, the department on the file is the whole attribution. Studio credit usage, which does name an agent, belongs on Copilot Studio, not in this file.
Limits
- No agent, even when the product is a copilot license.
- A licensed user's use of features the Studio rate table marks as no charge is the seat, not a second credit charge. Do not upload those messages here as if they were credits.
- The file does not split one seat across agents.
- This import is Early access. The badge is on the catalog card and in the status section below.
Status
- Seat and license CSV is Early access in the integrations catalog. Available to customers now. We confirm the first import with you in a sandbox before production.