Unreal Engine SDK
The official InvoSDK plugin for Unreal Engine enables seamless integration with the Invo platform for in-game currency management, item purchases, and player-to-player transfers.
Unreal Engine 4.27+ & 5.x Compatible
The InvoSDK plugin supports both Unreal Engine 4.27+ and Unreal Engine 5.x with full Blueprint and C++ integration.
Quick Integration - Get Started in 30 Minutes
The InvoSDK Unreal 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
Drop into your Plugins folder and go
Blueprint Support
Full Blueprint integration for visual scripting
C++ Native
Direct C++ API for maximum control
Pre-built UI
Ready-to-use UMG widget components
Installation
Prerequisites
- Unreal Engine 4.27+ or Unreal Engine 5.x
- Windows 64-bit development environment
- Visual Studio 2019 or later (for C++ development)
- An Invo developer account
Step 1: Download the Plugin
Download the latest InvoSDK plugin from the Invo Developer Console or clone from GitHub:
git clone https://github.com/Invo-Technologies/invo-unreal-sdk.git
Step 2: Install the Plugin
Copy the InvoSDK folder into your project's Plugins directory:
YourProject/
├── Content/
├── Source/
└── Plugins/
└── InvoSDK/ ← Place here
├── Source/
├── Content/
└── InvoSDK.upluginStep 3: Enable the Plugin
- 1.Open your project in Unreal Editor
- 2.Go to Edit → Plugins
- 3.Search for "InvoSDK" and enable it
- 4.Restart the editor when prompted
Configuration
The setup wizard automatically creates an InvoSDKConfig asset on first launch. Configure it with your credentials:
| Field | Description | Required |
|---|---|---|
| sdkKey | Your Invo API secret key | Yes |
| gameId | Your unique game identifier | Yes |
| gameName | Display name for your game | Yes |
| playerEmail | Current player's email address | Yes |
| useProduction | Toggle between production/sandbox | Yes |
| gameIconUrl | URL to your game icon | No |
| gameCurrencyName | Name of your in-game currency | No |
Security Warning
Never ship sdkKey in client builds. Use server-side authentication for production deployments.
Blueprint Integration
The SDK provides full Blueprint support for visual scripting. Here's how to make an API request:
Making an API Request
- 1.Right-click in your Blueprint and search for "Invo Request" under InvoSDK | API
- 2.Configure the request parameters (Base URL, Endpoint, Headers, Body, Method)
- 3.Connect the OnSuccess and OnFail execution pins to your handlers
Blueprint Node Configuration
Input Parameters:
Base URL- API host URLEndpoint- API endpoint pathHeaders- HTTP headers mapBody- Request body (JSON)Method- GET, POST, PUT, DELETE
Output Delegates:
OnSuccess- Called on 2xx responseOnFail- Called on error/non-2xx
Delegate Parameters:
ResponseContent- Raw responseStatusCode- HTTP statusbWasSuccessful- Success flagJsonObject- Parsed JSON
JSON Helper Functions
Use the InvoSDK | JSON category for parsing JSON responses in Blueprints:
GetStringFieldExtract a string value from JSON
GetIntegerFieldExtract an integer value from JSON
GetBoolFieldExtract a boolean value from JSON
GetObjectsArrayExtract an array of JSON objects
C++ Integration
For maximum control, use the C++ API directly. Include the necessary headers and link against the InvoSDK module.
Include Headers
#include "InvoSDKApiManager.h" #include "InvoSDKJsonHelpers.h"
Example: Fetch Player Balance
// IMPORTANT: This must run on your dedicated server / authority — never on a
// shipped client build. The SDK key authenticates as your game.
void AMyActor::FetchPlayerBalance(const FString& PlayerEmail)
{
TMap<FString, FString> Headers;
Headers.Add(TEXT("X-Game-Secret-Key"), GetEnvSdkKey()); // server-side env
UInvoSDKApiManager* Request = UInvoSDKApiManager::InvoRequest(
this,
TEXT("https://sandbox.invo.network"),
FString::Printf(TEXT("/sandbox/api/player-balances/player/by-email/%s"),
*FGenericPlatformHttp::UrlEncode(PlayerEmail)),
Headers,
TEXT(""),
EInvoHttpMethod::GET
);
Request->OnSuccess.AddDynamic(this, &AMyActor::OnBalanceReceived);
Request->OnFail.AddDynamic(this, &AMyActor::OnRequestFailed);
Request->Activate();
}
void AMyActor::OnBalanceReceived(
const FString& Content,
int32 StatusCode,
bool bSuccess,
const FJsonObjectWrapper& Json)
{
// Parse the response using JSON helpers
FString PlayerEmail = UInvoSDKJsonHelpers::GetStringField(Json, TEXT("player_email"));
int32 Balance = UInvoSDKJsonHelpers::GetIntegerField(Json, TEXT("balance"));
UE_LOG(LogTemp, Log, TEXT("Player %s balance: %d"), *PlayerEmail, Balance);
}
void AMyActor::OnRequestFailed(
const FString& Content,
int32 StatusCode,
bool bSuccess,
const FJsonObjectWrapper& Json)
{
UE_LOG(LogTemp, Error, TEXT("Request failed [%d]: %s"), StatusCode, *Content);
}Example: Purchase Item
void AStoreManager::PurchaseItem(const FString& ItemId, int32 Quantity)
{
// Build JSON body
TSharedPtr<FJsonObject> JsonBody = MakeShareable(new FJsonObject);
JsonBody->SetStringField(TEXT("itemId"), ItemId);
JsonBody->SetNumberField(TEXT("quantity"), Quantity);
FString BodyString;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&BodyString);
FJsonSerializer::Serialize(JsonBody.ToSharedRef(), Writer);
TMap<FString, FString> Headers;
Headers.Add(TEXT("X-Game-Secret-Key"), GetEnvSdkKey()); // server-side env
Headers.Add(TEXT("Content-Type"), TEXT("application/json"));
UInvoSDKApiManager* Request = UInvoSDKApiManager::InvoRequest(
this,
TEXT("https://sandbox.invo.network"),
TEXT("/sandbox/api/item-purchases/purchase-item"),
Headers,
BodyString,
EInvoHttpMethod::POST
);
Request->OnSuccess.AddDynamic(this, &AStoreManager::OnPurchaseSuccess);
Request->OnFail.AddDynamic(this, &AStoreManager::OnPurchaseFailed);
Request->Activate();
}API Environments
Sandbox (Development)
- Host:
https://sandbox.invo.network - API:
/sandbox/api/* - Auth:
/sandbox/auth/* - Console: dev.console.invo.network
Use for development and testing. No real money.
Production (Live)
- Host:
https://invo.network - API:
/api/* - Auth:
/auth/* - Console: console.invo.network
Live games only. Real money transactions.
Pre-built UI Components
The SDK includes ready-to-use UMG widgets located in Content/UI/ and Content/Widgets/:
Daily Deals
Daily rotating offers display
Featured Items
Showcase featured items and bundles
Item Purchase
Purchase confirmation flow
Send Currency
Player-to-player send flow
Transfer Currency
Cross-game transfer interface
SMS Verification
Two-factor verification widget
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| "Config not found!" | InvoSDKConfig asset missing | Create and configure InvoSDKConfig asset |
| "Player email not set!" | Empty playerEmail in config | Set playerEmail in config or API call |
| 401 Unauthorized | Invalid/expired token | Re-authenticate and refresh token |
| 403 Forbidden | Game inactive or wrong environment | Verify the SDK key matches the environment (sandbox vs production) and the game is set to live or testing |
| Request timeout | Network issues | Verify connectivity and endpoint URL |
Enable Debug Logging
Add the following to your DefaultEngine.ini:
[Core.Log] LogTemp=Verbose
Resources
Additional documentation and support channels