TBankNet.Multisplit 0.3.0-preview.2

This is a prerelease version of TBankNet.Multisplit.
dotnet add package TBankNet.Multisplit --version 0.3.0-preview.2
                    
NuGet\Install-Package TBankNet.Multisplit -Version 0.3.0-preview.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TBankNet.Multisplit" Version="0.3.0-preview.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TBankNet.Multisplit" Version="0.3.0-preview.2" />
                    
Directory.Packages.props
<PackageReference Include="TBankNet.Multisplit" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TBankNet.Multisplit --version 0.3.0-preview.2
                    
#r "nuget: TBankNet.Multisplit, 0.3.0-preview.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TBankNet.Multisplit@0.3.0-preview.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TBankNet.Multisplit&version=0.3.0-preview.2&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=TBankNet.Multisplit&version=0.3.0-preview.2&prerelease
                    
Install as a Cake Tool

TBankNet.Multisplit

.NET SDK package for T-Bank Multisplit provider shop registration and updates.

Install

dotnet add package TBankNet.Multisplit --prerelease

Supported API

TBankNet.Multisplit currently includes typed support for:

  • OAuth token acquisition via /oauth/token
  • provider shop registration via POST /sm-register/register
  • shop lookup by shopCode via GET /sm-register/register/shop/{shopCode}
  • provider banking detail updates via PATCH /sm-register/register/{shopCode}
  • typed validation and API error responses

Quick Start

using TBankNet.Multisplit;

using var httpClient = new HttpClient();

var client = new TBankMultisplitClient(httpClient, new TBankMultisplitClientOptions
{
    Username = "login-from-bank",
    Password = "...",
    Environment = TBankMultisplitEnvironment.Test
});

// The SDK issues tokens; it does not hold them. Cache and refresh where you know how many
// requests share one credential.
var token = (await client.GetAccessTokenAsync()).ToAccessToken();

var shop = await client.GetShopAsync("111111111", token);

Console.WriteLine(shop.Name);
Console.WriteLine(shop.BankAccount?.Bik);

Set exactly one of Environment or BaseAddress — they name the same thing, and setting both is rejected rather than silently resolved. There is no default: the API host is never assumed.

Access Tokens

GetAccessTokenAsync is the only call that talks to /oauth/token. Every other method takes the token you pass it, so one token serves many calls and the refresh policy stays yours:

private TBankMultisplitAccessToken cached;

private async Task<TBankMultisplitAccessToken> GetTokenAsync(CancellationToken ct)
{
    if (cached.IsExpired())
    {
        cached = (await client.GetAccessTokenAsync(ct)).ToAccessToken();
    }

    return cached;
}

ExpiresAt is computed from expires_in against the moment the request was sent, so it is never optimistic. When the bank reports no lifetime it stays null and IsExpired() returns false — better a 401 you can retry than a working token thrown away on a guess.

TLS

T-Bank serves *.tinkoff.ru from the Russian Trusted CA (Минцифры), whose root ships in no common OS or container image. A default HttpClient fails the handshake with UntrustedRoot before any request is sent.

Install the root into the system trust store and no code is needed:

# Debian/Ubuntu
sudo cp russian_trusted_root_ca_pem.crt /usr/local/share/ca-certificates/russian_trusted_root_ca.crt
sudo update-ca-certificates

Otherwise extend trust on the HttpClient you pass to the client — keep the system check first and add the Минцифры root only as a fallback anchor, so a hostname mismatch or an expired certificate is still rejected. The repository README has a full example.

Only the RSA chain is usable: .NET verifies neither GOST R 34.10-2012 signatures nor GOST TLS cipher suites on any platform.

Production access to acqapi.tinkoff.ru may also require an mTLS client certificate and IP allow-listing according to T-Bank registration API requirements.

Registration

Registration uses TBankRegisterShopRequest with typed nested models for addresses, phones, founders, CEO data, licenses, and bank account details.

The client performs conservative local validation for required fields and sends JSON with T-Bank wire names and casing.

Error Handling

Non-success HTTP responses are thrown as TBankMultisplitApiException with typed TBankMultisplitErrorResponse data when the response body can be parsed.

Transport, protocol, and local validation failures are thrown as SDK exceptions.

Repository

Source, issue tracking, and full documentation live in the repository:

https://github.com/ai-iskuzhin/TBankNet.Multisplit

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0-preview.2 248 9/13/2026
0.3.0-preview.1 65 9/13/2026