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.uplugin

Step 3: Enable the Plugin

  1. 1.Open your project in Unreal Editor
  2. 2.Go to Edit → Plugins
  3. 3.Search for "InvoSDK" and enable it
  4. 4.Restart the editor when prompted

Configuration

The setup wizard automatically creates an InvoSDKConfig asset on first launch. Configure it with your credentials:

FieldDescriptionRequired
sdkKeyYour Invo API secret keyYes
gameIdYour unique game identifierYes
gameNameDisplay name for your gameYes
playerEmailCurrent player's email addressYes
useProductionToggle between production/sandboxYes
gameIconUrlURL to your game iconNo
gameCurrencyNameName of your in-game currencyNo

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. 1.Right-click in your Blueprint and search for "Invo Request" under InvoSDK | API
  2. 2.Configure the request parameters (Base URL, Endpoint, Headers, Body, Method)
  3. 3.Connect the OnSuccess and OnFail execution pins to your handlers

Blueprint Node Configuration

Input Parameters:

  • Base URL - API host URL
  • Endpoint - API endpoint path
  • Headers - HTTP headers map
  • Body - Request body (JSON)
  • Method - GET, POST, PUT, DELETE

Output Delegates:

  • OnSuccess - Called on 2xx response
  • OnFail - Called on error/non-2xx

Delegate Parameters:

  • ResponseContent - Raw response
  • StatusCode - HTTP status
  • bWasSuccessful - Success flag
  • JsonObject - Parsed JSON

JSON Helper Functions

Use the InvoSDK | JSON category for parsing JSON responses in Blueprints:

GetStringField

Extract a string value from JSON

GetIntegerField

Extract an integer value from JSON

GetBoolField

Extract a boolean value from JSON

GetObjectsArray

Extract 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)

Use for development and testing. No real money.

Production (Live)

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

IssueCauseSolution
"Config not found!"InvoSDKConfig asset missingCreate and configure InvoSDKConfig asset
"Player email not set!"Empty playerEmail in configSet playerEmail in config or API call
401 UnauthorizedInvalid/expired tokenRe-authenticate and refresh token
403 ForbiddenGame inactive or wrong environmentVerify the SDK key matches the environment (sandbox vs production) and the game is set to live or testing
Request timeoutNetwork issuesVerify connectivity and endpoint URL

Enable Debug Logging

Add the following to your DefaultEngine.ini:

[Core.Log]
LogTemp=Verbose