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 Name | Type | Required | Description |
key | string | ✔ | Steamworks Web API publisher authentication key |
highwatermark | uint64 | ✔ | A unique identifier, the point at which to query data forward from. Should be set to 0 on first run. |
include_view_grants | bool | | Include 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 Name | Type | Description |
dates | string | A 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_highwatermark | string | A 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 Name | Type | Required | Description |
key | string | ✔ | Steamworks Web API publisher authentication key |
date | string | ✔ | Date 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_id | uint64 | ✔ | A 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_grants | bool | | Include 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 Name | Type | Description |
results | CPartnerFinancials_DetailedSalesResult | A repeating field containing detailed sales information |
key_request_info | CPartnerFinancials_KeyRequestInfo | The key request details for this response |
package_info | CPartnerFinancials_PackageInfo | The package id values for the response and their respective names |
app_info | CPartnerFinancials_AppInfo | The app id values for the response and their respective names |
bundle_info | CPartnerFinancials_BundleInfo | The bundle id values for the response and their respective names |
discount_info | CPartnerFinancials_DiscountInfo | The discount details for the response |
combined_discount_info | CPartnerFinancials_CombinedDiscountInfo | The combined discount details for the response |
game_item_info | CPartnerFinancials_GameItemInfo | The app id and game item id values for the response and their respective descriptions and categories |
country_info | CPartnerFinancials_CountryInfo | The country codes, names, and regions from the response |
partner_info | CPartnerFinancials_PartnerInfo | The partner ids and names from the response |
max_id | int64 | The 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 Name | Type | Packages | In-Game | CD-Keys | Description |
partnerid | int32 | ✔ | ✔ | ✔ | The partnerid that this data was generated for. |
date | string | ✔ | ✔ | ✔ | The 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_type | string | ✔ | ✔ | ✔ | The type of sale: "Package" or "MicroTxn". Max size - 64 characters |
packageid | uint32 | ✔ | | ✔ | The package id that was sold or activated. |
bundleid | uint32 | ✔ | | | The bundle id the package was sold within, if applicable. |
appid | uint32 | | ✔ | | The appid for the item being sold. |
game_item_id | int32 | | ✔ | | The game item id of the item being sold. Equivalent to "ItemID" from the old CSV feed. |
package_sale_type | string | ✔ | | ✔ | The type of redemption, Steam sale or Retail key. Max size - 64 characters. |
key_request_id | uint32 | | | ✔ | The unique identifier for the key request that this activation was made from |
platform | string | ✔ | | ✔ | The platform that sales are attributed to. Max size - 64 characters |
country_code | string | ✔ | ✔ | ✔ | The ISO-2 country code where the item was purchased. Max size - 8 characters |
base_price | uint64 | ✔ | | | The base price, in local currency cents. |
sale_price | uint64 | ✔ | | | The final sale price, in local currency cents. |
currency | uint32 | ✔ | ✔ | | The currency of the transaction. |
gross_units_sold | int32 | ✔ | ✔ | | The number of units sold. |
gross_units_returned | int32 | ✔ | ✔ | | The number of units returned. |
gross_sales_usd | string | ✔ | ✔ | | The value of sales, in USD dollars to four decimal places. |
gross_returns_usd | string | ✔ | ✔ | | The value of returns, in USD dollars to four decimal places. |
net_tax_usd | string | ✔ | ✔ | | The net value of taxes, in USD dollars to four decimal places. |
gross_units_activated | int32 | | | ✔ | The number of units activated. |
view_grant_partnerid | int32 | ✔ | ✔ | ✔ | The partnerid that granted visibility, only filled for data that is visible via a view grant. |
net_units_sold | int32 | ✔ | ✔ | | The number of units sold less the number of units returned. |
net_sales_usd | string | ✔ | ✔ | | The value of sales less the value of returns and taxes, in USD dollars to four decimal places. |
avg_sale_price_usd | string | | ✔ | | The average sale price of in-game units sold, in USD dollars to four decimal places. |
combined_discount_id | int32 | ✔ | | | The ID associated with the unique set of discounts used, if applicable |
primary_appid | int32 | ✔ | ✔ | ✔ | The 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_tier | ERevenueShareBonusTier | ✔ | ✔ | | What additional revenue share, if any, has this sale qualified for on the given date |
ERevenueShareBonusTier (int32) Value | Name | Description |
0 | k_ERevenueShareBonusTier_None | No additional revenue share |
1 | k_ERevenueShareBonusTier_5Percent | 5% additional revenue share |
2 | k_ERevenueShareBonusTier_10Percent | 10% additional revenue share |
CPartnerFinancials_DiscountInfo Name | Type | Description |
discountid | int32 | The unique id for the given discount |
discount_description | string | The discount description. Max size - 1024 characters |
discount_group | string | The discount group. Max size - 1024 characters. |
discount_percentage | int32 | The percentage discount off the items regular price |
CPartnerFinancials_CombinedDiscountInfo Name | Type | Description |
combined_discount_id | uint32 | A unique id |
combined_discount_name | string | The combined discount name |
total_discount_percentage | int32 | The total percentage discount via all component discounts |
discount_ids | int32 | A repeating field of all discount ids that make up this combined discount id |
CPartnerFinancials_KeyRequestInfo Name | Type | Description |
key_request_id | uint32 | The unique id for the given key request |
key_request_notes | string | The notes provided for the key request. Max size - 4000 characters |
game_code_id | int32 | The game code id associated with this key request |
game_code_description | string | The game code description. Max size - 1024 characters |
territory_code_id | int32 | The territory code id associated with this key request |
territory_code_description | string | The 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 Name | Type | Description |
packageid | uint32 | A unique id |
package_name | string | The package name |
CPartnerFinancials_AppInfo Name | Type | Description |
appid | uint32 | A unique id |
app_name | string | The app name |
CPartnerFinancials_BundleInfo Name | Type | Description |
bundleid | uint32 | A unique id |
bundle_name | string | The bundle name |
CPartnerFinancials_GameItemInfo Name | Type | Description |
game_item_description | string | The English language description of the in-game item sold. Max size - 128 characters |
game_item_category | string | The English language category of the in-game item sold. Max size - 128 characters |
CPartnerFinancials_CountryInfo Name | Type | Description |
country_code | string | The ISO-2 country code where the item was purchased. Max size - 8 characters |
country_name | string | The full name of the country_code field. Max size - 128 characters |
region | string | The region within which the country_code belongs. Max size - 128 characters |
CPartnerFinancials_PartnerInfo Name | Type | Description |
partnerid | uint32 | A unique id |
partner_name | string | The 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"