FinOps-Open-Cost-and-Usage-Spec / FOCUS_Spec

The Unifying Specification for Cloud Billing Data
https://focus.finops.org
Other
184 stars 39 forks source link

[Work_Item] Clarify guidance around 'Refunds' within FOCUS #636

Open cnharris10 opened 3 weeks ago

cnharris10 commented 3 weeks ago

Problem Statement

The current FOCUS spec offers 5 values to categorize rows: Purchase, Usage, Tax, Adjustment, Credit. FOCUS does not provide guidance on how the spec should handle a return of funds after a purchase. Given this lack of guidance, FOCUS providers could feasibly issue a "refund" in the following ways:

  1. Supply a negative cost value to negate the initial row: a. Initial Row: ChargeCategory:Purchase, BilledCost:100, ChargeDescription:"Purchase X" b. Refund: ChargeCategory:Purchase, BilledCost:-100, ChargeDescription:"Refund for Purchase X"

  2. Issue a credit to act like a refund: a. Initial Row: ChargeCategory:Purchase, BilledCost:100, ChargeDescription:"Purchase X" b. Refund: ChargeCategory:Credit, BilledCost:-100, ChargeDescription:"Refund for Purchase X"

  3. Issue an adjustment to act like a refund: a. Initial Row: ChargeCategory:Purchase, BilledCost:100, ChargeDescription:"Purchase X" b. Refund: ChargeCategory:Adjustment, BilledCost:-100, ChargeDescription:"Refund for Purchase X"

Given these 3 routes, FOCUS should either provide an additional ChargeCategory value, Refund, or declarative guidance, like with correction handling, how refunds should be modeled.

Objective

Practitioners can easily pinpoint refund-based rows and tie back to a set of original line items that they negate

Supporting Documentation

Each CSP models refunds with a top-level classification:

AWS: line_item/line_item_type:Refund Azure: ChargeType:Refund GCP: cost_type:adjustment

Proposed Solution / Approach

Possible Solutions

  1. Add a Refund value to ChargeCategory to denote funds being returned
  2. Clarify that ChargeCategory:Adjustment should be used to denote funds being returned

Additionally, both implementations would need to clarify that ChargeCategory values: Usage, Purchase, and Tax should never contain negative values, unless scoped as a correction.

Epic or Theme Association

Provide the rational for the Epic or Theme.

Stakeholders

Provide names and roles of key stakeholders.

jpradocueva commented 2 weeks ago

Notes from the Maintainers' call on November 4:

Context: The spec currently lacks clear guidance on handling refunds, leading to inconsistencies in how providers and practitioners report refunds. This item seeks to clarify those guidelines. Level of Effort Required: Low — Providing clearer guidance on refunds is straightforward but requires alignment on standard refund practices.