FlittSDK 2.0.0

dotnet add package FlittSDK --version 2.0.0
                    
NuGet\Install-Package FlittSDK -Version 2.0.0
                    
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="FlittSDK" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlittSDK" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="FlittSDK" />
                    
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 FlittSDK --version 2.0.0
                    
#r "nuget: FlittSDK, 2.0.0"
                    
#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 FlittSDK@2.0.0
                    
#: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=FlittSDK&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=FlittSDK&version=2.0.0
                    
Install as a Cake Tool

Flitt C# SDK

<p align="center"> <a href="https://www.nuget.org/packages/FlittSDK/"><img src="https://img.shields.io/nuget/v/FlittSDK.svg" /></a> <a href="https://www.nuget.org/packages/FlittSDK/"><img src="https://img.shields.io/nuget/dt/FlittSDK.svg" /></a> </p>

Payment service provider

A payment service provider (PSP) offers shops online services for accepting electronic payments by a variety of payment methods including credit card, bank-based payments such as direct debit, bank transfer, and real-time bank transfer based on online banking. Typically, they use a software as a service model and form a single payment gateway for their clients (merchants) to multiple payment methods. read more

Installation

SDK availble on NuGet.

Requirements

Flitt account - Register here

Newtonsoft.json (JSON.NET)

The package targets netstandard2.0 and netstandard2.1. Existing protocol 1.0 JSON, form, and XML integrations remain binary-compatible. XML is deprecated; protocol 2.0 uses JSON.

Simple Start

using FlittSDK;
using FlittSDK.Checkout;

IFlittClient client = new FlittClient(new FlittClientOptions {
  MerchantId = 1549901,
  SecretKey = "test",
  CreditKey = "testcredit",
  BaseAddress = new Uri("https://pay.flitt.com/api/"),
  Protocol = "2.0",
  Timeout = TimeSpan.FromSeconds(30)
});

var req = new CheckoutRequest {
  order_id = Guid.NewGuid().ToString("N"),
  amount = 100000,
  order_desc = "checkout json demo",
  currency = "GEL"
};
var resp = await new Url(client).PostAsync(req, cancellationToken);
if (resp.Error == null) {
 string url = resp.checkout_url;
}

Api

See the official C# SDK documentation.

New payment methods

Open Banking:

var response = new OpenBanking(client).Post(new OpenBankingRequest {
    order_id = Guid.NewGuid().ToString(),
    order_desc = "Open Banking payment",
    amount = 10000,
    currency = "GEL",
    payment_method = "tbc" // tbc, bog, liberty, credo, x
});

Installments use new Installments(client).Post(...) with payment_method equal to tbc or x. The resulting URL is a bank deeplink/SCA URL: pass it to the customer unchanged and confirm the payment using the server callback or order status.

IBAN payout:

var payout = await new FlittSDK.Payment.IbanCredit(client).PostAsync(new IbanCreditRequest {
    amount = 10000,
    currency = "GEL",
    receiver_iban = "GE00TB0000000000000001"
});

IBAN and P2P payouts use the client's CreditKey; purchases use SecretKey.

Order updates

var capture = new FlittSDK.Order.Capture(client).CaptureFull(
    new CaptureRequest { order_id = orderId, currency = "GEL" });

var reverse = new FlittSDK.Order.Reverse(client).ReverseFull(
    new ReverseByOrder { order_id = orderId, currency = "GEL" });

var fiscal = new FlittSDK.Order.FiscalData(client).Post(
    new FiscalDataRequest { order_id = orderId });

Atol is retained as an obsolete compatibility adapter and now calls /fiscal_data/. Calendar payments can be stopped with new Subscription(client).Stop(orderId).

Dependency injection, async, and transport

FlittClient keeps credentials and response state per instance/per request. For ASP.NET Core, AddFlitt() registers a default IFlittClient, IFlittClientFactory, and a named client managed by IHttpClientFactory. All primary endpoint classes provide true asynchronous counterparts accepting a CancellationToken:

builder.Services.AddFlitt(options => {
    options.MerchantId = merchantId;
    options.SecretKey = secretKey;
    options.CreditKey = creditKey;
    options.BaseAddress = new Uri("https://pay.flitt.com/api/");
    options.Protocol = "2.0";
    options.Timeout = TimeSpan.FromSeconds(15);
});

var response = await new Token(client).PostAsync(request, cancellationToken);

For dynamic multi-merchant applications, inject IFlittClientFactory:

IFlittClient merchantClient = factory.CreateClient(
    merchantId,
    merchantSecretKey,
    merchantCreditKey
);

Use factory.CreateClient(new FlittClientOptions { ... }) when a merchant also requires a different BaseAddress, protocol, content type, or timeout.

The default non-DI transport uses a process-wide IHttpClientFactory with a five-minute handler lifetime, preserving connection pooling while periodically refreshing DNS endpoints. ASP.NET Core registrations use the application's IHttpClientFactory and dispose each short-lived client after the buffered response while the factory manages handler lifetime. There is no WebRequest/HttpWebRequest path. Custom transports implement IFlittTransport, which also makes integration tests deterministic without sending payment requests. IFlittClient can be mocked directly.

The static Config and Client APIs are obsolete compatibility facades. They remain available so existing 1.x binaries and source integrations continue to work, but new multi-merchant or concurrent applications should not use them. FlittContentType.Xml and XmlFormatter are also obsolete; migrate to JSON. Caller-requested cancellation propagates as OperationCanceledException with the caller's token; SDK timeouts remain ClientException with code 408.

The repository and NuGet package are licensed under GPL-3.0-only.

Company Reports

Company Reports is a separate service and uses application_id/key, not the merchant secret:

var reports = new CompanyReports(client);
var report = await reports.GetAsync(new CompanyReportsRequest {
    application_id = "1019",
    key = "test",
    report_id = 745,
    merchant_id = 1549902
});

The old Payment.Reports.Post method remains available for the legacy merchant /reports/ endpoint. GetCompanyReport is a migration shortcut to the separate Company Reports service.

Test stands

The repository includes isolated NuGet consumer stands for a clean 2.0.0 installation and an unchanged application upgraded from 1.0.0 to 2.0.0. The full runner also executes package API validation and can enable real Flitt API integration tests:

RUN_LIVE_TESTS=1 FLITT_BASELINE_PACKAGE=/path/to/FlittSDK.1.0.0.nupkg \
  bash tests/run-all.sh

See tests/TestStands/README.md for details.

Examples

To check it you can use build-in ISS server http://localhost:7777/

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
2.0.0 40 9/1/2026
1.0.0 5,488 3/13/2025

Open Banking, installments, IBAN payouts, fiscal data, Company Reports, full capture/reverse, async APIs, AddFlitt DI, dynamic multi-merchant factory and DNS-safe HttpClient handler rotation.