Showback (Cost Attribution)
Slice your total cloud bill by team, tag, or both. ZopNight reconciles team and tag totals to the org-wide total from the same daily billing rollup.
Showback is the practice of slicing your total cloud bill by the organizational unit that incurred it — by team, by tag, or by both. ZopNight computes showback from the same daily billing rollup that powers Reports, so team and tag totals always reconcile to the org-wide total.
By Team
Team attribution is derived from resource-team assignments. A resource that's not assigned to any team rolls up under Unassigned in the team report.
/reports/teamsList cost per team for the selected period.
{
"data": [
{
"teamID": "team_001",
"teamName": "Platform",
"costUSD": 4200.50,
"resourceCount": 42,
"percentOfTotal": 33.7
},
{
"teamID": null,
"teamName": "Unassigned",
"costUSD": 312.00,
"resourceCount": 14,
"percentOfTotal": 2.5
}
]
}/reports/teams/{teamID}Per-team breakdown by provider and resource type.
/reports/teams/{teamID}/resourcesPer-resource cost for a team — used for the drilldown table.
/reports/teams/trendsDaily / weekly / monthly trend series for all teams.
By Tag
Tag attribution covers cloud-native tags (AWS tags, GCP labels, Azure tags) plus accepted smart tags. Each report endpoint returns tag coverage so you know how much of the total is fully attributed vs. attributed to Unknown.
/reports/tagsList tag keys with attributed cost. Used to build the tag-key picker.
{
"data": [
{
"tagKey": "Environment",
"coverage": { "tagged": 128, "untagged": 18 },
"costUSD": 12450.50
},
{
"tagKey": "Team",
"coverage": { "tagged": 110, "untagged": 36 },
"costUSD": 12450.50
}
]
}/reports/tags?unit=pairs&page={n}&limit={n}Server-paginated list of (tagKey, tagValue) pairs. Powers the Tag Cost Attribution table without the prior 100-key client-side cap.
{
"data": {
"items": [
{
"tagKey": "Environment",
"tagValue": "prod",
"tagSource": "cloud",
"costUsd": 4200.50,
"savingsUsd": 120.00,
"resourceCount": 32,
"prevCostUsd": 3950.00
}
],
"total": 248,
"page": 1,
"limit": 50,
"totalCostUsd": 12450.50,
"totalSavingsUsd": 480.00,
"untaggedCostUsd": 312.00,
"untaggedCount": 14,
"period": "2026-06",
"hasBilling": true,
"costSourceLabel": "billing"
}
}/reports/tags/{tagKey}List tag values for a key with their attributed cost.
/reports/tags/{tagKey}/values/{tagValue}/resourcesList resources carrying a given tag value with their per-resource cost.
/reports/tags/trendsDaily / weekly / monthly trend series filtered by tag key, value, provider, or type.
Coverage & Reconciliation
- Tagged vs. untagged. The
coveragefield on tag responses surfaces how many of the period's resources carry the key. Low coverage usually means the tag is inconsistent across accounts — Smart Tags can close the gap. - Tag Coverage bar. The keys-mode response embeds
taggedCostUsd— the per-resource-deduplicated tagged total, read from the same snapshot asuntaggedCostUsd— so the Tag Coverage bar is computed within one data universe and reads exactly 0% when nothing is tagged. The field is omitted unless both totals queries (tagged and untagged) succeed — presenting one beside a zeroed other would render a false 0% or 100%; the UI then falls back to deriving coverage from the teams org total, which can drift by up to one snapshot cycle. - Reconcile to org total. Sum across all teams (or across all values for a given tag key) always equals the org's total cost for the period. If they don't, that's a bug — file it.
- Time alignment. Showback uses the same calendar month boundaries as billing exports — not deploy-day or your fiscal calendar. For fiscal-month views, export and re-aggregate downstream.
For exports of these reports as CSV/JSON, use the POST /reports/export endpoint documented in Reports & Analytics.