Steamworks Documentation
IPartnerFinancialsService Interface
Used to access information on financial reporting. For more info on how to use the Steamworks Web API please see the Web API Overview.

IPartnerFinancialsService is unique when compared to other Steamworks API's; it requires a special group (called a "Financial API Group") with its own Web API key. A Financial API Group has no users and no apps associated to it, it is solely dedicated to the API retrieval of all financial data for a partner account. There are also no app limitations or user limitations on the Financial API Key, it retrieves all data for all applications on a partner account, the call does not require a logged in user.

To provision a Financial Web API key, a Financial API Group must first be created on the Manage Groups page of Steamworks. The Financial Web API Key will then be displayed on the newly created group's page.

For additional security, it is recommended that you use the "Manage WebAPI Key" section on the Financial API Group's page to add a set of Whitelisted IPs as trusted access points for your financial data. Additionally, we recommend keeping the key as safe as you would any other password (don't email it around!) as it provides access to large amount of information on the performance of your partner account on Steam.

A typical call pattern would be as follows:

Step 1: Call GetChangedDatesForPartner to find the set of dates that have new data. Your first call will use a highwatermark value of 0 and will return every date you have ever had sales or activations on Steam. Subsequent values should use the result_highwatermark from the prior call, and will only show the dates with new data since the prior call.

Step 2: For each date returned by GetChangedDatesForPartner, make a call to GetDetailedSales. Each new date should start with a highwatermark_id value of 0. Continue calling GetDetailedSales, using the returned max_id as the next call's highwatermark_id. When the returned max_id field is equal to the highwatermark_id field that was provided in the request it is a signal that there is no further data available for that date. Move on to the next date and continue the pattern described above.

GetChangedDatesForPartner


GET https://partner.steam-api.com/IPartnerFinancialsService/GetChangedDatesForPartner/v001/


Request values
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key
highwatermarkuint64A unique identifier, the point at which to query data forward from. Should be set to 0 on first run.
include_view_grantsboolInclude dates that are visible via view grants in the response

Retrieves the set of dates for which financial data has changed since the given highwatermark. These dates can be passed to GetDetailedSales to retrieve financial data.

Each date value from GetChangedDatesForPartner should initially be provided to GetDetailedSales with a highwatermark_id value of 0 (looping as necessary with returned max_id values). GetChangedDatesForPartner indicates that at least one record on the returned date has changed for your partner account, you will need to re-query the entirety of that date to identify all additions, deletions, and updates that have occurred.

Return values
NameTypeDescription
datesstringA repeating field of unique dates that have newly calculated or recalculated financial data. If this field is empty, no new data is available. Dates are reported for the Pacific Time Zone (PT) and should be fed directly into GetDetailedSales (ie. do not apply an offset, use the exact string value)
result_highwatermarkstringA unique identifier, marks the maximum point that the financial data has been analyzed to for the provided partner. This value should be used as the "highwatermark" value for subsequent calls to GetChangedDatesForPartner to avoid doing unnecessary work. If the value is unchanged from the provided "highwatermark" value then there is no new financial data for the partnerid being called.

Example response:
"response": { "dates": [ "2025/04/28", "2025/05/04", "2025/05/05", "2025/05/06", "2025/05/07", "2025/05/08" ], "result_highwatermark": "1841518117865" }

GetDetailedSales


GET https://partner.steam-api.com/IPartnerFinancialsService/GetDetailedSales/v001/


Request values
NameTypeRequiredDescription
keystringSteamworks Web API publisher authentication key
datestringDate to retrieve the sales data for. The date should be formatted as YYYY-MM-DD, YYYY/MM/DD, or YYYYMMDD. Date values provided and returned will be for the Pacific Time Zone (PT)
highwatermark_iduint64A per-date value (ie. should be set at 0 for each date being queried). Informs the number of new records to query for.
include_view_grantsboolInclude sales data that is visible via view grants in the response

Retrieves the daily sales for a partner in batches.

Individual fields for CPartnerFinancials_SalesResult will only be filled for relevant line item types, demarcated below via the Package, In-Game, and CD-Key columns.

Return values
NameTypeDescription
resultsCPartnerFinancials_DetailedSalesResultA repeating field containing detailed sales information
key_request_infoCPartnerFinancials_KeyRequestInfoThe key request details for this response
package_infoCPartnerFinancials_PackageInfoThe package id values for the response and their respective names
app_infoCPartnerFinancials_AppInfoThe app id values for the response and their respective names
bundle_infoCPartnerFinancials_BundleInfoThe bundle id values for the response and their respective names
discount_infoCPartnerFinancials_DiscountInfoThe discount details for the response
combined_discount_infoCPartnerFinancials_CombinedDiscountInfoThe combined discount details for the response
game_item_infoCPartnerFinancials_GameItemInfoThe app id and game item id values for the response and their respective descriptions and categories
country_infoCPartnerFinancials_CountryInfoThe country codes, names, and regions from the response
partner_infoCPartnerFinancials_PartnerInfoThe partner ids and names from the response
max_idint64The largest id returned from this result set. When equal to highwatermark_id this denotes that no further records are available for the date being queried


CPartnerFinancials_DetailedSalesResult
NameTypePackagesIn-GameCD-KeysDescription
partneridint32The partnerid that this data was generated for.
datestringThe date the statistics were calculated for (aka. calculation date). Returned in the same format as provided in the request (YYYY-MM-DD, YYYY/MM/DD, or YYYYMMDD). Uses Pacific Time Zone (PT). Max size - 16 characters.
line_item_typestringThe type of sale: "Package" or "MicroTxn". Max size - 64 characters
packageiduint32The package id that was sold or activated.
bundleiduint32The bundle id the package was sold within, if applicable.
appiduint32The appid for the item being sold.
game_item_idint32The game item id of the item being sold. Equivalent to "ItemID" from the old CSV feed.
package_sale_typestringThe type of redemption, Steam sale or Retail key. Max size - 64 characters.
key_request_iduint32The unique identifier for the key request that this activation was made from
platformstringThe platform that sales are attributed to. Max size - 64 characters
country_codestringThe ISO-2 country code where the item was purchased. Max size - 8 characters
base_priceuint64The base price, in local currency cents.
sale_priceuint64The final sale price, in local currency cents.
currencyuint32The currency of the transaction.
gross_units_soldint32The number of units sold.
gross_units_returnedint32The number of units returned.
gross_sales_usdstringThe value of sales, in USD dollars to four decimal places.
gross_returns_usdstringThe value of returns, in USD dollars to four decimal places.
net_tax_usdstringThe net value of taxes, in USD dollars to four decimal places.
gross_units_activatedint32The number of units activated.
view_grant_partneridint32The partnerid that granted visibility, only filled for data that is visible via a view grant.
net_units_soldint32The number of units sold less the number of units returned.
net_sales_usdstringThe value of sales less the value of returns and taxes, in USD dollars to four decimal places.
avg_sale_price_usdstringThe average sale price of in-game units sold, in USD dollars to four decimal places.
combined_discount_idint32The ID associated with the unique set of discounts used, if applicable
primary_appidint32The appid that this package associate to for purpose of additional revenue share accrual. The default value of 0 indicates the package does not have a primary app set in our backend, please file a support ticket to rectify this. NOTE: While this value may be included in CD-key responses for ease of package->app association, additional revenue share does not take into account cd-key activations.
additional_revenue_share_tierERevenueShareBonusTierWhat additional revenue share, if any, has this sale qualified for on the given date


ERevenueShareBonusTier (int32)
ValueNameDescription
0k_ERevenueShareBonusTier_NoneNo additional revenue share
1k_ERevenueShareBonusTier_5Percent5% additional revenue share
2k_ERevenueShareBonusTier_10Percent10% additional revenue share


CPartnerFinancials_DiscountInfo
NameTypeDescription
discountidint32The unique id for the given discount
discount_description stringThe discount description. Max size - 1024 characters
discount_group stringThe discount group. Max size - 1024 characters.
discount_percentage int32The percentage discount off the items regular price

CPartnerFinancials_CombinedDiscountInfo
NameTypeDescription
combined_discount_iduint32A unique id
combined_discount_namestringThe combined discount name
total_discount_percentageint32The total percentage discount via all component discounts
discount_idsint32A repeating field of all discount ids that make up this combined discount id

CPartnerFinancials_KeyRequestInfo
NameTypeDescription
key_request_iduint32The unique id for the given key request
key_request_notesstringThe notes provided for the key request. Max size - 4000 characters
game_code_idint32The game code id associated with this key request
game_code_descriptionstringThe game code description. Max size - 1024 characters
territory_code_idint32The territory code id associated with this key request
territory_code_descriptionstringThe territory code description. Max size - 1024 characters

Note: Some CPartnerFinancials_KeyRequestInfo return values may have a note of "Synthetic request". These serve as placeholder values for redemptions of key ranges that were made before the key request system was created (ie. prior to January, 2013)

CPartnerFinancials_PackageInfo
NameTypeDescription
packageiduint32A unique id
package_namestringThe package name

CPartnerFinancials_AppInfo
NameTypeDescription
appiduint32A unique id
app_namestringThe app name

CPartnerFinancials_BundleInfo
NameTypeDescription
bundleiduint32A unique id
bundle_namestringThe bundle name

CPartnerFinancials_GameItemInfo
NameTypeDescription
game_item_descriptionstringThe English language description of the in-game item sold. Max size - 128 characters
game_item_categorystringThe English language category of the in-game item sold. Max size - 128 characters

CPartnerFinancials_CountryInfo

NameTypeDescription
country_codestringThe ISO-2 country code where the item was purchased. Max size - 8 characters
country_namestringThe full name of the country_code field. Max size - 128 characters
regionstringThe region within which the country_code belongs. Max size - 128 characters

CPartnerFinancials_PartnerInfo

NameTypeDescription
partneriduint32A unique id
partner_namestringThe name of the partner. Max size - 128 characters

Example response:
"response": { "results": [ { "partnerid": "10500", "date": "2025/05/01", "line_item_type": "Package", "packageid": 123, "bundleid":777 "package_sale_type": "Steam", "platform": "Windows", "country_code": "AU", "base_price": "3995", "sale_price": "1995", "currency": "AUD", "gross_units_sold": 10, "gross_units_returned": -2, "gross_sales_usd": "311.7201", "gross_returns_usd": "-25.5322", "net_tax_usd": "26.0431", "primary_appid": 999, "additional_revenue_share_tier": 0, "net_units_sold": 8, "net_sales_usd": "260.1448", "combined_discount_id": 8888, "total_discount_percentage": 50 }, { "partnerid": "10500", "date": "2025/05/01", "line_item_type": "Package", "packageid": 456, "package_sale_type": "Steam", "platform": "Windows", "country_code": "CA", "base_price": "5999", "sale_price": "5999", "currency": "CAD", "gross_units_sold": 100, "gross_units_returned": 0, "gross_sales_usd": "4309.0101", "gross_returns_usd": "0.0000", "net_tax_usd": "517.0812", "primary_appid": 1099, "additional_revenue_share_tier": 1, "viw_grant_partnerid": "5200", "net_units_sold": 100, "net_sales_usd": "3791.9288", }, { "partnerid": "10500", "date": "2025/05/01", "line_item_type": "MicroTxn", "appid": 1099, "game_item_id": 1, "country_code": "US", "currency": "USD", "gross_units_sold": 2, "gross_units_returned": 0, "gross_sales_usd": "9.9800", "gross_returns_usd": "0.0000", "net_tax_usd": "0.9980", "primary_appid": 1099, "additional_revenue_share_tier": 1, "net_units_sold": 2, "net_sales_usd": "8.9820", "avg_sale_price_usd": "4.9900" }, { "partnerid": "10500", "date": "2025/05/01", "line_item_type": "Package", "packageid": 123, "package_sale_type": "Retail", "platform": "Unknown", "country_code": "AE", "primary_appid": 999, "key_request_id": 7100, "gross_units_activated": 10 }, ], "key_request_info": [ { "key_request_id": 7100, "key_request_notes": "Keys for Key Markets", "game_code_id": 842, "game_code_description": "Retail Distribution - Middle East & North Africa", "territory_code_id": 0, "territory_code_description": "UNUSED" } ], "package_info": [ { "packageid": 123, "package_name": "Grate Expectations: Cheese Preparation Simulator - Deluxe Edition" }, { "packageid": 456, "package_name": "Grate Expectations 2: Curd Your Loins - Launch Edition" } ] "app_info": [ { "appid": 999, "app_name": "Grate Expectations: Cheese Preparation Simulator }, { "appid": 1099, "app_name": "Grate Expectations 2: Curd Your Loins" } ], "bundle_info": [ { "bundleid": 777, "bundle_name": "Grate Expectations Deluxe Bundle" }, ], "combined_discount_info": [ { "combined_discount_id": 8888, "combined_discount_name": "Bundle Discount", "total_discount_percentage": 50, "discount_ids": [11111] }, ], "game_item_info": [ { "appid": 1099, "game_item_id": 1, "game_item_description": "500 Grams of Whey", "game_item_category": "Essential Cheese Product" } ], "country_info": [ { "country_code": "AE", "country_name": "United Arab Emirates", "region": "Middle East & North Africa" }, { "country_code": "AU", "country_name": "Australia", "region": "Oceania" }, { "country_code": "CA", "country_name": "Canada", "region": "North America" }, { "country_code": "US", "country_name": "United States", "region": "North America" }, ], "max_id": "29481179373"