.NET client for eConnect POS JsonApi.
License
—
Deps
12
Install Size
—
Vulns
✓ 0
Published
Feb 25, 2026
$ dotnet add package eConnect.PosSdk.NET client for eConnect POS JsonApi.
dotnet add package eConnect.PosSdk
using eConnect.PosSdk;
using eConnect.PosSdk.ApiEvents;
using Microsoft.Extensions.Logging;
// Sample authentication parameters — production values provided by eConnect
var options = new PosClientOptions
{
PluginId = "b510fb1f-124f-46dc-a7f3-cc9813755fa6",
AuthId = Guid.NewGuid().ToString(),
Host = "devcenter.econnect.tv",
Port = 6500,
UseSsl = true, // optional, defaults to true
TcpTimeout = TimeSpan.FromMinutes(1), // optional, defaults to 1 minute
KeepAliveInterval = TimeSpan.FromMinutes(2) // optional, defaults to 2 minutes
// set KeepAliveInterval = TimeSpan.Zero to disable keep-alive messages
};
// PosClient requires an ILogger instance (use NullLogger.Instance if logging is not needed)
await using var client = new PosClient(options, logger);
await client.ConnectAsync();
var signIn = new SignInEvent
{
RevenueCenterNumber = 1,
TerminalNumber = 123,
EmployeeNumber = 456
};
string response = await client.SendAsync(signIn);
// response == "Valid signin event object received"
var newCheck = new NewCheckEvent
{
RevenueCenterNumber = 248,
TerminalNumber = 1132,
EmployeeNumber = 634277,
CheckNumber = 237712
};
await client.SendAsync(newCheck);
var itemAdd = new ItemAddEvent
{
RevenueCenterNumber = 248,
TerminalNumber = 1132,
EmployeeNumber = 634277,
CheckNumber = 237712,
ItemId = "049000608779",
ItemName = "Apple (Golden Delicious)",
Quantity = 1,
Amount = 0.99M
};
await client.SendAsync(itemAdd);
var totalDue = new TotalDueEvent
{
RevenueCenterNumber = 248,
TerminalNumber = 1132,
EmployeeNumber = 634277,
CheckNumber = 237712,
Amount = -.99M
};
await client.SendAsync(totalDue);
var tenderApply = new TenderApplyEvent
{
RevenueCenterNumber = 248,
TerminalNumber = 1132,
EmployeeNumber = 634277,
CheckNumber = 237712,
TenderTypeNumber = 5,
TenderTypeName = "Cash",
Amount = 1M
};
await client.SendAsync(tenderApply);
var changeDue = new ChangeDueEvent
{
RevenueCenterNumber = 248,
TerminalNumber = 1132,
EmployeeNumber = 634277,
CheckNumber = 237712,
Amount = .01M
};
await client.SendAsync(changeDue);
var closeCheck = new CloseCheckEvent
{
RevenueCenterNumber = 11291,
TerminalNumber = 88332,
EmployeeNumber = 634277,
CheckNumber = 237712
};
await client.SendAsync(closeCheck);
| Option | Default | Description |
|---|---|---|
PluginId | (required) | eConnect plugin ID |
AuthId | (required) | eConnect authentication ID |
Host | (required) | PosAPI host address or hostname |
Port | (required) | PosAPI port number |
UseSsl | true | Whether to use SSL/TLS |
TcpTimeout | 1 minute | Timeout for TCP operations |
KeepAliveInterval | 2 minutes | Interval for keep-alive messages (TimeSpan.Zero to disable) |
SendAsync throws specific exceptions you can handle:
| Exception | Cause | Remedy |
|---|---|---|
ObjectDisposedException | Client has been disposed | Create a new PosClient instance |
InvalidOperationException | Client is not connected | Call ConnectAsync() first |
ArgumentNullException | Message is null | Provide a non-null message |
PosMessageException | Message fails validation (client-side or server-side) | Fix the message content and resend |
TimeoutException | Server did not respond in time | Retry the send or reconnect |
OperationCanceledException | Cancellation token was cancelled | Retry with a valid token |
SocketException / IOException | TCP connection lost | Reconnect with ConnectAsync() and retry |
try
{
string response = await client.SendAsync(myEvent);
}
catch (PosMessageException ex)
{
// Inspect ex.ValidationErrors for details, fix the message, and resend
}
catch (TimeoutException)
{
// Retry or reconnect
}
eConnect provides a TCP JSON API Test Service, showing sample credentials that work in combination with an online Testing Console.