OpenBankingIO.Client
0.3.0
dotnet add package OpenBankingIO.Client --version 0.3.0
NuGet\Install-Package OpenBankingIO.Client -Version 0.3.0
<PackageReference Include="OpenBankingIO.Client" Version="0.3.0" />
<PackageVersion Include="OpenBankingIO.Client" Version="0.3.0" />
<PackageReference Include="OpenBankingIO.Client" />
paket add OpenBankingIO.Client --version 0.3.0
#r "nuget: OpenBankingIO.Client, 0.3.0"
#:package OpenBankingIO.Client@0.3.0
#addin nuget:?package=OpenBankingIO.Client&version=0.3.0
#tool nuget:?package=OpenBankingIO.Client&version=0.3.0
<p align="center"> <a href="https://open-banking.io"> <img src="https://raw.githubusercontent.com/open-banking-io/clients/main/.github/logo.png" alt="open-banking.io" height="56"> </a> </p>
OpenBankingIO.Client (.NET)
Server-to-server client for open-banking.io. It authenticates with your API key and decrypts the zero-knowledge data envelopes locally with your exported private key — the service only ever returns ciphertext it cannot read.
dotnet add package OpenBankingIO.Client
using OpenBankingIO.Client;
// Load the credentials .json you exported from the app (API key + private key).
using var client = OpenBankingClient.FromCredentials("credentials.json");
foreach (var account in await client.GetAccountsAsync())
{
var booked = account.Balances.FirstOrDefault(b => b.Type == "ITBD");
Console.WriteLine($"{account.DisplayName ?? account.OwnerName} {account.Iban}: {booked?.Amount} {account.Currency}");
var page = await client.GetTransactionsAsync(account.Id, limit: 50);
foreach (var t in page.Items)
Console.WriteLine($" {t.BookingDate:yyyy-MM-dd} {t.CreditorName ?? t.DebtorName} {t.Amount} {t.Currency}");
}
// Trigger an online sync (decrypts the account uid locally and posts it):
await client.SyncAsync(accountId);
When the client creates its own HttpClient it applies a 30s request timeout and sends User-Agent: open-banking-io/dotnet/<version>; a caller-supplied HttpClient is left untouched.
Or construct it explicitly:
using var client = new OpenBankingClient(apiBaseUrl, apiKey, privateKeyPkcs8Base64);
Encryption
Envelopes use ECDH P-256 → HKDF-SHA256 → AES-256-GCM. Decryption requires the private key from
your credentials bundle and happens entirely in-process; amounts are exposed as decimal. Full wire
format and the other language clients:
repo README ·
THREAT_MODEL.md.
MIT licensed.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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 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. |
-
net10.0
- No dependencies.
-
net8.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.