KortiDocs

Scan at the counter

Staff scan the customer’s card, see who it belongs to, and add a stamp or spend from the balance.

The Korti scanner

Open Scanner in the dashboard on any phone or tablet with a camera. Point it at the barcode on the customer’s card. Korti shows the customer’s name and their card, with buttons for what that kind of card can do: add a stamp, redeem the reward, add points or spend from a balance.

If the camera can’t read the code, type the number printed under the barcode instead. Card numbers leave out 0, O, 1 and I, so they’re easy to read aloud.

For event staff and temps, an owner or admin can make a scanner link under Scanner. Pick who it’s for, which cards it can scan and how long it works: 12 hours up to a week. Send the link, or let staff scan its QR code. It opens the same scanner on their phone, with no sign-in, and they can add it to their home screen like an app.

The link only reaches the cards you picked. Turn it off at any time and phones using it stop straight away. Scans made through a link show up in your activity like any other.

What the barcode holds

By default the barcode holds the pass’s serial, such as KQ7M2X9F. It’s unique across Korti and printed under the barcode. You can change the barcode’s content in the card design, for example to your own member number, if your till already scans those. The Korti scanner finds a pass by its serial or by the exact value its barcode holds, exactly as it was read or typed. A camera read matches a serial only when it is exactly the serial; typed text is trimmed, stripped of spaces and upper-cased first. A code that names more than one pass (a value that is the same on several passes, or one that is also another pass’s serial) opens none of them: the scanner lists the matching passes, and staff choose one.

QR, PDF417 and Aztec codes hold any printable text, including emoji and non-Latin letters. Code 128 holds printable ASCII only. Hidden characters such as tabs, line breaks and text-direction controls are refused. If a value filled in for one customer (for example {{customer.name}}) can’t be encoded, that pass’s barcode holds its serial instead of no code, and the pass in the API response has a barcode_fallback entry in warnings. The same goes for a value filled in from variables that looks like another card’s number (eight letters and digits from a card number’s alphabet): a customer-chosen name can’t stand in for someone else’s card.

Scan with your own till

If your till or app already has a scanner, look the pass up by its serial with GET /v1/passes?q=, then change it. Search also matches the customer’s name and email, so compare the serial exactly.

# The barcode holds the serial, e.g. KQ7M2X9F
curl "https://korti.is/v1/passes?q=KQ7M2X9F&limit=1" \
  -H "Authorization: Bearer $KORTI_KEY"

NoteEvery stamp, redeem and balance change records an event. If you want to know about scans made with the Korti scanner, subscribe to pass.scanned with a webhook.