Unity SDK

The official InvoSDK plugin for Unity enables seamless integration with the Invo Network platform for in-game currency management, item purchases, player-to-player transfers, and cross-game currency sends.

Unity 6 (6000.0+) Compatible

The InvoSDK plugin is built for Unity 6 with full C# async/await support, pre-built UI components, and Editor tools for rapid integration.

Quick Integration - Get Started in 30 Minutes

The InvoSDK Unity plugin is available on GitHub and designed for rapid integration. Get your game connected to the Invo Network in as little as 30 minutes. View on GitHub

Easy Installation

Copy to Assets folder and configure via Setup Wizard

Pre-built UI

Production-ready UI components you can customize

Async/Await

Modern C# async patterns throughout

Editor Tools

Setup Wizard, Test Purchase, Balance tools

Core Features

Currency Purchases

Allow players to buy in-game currency with real money via secure Invo Payments integration.

Item Marketplace

Full catalog management with categories, rarities, discounts, and featured items.

Cross-Game Transfers

Enable players to transfer currency to other games in the Invo Network ecosystem.

Sender Approval

Senders approve player-to-player sends and transfers with a passkey or QR device approval.

Installation

Requirements

  • Unity 6 (6000.0+)
  • .NET Standard 2.1
  • Newtonsoft.Json (com.unity.nuget.newtonsoft-json)
  • An Invo developer account

Step 1: Download the SDK

Clone the InvoSDK from GitHub:

git clone https://github.com/Invo-Technologies/Invo-unity-sdk.git

Step 2: Copy SDK Files

Copy the following into your Unity project's Assets folder:

YourProject/
└── Assets/
    ├── InvoSDK/           ← Copy this folder
    │   └── Resources/
    │       └── InvoSDKConfig.asset  ← Created by the Setup Wizard
    └── APIManager.cs      ← Copy this file

Step 3: Install Dependencies

Open Window → Package Manager and install:

com.unity.nuget.newtonsoft-json

Step 4: Run Setup Wizard

The Setup Wizard opens automatically on first import. You can also access it via:

  1. 1.Open your project in Unity Editor
  2. 2.Go to InvoSDK → Setup Wizard in the menu
  3. 3.Enter your SDK Key, Game ID, and other settings
  4. 4.Click Save to create your configuration

Configuration

The SDK uses a ScriptableObject for configuration, stored at Assets/InvoSDK/Resources/InvoSDKConfig.asset:

FieldTypeDescription
sdkKeystringYour sandbox SDK key, for sandbox builds only. A production build must not carry a key: the SDK refuses to send it from a production build.
gameIdstringYour unique game identifier
gameNamestringDisplay name for your game
playerEmailstringDefault player email (for testing)
playerPhonestringPlayer phone, part of the player identity (email + phone)
gameCurrencyNamestringName of your in-game currency
useProductionboolToggle between sandbox/production
gameServerUrlstringRequired for production (3.0.0+). Base URL of your own server. Every call that needs the game secret goes to <gameServerUrl>/api/<Invo path>; your server checks the player's session, adds X-Game-Secret-Key and forwards it unchanged. See the plugin README, "Server-side proxy".
checkoutSessionEndpointstringYour server endpoint that mints a hosted checkout session and returns checkout_url.

Security Warning

Never ship sdkKey in client builds. Store server-side for production deployments.

Quick Start

Access the API manager anywhere in your code using the singleton pattern:

Get Player Balance

using InvoSDK;

// Get player's current balance
await APIManager.Instance.GetPlayerBalanceAsync(
    email: "player@example.com",
    onSuccess: (response) => {
        foreach (var balance in response.balances) {
            Debug.Log(
quot;{balance.currency_name}: {balance.total_balance}"); } }, onError: (error) => Debug.LogError(error) );

Purchase an Item

using InvoSDK;

// Keep the same clientRequestId if you retry this purchase.
await APIManager.Instance.PurchaseItemAsync(
    clientRequestId: System.Guid.NewGuid().ToString(),
    playerEmail: "player@example.com",
    playerName: "PlayerOne",
    itemId: "sword_001",
    itemName: "Legendary Sword",
    quantity: 1,
    unitPrice: 9.99m,     // decimal, not float
    totalPrice: 9.99m,
    onSuccess: (response) => {
        Debug.Log(
quot;Purchase successful! Transaction: {response.transaction_id}"); }, onError: (error) => Debug.LogError(error) );

Fetch Game Items Catalog

using InvoSDK;

await APIManager.Instance.GetGameItemsAsync(
    onSuccess: (response) => {
        foreach (var item in response.items) {
            Debug.Log(
quot;{item.item_name}: ${item.price_usd}"); } }, onError: (error) => Debug.LogError(error) );

API Reference

MethodEndpointDescriptionAuth
GetPlayerBalanceAsyncGET /api/player-balances/player/by-email/{email}Get a player balanceGame secret
GetGameItemsAsyncPOST /api/v1/game-items/listFetch the item catalogGame secret
PurchaseItemAsyncPOST /api/item-purchases/purchase-itemBuy an item with coinsGame secret
GetSendDestinationsAsyncPOST /api/currency-sends/available-destinationsTitles this title can send currency toGame secret
GetTransferDestinationsAsyncPOST /api/transfers/available-destinationsTitles this title can transfer currency toGame secret
InitiateSendAsyncPOST /api/currency-sends/initiate-sendStart a player-to-player sendGame secret
InitiateTransferAsyncPOST /api/transfers/initiate-transferStart a cross-game self-transferGame secret
GetPlayerTokenAsyncPOST /api/sdk/player-tokenMint the player tokenGame secret
GetPendingActionsAsyncGET /api/sdk/transfers/pendingWhat the player has to approve or collectPlayer token
ClaimCurrencyAsync / ClaimTransferAsyncPOST /api/currency-sends/claim-currency, POST /api/transfers/claim-transferLegacy claim-code fallback, being retiredGame secret
VerifySendSmsAsync / VerifyTransferSmsAsyncPOST /api/currency-sends/verify-sms, POST /api/transfers/verify-smsLegacy, deprecated: do not build on it. Approve with a passkey or QR device approval.Game secret

Paths are production (https://invo.network/api/...); sandbox is https://sandbox.invo.network/sandbox/api/.... Calls marked Game secret never carry your secret from a production build: set InvoSDKConfig.gameServerUrl and the SDK sends them to your server, which attaches X-Game-Secret-Key and forwards them (the plugin README, "Server-side proxy"). Only sandbox builds may hold the key directly.

API Environments

Sandbox (Development)

Use for development and testing. No real money.

Production (Live)

Live games only. Real money transactions.

Pre-built UI Components

The SDK includes production-ready UI components in Assets/InvoSDK/Scripts/UI/:

Item Purchase Panel

Grid display with item cards and purchase confirmation

Featured Items

Daily and weekly featured item showcases

Transfer Wizard

4-step currency transfer flow with sender approval

Send Currency Panel

Player-to-player send interface

Window Manager

Panel-based navigation system

Verification Input

Code input component

Editor Tools

Access these tools from the Unity menu under InvoSDK:

Setup Wizard

Configure all SDK settings, quick links to documentation and console.

InvoSDK → Setup Wizard

Item Catalog

Manage items, prices, discounts, and categories.

InvoSDK → Item Catalog

Test Purchase

Test currency purchases with pre-configured payment methods.

InvoSDK → Test Purchase

Player Balance

Check player balances during development.

InvoSDK → Player Balance

Troubleshooting

IssueSolution
"Config not found!"Ensure InvoSDKConfig.asset exists in Assets/InvoSDK/Resources. Run the Setup Wizard.
JSON parse errorsVerify Newtonsoft.Json package is installed and included in build.
401/403 errorsCheck SDK key is correct. Verify using correct environment.
Balance not updatingCheck balancePollInterval setting. Verify network connectivity.