Why does my tax information show two withholding rates - one for royalty copyright and one for royalty film?[/h4] [b]A.[/b] These are separate tax rates that are applied depending on the content type of your sales. The royalty copyright rate will apply to US sourced sales on games and related DLCs. The royalty film rate will apply to US sourced sales on film and video. These rates do not accumulate for a higher rate of withholding and only one rate will be applied depending on the type of sales. [*][h4]Q. …
[/list] [/list] [/list] [b]Example Response:[/b] [code=json] { "response": { "result": "OK", "params": { "count": 4, "orders": [ { "orderid": "1233", "transid": "1234567890123456788", "steamid": "76561197972751825", "status": "PartialRefund", "currency": "USD", "time": "2024-01-23T18:30:00Z", "country": "US", "usstate": "WA", "timecreated": "2024-01-23T18:15:00Z", "items": [ { "itemid": 100, "qty": 1, "amount": 99, "vat": 9, "itemstatus": "Refunded" }, { "itemid": 101, "qty": 1, "amount": 1299, "vat": 116, "itemstatus": "Succeeded" } ] }, { "orderid": "1234", "transid": "1234567890123456789", "steamid": "76561197972751825", "status": "Failed", "currency": "USD", "time": "2024-01-23T18:40:30Z", "country": "US", "usstate": "WA", "timecreated": "2024-01-23T18:39:00Z", "items": [ { "itemid": 100, "qty": 1, "amount": 99, "vat": 9, "itemstatus": "Failed" } ] }, { "orderid": "1235", "transid": "1234567890123456790", "steamid": "76561197972751825", "status": "Succeeded", "currency": "USD", "time": "2024-01-23T18:40:40Z", "country": "US", "usstate": "WA", "timecreated": "2024-01-23T18:39:30Z", "items": [ { "itemid": 101, "qty": 1, "amount": 1299, "vat": 116, "itemstatus": "Succeeded" } ] }, { "orderid": "1236", "transid": "1234567890123456791", "steamid": "76561197972751825", "status": "Chargedback", "currency": "USD", "time": "2024-01-23T19:55:00Z", "country": "US", "usstate": "WA", "timecreated": "2024-01-23T18:40:00Z", "items": [ { "itemid": 102, "qty": 1, "amount": 999, "vat": 89, "itemstatus": "Chargedback" } ] } ] } } } [/code] [section=GetUserAgreementInfo]GetUserAgreementInfo[/section] [code=http]GET https://partner.steam-api.com/ISteamMicroTxn/GetUserAgreementInfo/v2/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr] [td][b]key[/b][/td][td]string[/td] [td]✔[/td] [td]Steamworks Web API [url=https://partner.steamgames.com/doc/webapi_overview/auth#publisher-keys]publisher key[/url] with [b]Microtransaction[/b] permissions.…
[/list] [/list] [/list] [b]Example Response:[/b] [code=xml] <response> <result>OK</result> <params> <state>WA</state> <country>US</country> <currency>USD</currency> </params> </response> [/code] [section=InitTxn]InitTxn[/section] [code=http]POST https://partner.steam-api.com/ISteamMicroTxn/InitTxn/v3/[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr] [td][b]key[/b][/td][td]string[/td] [td]✔[/td] [td]Steamworks Web API [url=https://partner.steamgames.com/doc/webapi_overview/auth#publisher-keys]publisher key[/url] with [b]Microtransaction[/b] permissions.…
The Steam DRM wrapper by itself is not an anti-piracy solution. The Steam DRM wrapper protects against extremely casual piracy (i.e. copying all game files to another computer) and has some obfuscation, but it is easily removed by a motivated attacker. …
[*] [b]output filename[/b] - Relative or absolute path where the tool will write the output wrapped executable. [*] [b]toolname[/b] - "drmtoolp" is currently the only supported toolname parameter. [*] [b]flags[/b] - Bitmask of the following numeric flags specifying tool behavior. [list=1] [*] [b]0[/b] - Normal wrap (most protection) [*] [b]6[/b] - Compatibility mode (disables obfuscation) [*] [b]32[/b] - Skip debugger check [*] [b]38[/b] - compatibility mode and also skip debugger check (least protection) [/list] [/list] Example run_build.bat script to login, apply DRM, build and upload the build to Steam (where App ID is 480): [code] builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..…
Our newest APIs relay packets through the Valve network by default, which ensures that players and gameservers are protected. It is higher performance and uses a higher-quality reliability layer. It also supports ordinary UDP connectivity. An open-source version is available on [url=https://github.com/ValveSoftware/GameNetworkingSockets]github[/url]. …
This document describes what you need to do if you want to use SDR for dedicated server games, to optimize ping times and protect servers from DoS attack. [/list] [api]ISteamNetworking[/api] is an older, deprecated API. If you are using it, consider migrating to a newer API soon, as we may remove this API from the SDK in a future release. …
There are also methods that return sensitive data or perform a protected action and require special access permissions. These APIs require a publisher key, which you will need to create before calling any of them. …
[/list] [docimg=webapi_key_permissions.png]webapi_key_permissions.png[/docimg] [callout=red]Publisher Web API keys provide access to sensitive user data and protected methods. These keys are intended to be used for Web API requests that originate from secure publisher servers. The keys must be stored securely, and must not be distributed with a game client. …
From September 2026 onwards, Steam will require you to create this branch manually first (if it doesn't already exist for your app), and will require it to be password-protected. [section]Setting Up Local Content Server[/section] First choose a simple, but high performance web server that only needs to serve static files. …
This file should contain the following text: [code] @LocalContentServer YourWebServerName [/code] Examples: [code] @LocalContentServer localhost @LocalContentServer "127.0.01:8080" [/code] [list] [*] Either the server IP or server hostname can be used. [*] If you need to specify another port then 80, it must be "ip:port" in quotes [*] Don't add "http://" in front, HTTPS is not supported [/list] Note: The default location of the Steam executable is: [list] [*] [b]For Windows[/b]: [code]C:\Program Files (x86)\Steam\[/code] [*] [b]For macOS[/b]: [code]Steam.app/contents/macOS/[/code] [*] [b]For Linux[/b]: [code]~/.local/share/Steam/[/code] [/list] [b]Note[/b] As of September 2026, Steam will begin requiring newly-created "local" app branches to be [b]password-protected[/b]. For local branches with a password, users will also need to enter the password into the Steam client UI to unlock the "local" branch selection. …
We've introduced new Steamworks tools to help you understand your store traffic while continuing to protect player privacy. These include: [list][*][b]Expanded presentation of external traffic sources to detail more common domains[/b] - for more details on traffic reporting, please see [doclink=marketing/traffic_reporting][/doclink] [*][b]Key updates to Steam's overall UTM System[/b] - For more details on UTM System, please see [doclink=marketing/utm_analytics][/doclink] [/list] [list][list][*][b]One-Day conversion tracking[/b], which fixes previous technical issues that slowed updates down, and expands the conversion window to 3 days. [*][b]Geographic breakdown[/b], which adds the ability to see regional breakdowns for the visitors to your store page [*][b]Visitor device category[/b], adding a split of device types for each campaign to let you see how your mobile vs. desktop audiences are learning about your game. [*][b]New vs. returning users[/b] are now break-out stats that help you see the percentage of visits to your store page that come from new versus returning players.…
The API contains public methods that can be accessed from any application capable of making an HTTP request, such as game client or server. The API also contains protected methods that require authentication and are intended to be accessed from trusted back-end applications. As an example, Web API methods are commonly used by a secure publisher server to: [list] [*] Verify a Steam user's credentials with that server [*] Check if a user owns a particular application [*] Set or retrieve a user's stats, achievements or leaderboard scores [*] Execute an in-game purchase [/list] You can find a complete list of everything offered by the Steamworks Web API in the [doclink=webapi][/doclink]. …
Each WebAPI key has its own allow list, and adding ip addresses to the allow list is [i]not [/i]required. [b]Note[/b]: Allow lists do not guarantee WebAPI key security. Protect your key, do not share it, and change it immediately if it is compromised. …
For an unreleased game, this should probably be an empty depot. [*] Create or set a password protected branch with content that you'd like to invite people to test remotely. [*] Go to the partner site, edit your game's Steamworks settings, select the Application tab, and choose Steam Remote Play. …
This grants them access to the default depot, so you may want to create special purpose accounts for this. [*] Set up your test system to use the password protected branch. Launch the game on the test system and right click people in your friends list to invite them to join the session and play! …
[section]Integration[/section] Cheat detection is performed by you or your agents and reported via the ICheatReportingService. The game should use best practices and protect its assets and internal state. The game can use the [doclink=api]Steamworks API[/doclink] to find out whether or not a user is banned. …
[docimg=createBetaBranch_2.png]createBetaBranch.png[/docimg] To protect branches you create with a password, click [b]Update[/b] for a build and enter a password into the field. Note that if you wish for branch contents to remain private, you should set your branch password [i]before[/i] setting a build live on the branch. …
[docimg=utm-example-update-2023.png]utm-example-update-2023.png[/docimg] [subsection]Privacy[/subsection] To protect customer privacy, the information provided is kept at a summary view with no personal data included. This allows you to learn how your campaigns are performing while also protecting customer privacy. Here are more details on how Steam protects customer privacy: [list] [*]Steam IDs or other personal information will never be included or available [*]We only provide visit and conversion data in total numbers [*]We exclude showing unique UTM parameter combinations in the breakdown table when visits for those combinations do not meet minimum thresholds. [*]Some users will not be tracked based on their browser configuration or cookie preferences [/list] [subsection]Required Steamworks Permissions[/subsection] Access to your UTM Analytics report is limited to Steamworks accounts with the "View Marketing Traffic Data" rights for your game. …
[b]NOTE:[/b] This is required for all game servers and can only be set before calling [api]ISteamGameServer::LogOn[/api] or [api]ISteamGameServer::LogOnAnonymous[/api]. [subsection=SetPasswordProtected]SetPasswordProtected[/subsection] [code=cpp]void SetPasswordProtected( bool bPasswordProtected );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]bPasswordProtected[/b][/td][td]bool[/td][td]Enable ([b]true[/b]) or disable ([b]false[/b]) password protection.…
[/td][/tr] [tr=k_unServerFlagPassworded][td][b]k_unServerFlagPassworded[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td]0x10[/td][td]This game server is password protected.[/td][/tr] [tr=k_unServerFlagPrivate][td][b]k_unServerFlagPrivate[/b][/td][td][apitype]steam_api::uint32[/apitype][/td][td]0x20[/td][td]This game server shouldn't be listed on master server and won't enforce authentication of users that connect to the server. …
Additional builds can be listed under the beta tab or hidden using a password. Password-protected branches are not visible to any account without the password.[/td] [/tr] [/table] This can be visualized like this: [docimg=app_trans2.png]app_trans2.png[/docimg] …
Higher performance API that relays data through the Valve network and protects player IP addresses.[/td][/tr] [tr][td][api]ISteamNetworkingUtils[/api][/td][td]Misc networking utilities useful when using [api]ISteamNetworkingSockets[/api][/td][/tr] [tr][td][api]ISteamRemotePlay[/api][/td][td]Functions for getting information about Steam Remote Play sessions.…
[/td][/tr] [tr=eServerModeAuthenticationAndSecure][td][b]eServerModeAuthenticationAndSecure[/b][/td][td]3[/td][td]Authenticate users, list on the server list and VAC protect clients.[/td][/tr] [/table]…
[/td][/tr] [tr=k_EAppType_Franchise][td][b]k_EAppType_Franchise[/b][/td][td]0x400[/td][td]A hub for collections of multiple apps, eg films, series, games.[/td][/tr] [tr=k_EAppType_Video][td][b]k_EAppType_Video[/b][/td][td]0x800[/td][td]A video component of either a Film or TVSeries (may be the feature, an episode, preview, making-of, etc.)…
[/td][/tr] [tr=k_EResultHardwareNotCapableOfIPT][td][b]k_EResultHardwareNotCapableOfIPT[/b][/td][td]67[/td][td]The users hardware does not support Intel's Identity Protection Technology (IPT).[/td][/tr] [tr=k_EResultIPTInitError][td][b]k_EResultIPTInitError[/b][/td][td]68[/td][td]Intel's Identity Protection Technology (IPT) has failed to initialize.…
Max size - 128 characters[/td][/tr] [/table] [b]Example response: [/b] [code] "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" [/code] [section=GetAppWishlistReporting]GetAppWishlistReporting[/section] [code=http]GET https://partner.steam-api.com/IPartnerFinancialsService/GetAppWishlistReporting/v001/[/code] [b]Request values[/b][table] [tr][th]Name[/th][th]Type[/th][th]Required[/th][th]Description[/th][/tr] [tr] [td][b]key[/b][/td][td]string[/td] [td]✔[/td] [td]Steamworks Web API [url=https://partner.steamgames.com/doc/webapi_overview/auth#publisher-keys]publisher key[/url] with [b]Financial[/b] permissions.…
Any changes to the text or artwork does not require any approval. Artwork and text is not protected from change. Only the owner of the bundle can make those changes. Be thoughtful about which bundles you include your games in; as those invited do not have input via Steam to the description or artwork. [*][b]Q. …
You can assign a particular build to an alternative branch that users can opt in to via the Steam client. You can also password protect these branches if you wish to use them only with select individuals or within your own team. For more details, please see [doclink=store/application/branches]Branches Documentation[/doclink] [section=dlc]Testing DLC[/section] Testing a DLC is very similar to testing a game. …