Docs & API
Your data leaves as cleanly as it arrived.
Fizzy is an open spine. Every sealed sale is available over a REST API, pushed as webhook events, and exportable in the formats accountants and tax authorities already accept. No lock-in, no scraping your own reports out of a PDF.
The model
Six objects, and one rule.
The rule: nothing is ever edited. Corrections are appended, and the chain is verifiable end to end.
Outlet
A physical or online place where you sell. Owns its counters, staff and stock.
Counter
A till instance. Every entry records which counter produced it.
Sale
Lines, quantities, prices and VAT per line, plus the tender that paid for it.
Ledger entry
The sealed record of a sale, void or refund. Hash-chained to its predecessor.
Payment
The Worldline-certified tender, reconciled against the sale it settled.
Day close
The Z-report: a sealed daily summary that closes the sequence for that counter.
Integration surfaces
Four ways out, pick the one that fits.
REST API
Pull sales, ledger entries, products and day closes on your own schedule. JSON over HTTPS, key-authenticated per tenant.
Webhooks
Get pushed the moment a sale is sealed or a day is closed. Signed, retried, and safe to replay.
File exports
SAF-T, Z-reports and CSV for any period, generated from the same sealed source as everything else.
Connectors
Ready-made routes into Nordic accounting systems and into Baslic for filing.
REST API
Read your ledger like it is your own database.
Authentication is a per-tenant API key sent as a bearer token over HTTPS. Reads are paginated and filterable by outlet and period. Writes are limited by design: the ledger accepts appends, never edits, because an API that could rewrite history would defeat the point of the product.
Keys are issued per environment, so you can build against test data before touching a live counter.
Request a keyTypical endpoints
Shapes shown here illustrate the model. The authoritative reference ships with your API key.
// GET /v1/sales/9f2c41e0 · illustrative { "id": "9f2c41e0", "outlet": "kamppi", "counter": "pos-02", "sealed_at": "2026-08-03T14:22:07Z", "currency": "EUR", "total": "89.00", "lines": [ { "sku": "MK-4417", "qty": 1, "net": "70.91", "vat_rate": "25.5", "vat": "18.09" } ], "payment": { "method": "card_contactless", "processor": "worldline", "reconciled": true }, "seal": { "hash": "a3f9…e21", "prev": "7c14…b08", "staff": "anna.k" } }
// signed POST to your endpoint · illustrative sale.sealed a sale is written and closed sale.voided a void is appended, with reason refund.created a refund is appended payment.settled tender reconciled to the sale payment.mismatch money and record disagree day.closed Z-report sealed for a counter export.ready SAF-T or CSV available Delivery · HMAC signature on every request · retried with backoff until 2xx · event ids are stable, so replays are safe to deduplicate
Use payment.mismatch as an alert, not a report. It should be rare, and it should never be ignored.
Exports & connectors
Formats the people who audit you already read.
Accounting systems
Routes into the Nordic systems our customers use, including Netvisor, Procountor and e-conomic.
Baslic
Money-in from Fizzy and invoices from Baslic form one auditable trail, from the counter to the filing.
Your own ERP
If it speaks HTTP or reads files, it can be fed. Tell us the shape you need and we will map to it.
Written for humans, issued to customers.
The full reference, sandbox credentials and webhook setup go out with your API key. Customers, accountants working on a customer's behalf, and partners building an integration can all request one.
Tell us what you are building and which direction the data needs to move. If a connector already exists, we will say so and save you the work.
Principles we hold to
- ▪Your data is yours, exportable at any time, at no charge
- ▪The ledger appends, it never edits, and the API respects that
- ▪Breaking changes get a new version, not a surprise on a Tuesday
- ▪Every figure the API returns traces back to sealed rows
- ▪EU hosting, tenant isolation, GDPR by design