Private Codes are always checked online: only Satyakod’s servers read them, so no other scanner can.
Choosing a mode
- Consumer-facing products: Online. Phones open the verdict page, and every scan feeds clone detection, alerts and the monthly report.
- Parts tracked through your own plant, warehouse or service network: Offline with a serial-only Code 128 or DataMatrix. Your line scanners read the serial, your MES or ERP checks it, and nothing depends on a connection. See Factory and warehouse scanners.
- Both at once: Online and offline. For example a GS1 DataMatrix your warehouse reads offline at receiving, which consumers and partners verify online.
How offline checking works
A serial carries its batch number, its index in the batch and a 4-byte signature (format). For offline batches, an admin downloads the batch’s verification key and loads it into your system, which can then check any serial of that batch with a few lines of code. See Offline verification. Scans made offline can be uploaded later withPOST /v1/verify/offline.
Satyakod checks each as of the moment it was made, so clone detection, alerts and scan history
catch up.
Signed codes
Any batch printed as GS1 QR, QR or DataMatrix can also have signed codes (New batch → Code symbology → Signed codes). Each code then holds a link with an Ed25519 signature (?sig=<fingerprint>.<signature>) made with your workspace’s code-signing key. The public half of
that key is published, so anyone can check a signed code with no connection and no secret: the
Satyakod app keeps the public keys and gives a verdict offline, marked checked offline, which is
confirmed with Satyakod once the phone is back online.
- Use it when people check products where there’s no signal (rural retail, basements, warehouses) and you don’t want to hand verification keys to their devices.
- What it proves: the code was issued by you. Like any offline check, it can’t see copies of a genuine code; Satyakod’s clone detection does that once the scan is uploaded.
- Trade-off: the code carries about 100 more characters, so it prints a little larger.
https://<your verify domain>/v/signed-keys
and verify the signature over satyakod-signed-code-v1|<fingerprint>|<serial> with the key whose
fingerprint matches.