On the server, call the InitTxn endpoint of the ISteamMicroTxn web API with the player's Steam ID, your app ID, a unique order ID, the list of items with amounts and descriptions, and your publisher web API key.
Receive the transaction ID (txnid) from the InitTxn response and pass it to the game client.
On the client, call ISteamMicroTxn::InitiateGamePurchase (or the equivalent overlay trigger) with the txnid to display the Steam purchase dialog to the player.
Listen for the MicroTxnAuthorizationResponse_t callback on the client; on approval, notify your server with the order ID.
On the server, call the FinalizeTxn endpoint with the order ID and txnid to complete the transaction and charge the player; only grant items after this call succeeds.
Handle edge cases: check QueryTxn to verify transaction status before granting items if your server did not receive the finalization response cleanly.
Known gotchas
Never grant items based solely on the client-side callback; always finalize and confirm server-side before modifying player inventory.
Order IDs must be unique per transaction and generated server-side; reusing an order ID will cause InitTxn to return an error.
Steam sandbox mode exists for testing; ensure your server targets the sandbox endpoint during development and switches to production before shipping.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp