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 ..…
. [*][b]Yellow[/b] means your game is running at half rate (each submitted frame is taking between 1 and 2 vsync intervals to finish). [*][b]Red[/b] means your game is taking more than 2 vsync intervals to finish each frame. [*][b]Pink[/b] means SteamVR's compositor GPU preemption failed for some reason. …
[olist] [*]On HMD: Launch [b]Lepton Development[/b] from your Steam Library, and wait for it to finish loading. [*]On PC: [b]adb connect frame[/b] [*]On PC: Open [b]RenderDoc[/b] and in the lower left hand corner select the [b]Android 5.x [/b]device [*]On PC: [b]adb install[/b] your app [*]On PC: In [b]RenderDoc [/b]under [b]Launch Application[/b] select the executable path for your app. …
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. …
. [*]Once enabled, you'll need to add your games, configure sections and finish most of the merchandising work to organize the games in your sale. [*]Flip over to the 'preview' of your sale page, and you'll see the controls to enable background groupings. …
Figure out what features are valuable for your goals and your customers. [*][b]Launch day is the starting line not the finish line[/b] – It's very likely that the game you launch on launch day is not the best it can be. If you're serious about making a great product, you want to continue patching and updating your game. …
[b]Early Access is not a pre-purchase[/b] Early Access is not meant to be a form of pre-purchase, but a tool to get your game in front of Steam users and gather feedback while finishing your game. Early Access titles must deliver a playable game or usable software to the customer at the time of purchase, while pre-purchase games are delivered at a future date. …
[/i] [/b]For example, there is no way you can know exactly when the game will be finished, that the game will be finished, or that planned future additions will definitely happen. Do not ask your customers to bet on the future of your game. …
This call is asynchronous, a [apitype]ISteamScreenshots::ScreenshotReady_t[/apitype] callback will be sent when the screenshot has finished writing to disk. [subsection=HookScreenshots]HookScreenshots[/subsection] [code=cpp]void HookScreenshots( bool bHook );[/code] [table] [tr][th]Name[/th][th]Type[/th][th]Description[/th][/tr] [tr][td][b]bHook[/b][/td][td]bool[/td][td]Enable ([b]true[/b]) or disable ([b]false[/b]) hooking?…
This call is asynchronous, the [apitype]ISteamScreenshots::ScreenshotReady_t[/apitype] callback will be sent when the screenshot has finished writing to disk. [section=callbacks]Callbacks[/section] These are callbacks which can be fired by calling [api]steam_api::SteamAPI_RunCallbacks[/api]. …
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. More details on the Web API can be found [doclink=webapi_overview]here[/doclink]. …
[api]ISteamUser::GetAuthSessionTicket[/api] must be called for every client in the mulitplayer session who requests a ticket. [*] When used to authenticate players within a peer-to-peer multiplayer session, each game client should verify the identity of every other game client in the multiplayer session. [*] When finished with a Session Ticket, [api]ISteamUser::CancelAuthTicket[/api] must be called for every handle returned by [api]ISteamUser::GetAuthSessionTicket[/api]. [*] When client A calls [api]ISteamUser::CancelAuthTicket[/api], client B will receive a [api]ISteamUser::ValidateAuthTicketResponse_t[/api] callback stating that client A's ticket is no longer valid. [*] When client A leaves a game with client B, if client A's call of [api]ISteamUser::CancelAuthTicket[/api] is processed before client B call's of [api]ISteamUser::EndAuthSession[/api], then client B may receive a [api]ISteamUser::ValidateAuthTicketResponse_t[/api] callback stating that the ticket was cancelled. …
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.…
[subsection]Store Presence[/subsection] The Store Presence checklist consists of required items that need to be completed before you can list the store page as [url=https://partner.steamgames.com/doc/store/coming_soon]coming soon[/url] and for release. Once this checklist is finished, you'll be able to submit your store presence for review by clicking "Mark as ready for review". Our review of your store presence typically takes 3-5 business days to complete, but you'll want to submit your page for review at least 7 days before you want it live to account for potential changes you'll need to make. …
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. …
This will let item authors start coming up with ideas and posting their items to your Workshop for evaluation by the community. We typically suggest that you ask item authors to post finished items to the Workshop. If you allow users to post incomplete work or mere concepts, then you will need to figure out what the process would be that those concepts get turned into real items, which typically becomes a difficult to scale up in any meaningful way. …
This enables Steam to deliver a separate version of your game that customers have to opt in to and can be optionally password protected. [*] Beta of your Workshop (via Group) - You can set up a group in the Steam Community and use membership in that group to gate access to the Steam Workshop. …
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! …
For that reason, we require that you include the following information anywhere you sell Steam keys for your Early Access title: [olist][*]Display one of these Steam Early Access logos: [docimg=Logo_SteamEarlyAccess_Stacked.png]Steam Early Access[/docimg] OR [docimg=Logo_SteamEarlyAccess.png]Steam Early Access[/docimg] (download [docfile=SteamEarlyAccessLogos-All.zip]SteamEarlyAccessLogos.zip[/docfile] for all languages) [*]Include this text, clearly legible on the page: [b]This Steam Early Access game is currently not a finished game and may or may not change significantly over the course of development. To learn more about Steam Early Access, please visit http://store.steampowered.com/earlyaccessfaq/[/b] [*]Clearly describe the current state of your game. …
[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. …