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 API | Embedded Local | |
|---|---|---|
| How it works | Your POS calls api.zyntem.com over HTTPS | Your POS calls a native library in-process |
| Network required | Yes, on every transaction | Only for initial token provisioning and queued submission |
| Latency | ~100-300 ms (network round-trip) | ~1-5 ms (local function call) |
| Offline support | No | Yes -- transactions are signed locally and queued for submission |
| Best for | Web apps, cloud-native POS, SaaS platforms | Traditional POS (Windows/.NET, Linux), tablet POS (iPad, Android), kiosks |
| Integration effort | Low -- standard HTTP calls | Medium -- 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
| Scenario | Recommendation | Why |
|---|---|---|
| SaaS POS (web dashboard) | Cloud API | Runs in the browser, always online |
| On-premise Windows POS | Embedded Local (.NET) | Offline resilience, low latency |
| Android tablet POS in a restaurant | Embedded Local (Android) | Wi-Fi drops, need offline receipts |
| iPad POS in retail | Embedded Local (iOS) | Same as above |
| Cloud backend fiscalizing on behalf of merchants | Cloud API | Server-to-server, reliable connectivity |
| Kiosk / vending machine | Embedded Local (C/Linux) | No guaranteed connectivity |
| Hybrid: web dashboard + on-premise POS | Both | Cloud API for the dashboard, Embedded Local for the POS |
| Multi-country ISV rollout | Either | Same SDK, configure country per merchant -- no per-country SDK |
| White-label ISV distributing to merchants | Embedded Local | Each 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.
| Platform | Package | Install |
|---|---|---|
| Windows (.NET) | Zyntem.Fiscalization | dotnet add package Zyntem.Fiscalization |
| Android | com.zyntem.fiscalization | implementation("com.zyntem.fiscalization:fiscalization-sdk:1.0.0") |
| iOS/iPad | FiscalizationSDK | Swift Package Manager (binary target) |
| Web/Node.js (WASM) | @zyntem/fiscal | npm install @zyntem/fiscal |
| Python | zyntem-fiscal | pip install zyntem-fiscal |
| C/C++/Go (via cgo) | Pre-built .so/.dylib | Download from GitHub Releases |
All Embedded SDKs expose the same three-function API:
init()orinitWithConfig()-- load configuration and provision the engineprocessTransaction()-- sign, hash-chain, and queue a transactionqueueStatus()(native only) -- inspect the background submission queue
How Embedded Local Works
- First boot: The library exchanges your API key for a signed token (one network call per merchant)
- Every transaction: Signed and hash-chained locally -- no network needed
- Background queue: Forwards fiscal records to the tax authority within the legal submission window
- 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
- SDK Quickstart -- first transaction in 5 minutes for Python, .NET, Android, Node, C
- Configuration Reference -- all config fields for
init()andinitWithConfig() - Architecture Patterns -- hybrid deployments, data flow, multi-country
- Going to Production -- pre-launch checklist, certificates, queue monitoring
- Embedded Error Handling -- init errors, transaction errors, queue recovery
- Cloud API Error Handling -- HTTP status codes and error responses