Skip to main content

SDK Overview

Zyntem offers two SDK families, each designed for a different deployment model. Pick the one that matches your architecture -- you only need one.

Choose Your Deployment Mode

Cloud APIEmbedded Local
How it worksYour POS calls api.zyntem.com over HTTPSYour POS calls a native library in-process
Network requiredYes, on every transactionOnly for initial token provisioning and queued submission
Latency~100-300 ms (network round-trip)~1-5 ms (local function call)
Offline supportNoYes -- transactions are signed locally and queued for submission
Best forWeb apps, cloud-native POS, SaaS platformsTraditional POS (Windows/.NET, Linux), tablet POS (iPad, Android), kiosks
Integration effortLow -- standard HTTP callsMedium -- embed native library in your build

Decision Flowchart

Start
|
v
Does your POS run in a browser or cloud-only environment?
|-- Yes --> Cloud API
|-- No
|
v
Do you need offline transaction processing?
|-- Yes --> Embedded Local
|-- No
|
v
Is network latency a concern (> 100 ms round-trip)?
|-- Yes --> Embedded Local
|-- No
|
v
Do you want the simplest possible integration?
|-- Yes --> Cloud API
|-- No --> Embedded Local

Common Scenarios

ScenarioRecommendationWhy
SaaS POS (web dashboard)Cloud APIRuns in the browser, always online
On-premise Windows POSEmbedded Local (.NET)Offline resilience, low latency
Android tablet POS in a restaurantEmbedded Local (Android)Wi-Fi drops, need offline receipts
iPad POS in retailEmbedded Local (iOS)Same as above
Cloud backend fiscalizing on behalf of merchantsCloud APIServer-to-server, reliable connectivity
Kiosk / vending machineEmbedded Local (C/Linux)No guaranteed connectivity
Hybrid: web dashboard + on-premise POSBothCloud API for the dashboard, Embedded Local for the POS
Multi-country ISV rolloutEitherSame SDK, configure country per merchant -- no per-country SDK
White-label ISV distributing to merchantsEmbedded LocalEach merchant instance runs independently offline

Combining Both

You can use both SDK families under the same account. The same API key (zyn_live_*) works with Cloud API and Embedded Local. Billing is based on unique merchant VAT IDs -- your deployment topology doesn't affect pricing.

Each SDK maintains its own hash chain and transaction records. Cloud API records live in the Zyntem backend; Embedded records live locally and are submitted directly to the tax authority. They don't automatically sync.

Switching Between Modes

Switching from Cloud to Embedded (or vice versa) is not a simple swap. The hash chain breaks -- each signing context maintains its own chain. Transaction history doesn't migrate between the two. Plan for this upfront.

See Architecture Patterns for the full migration checklist.

Recommendation: Choose your deployment mode early. If you need both, run them as a hybrid from the start rather than migrating later.

Cloud API SDKs

Standard HTTP client libraries generated from our OpenAPI specification. Use these if your POS has reliable internet connectivity and you prefer a thin integration.

# JavaScript/TypeScript
npm install @zyntem/fiscal

# Python
pip install zyntem-fiscal

# Go
go get github.com/javipelopi-dev/fiscalapi-go

Usage is straightforward HTTP:

import { Fiscal } from '@zyntem/fiscal';

const client = new Fiscal({ apiKey: 'zyn_live_...' });
const result = await client.transactions.create({
location_id: 'loc_123',
type: 'sale',
currency: 'EUR',
items: [{ description: 'Coffee', quantity: 1, unit_price: 350, tax_rate: 2100 }]
});

Available for: JavaScript/TypeScript, Python, Go, PHP, Ruby, Java.

Embedded Local SDKs

Native libraries that run the fiscalization engine inside your application. Transactions are signed and hash-chained locally with full legal validity. A background queue forwards them to the tax authority within the regulatory window -- no real-time network dependency.

PlatformPackageInstall
Windows (.NET)Zyntem.Fiscalizationdotnet add package Zyntem.Fiscalization
Androidcom.zyntem.fiscalizationimplementation("com.zyntem.fiscalization:fiscalization-sdk:1.0.0")
iOS/iPadFiscalizationSDKSwift Package Manager (binary target)
Web/Node.js (WASM)@zyntem/fiscalnpm install @zyntem/fiscal
Pythonzyntem-fiscalpip install zyntem-fiscal
C/C++/Go (via cgo)Pre-built .so/.dylibDownload from GitHub Releases

All Embedded SDKs expose the same three-function API:

  1. init() or initWithConfig() -- load configuration and provision the engine
  2. processTransaction() -- sign, hash-chain, and queue a transaction
  3. queueStatus() (native only) -- inspect the background submission queue

How Embedded Local Works

  1. First boot: The library exchanges your API key for a signed token (one network call per merchant)
  2. Every transaction: Signed and hash-chained locally -- no network needed
  3. Background queue: Forwards fiscal records to the tax authority within the legal submission window
  4. Offline resilience: If the network is down, transactions continue. The queue drains when connectivity returns

Token and Billing

Both SDK families use the same API key (zyn_live_*) and the same account. Billing is based on registered locations across all deployments -- cloud and embedded locations are counted together.

Next Steps