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

[Work_Item] Clarify guidance around 'Refunds' within FOCUS

Opened this issue · 4 comments

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.

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.

Summary from the Maintainers' call on Nov 25:

Context:
The goal is to define how refunds should be represented in the FOCUS dataset, providing clear guidance to ensure consistency across implementations.
Maintainers Assigned:
Alex, Irena
Task Force Assigned:
Task Force 1 (TF1), which focuses on financial and billing-specific items.

Action Items from the TF-1 call on December 3:

  • [#636] Alex @ahullah : Lay the groundwork for further discussion on the use case involving charge records for refunds that are not necessarily tied to previously invoiced billing periods. Provide a more detailed overview of the requirements and high-level overview of the pros and cons of various resolution options, including, but not limited to, those discussed in the meeting:
  • Introduction of an additional Charge Category
  • Introduction of a Charge Subcategory column
  • Introduction of an additional Charge Class
  • [#636] Irena @ijurica : Provide a link to the Google spreadsheet used as the basis for the Charge Category Cleanup discussion conducted during the 1.0 Release.

Action Items from the Members' call on December 5:

  • [#556] Volunteers: Develop a taxonomy for correction types, including normative requirements for each type.
  • [#556] Irena @ijurica : Draft a proposal for phased implementation of augmented correction handling and circulate it for feedback.
  • [#636] Chris @cnharris10 : Document detailed refund scenarios, particularly for corrections within open billing periods, to inform resolution.
  • [#636] Alex @ahullah : Review and propose updates to refund guidance, ensuring alignment with the expanded correction handling framework.

Action Items from the Maintainers' call on December 9:

  • [#556 and #636] Alex @ahullah to draft strawman definitions for corrections and refunds and present them at the next TF1 meeting.
  • [#556 and #636] Irena @ijurica to analyze existing use cases to identify potential overlaps or unique characteristics between corrections and refunds.
  • [#556 and #636] Riley @rileyjenk to prepare examples of corrections and refunds to aid in the definition process.