☰ Menu · Visits
API reference

Visits

A check-in without a check, for stamp and visit programs.

POST/v1/visits
Scope: transactions:write or devices:write

Records a visit and gives the program's per-visit reward. Returns an object like a transaction with object: "visit" and amount: 0. Repeating an external_id returns the stored visit with 200. Cashback programs answer 400 visit_not_supported.

external_idstring, required
Your id of this check-in. Shares the namespace with transactions.
memberstring, required
Anything that identifies the member, including the raw value from a scanner.
device_idstring
Which device recorded it. Shown in reports as the register.
visited_atdatetime
When it happened. Default: now.
curl
curl https://loyaltyfy.io/api/v1/visits \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "door-1-2026-10-06-0042",
    "member": "4285324286429",
    "device_id": "door-1"
  }'
Response · 201
{
  "object": "visit",
  "id": "feb2ad75-ac7b-4bb6-8b64-192323b7f6ea",
  "external_id": "door-1-2026-10-06-0042",
  "status": "completed",
  "amount": 0,
  "stamps_earned": 1,
  "reward_unlocked": false,
  "register_id": "door-1",
  "livemode": false,
  "created_at": "2026-10-06T18:17:28.209+00:00",
  "member": {
    "object": "member",
    "card_number": "4285324286429",
    "stamps": { "current": 2, "required": 5, "rewards_available": 0 },
    ...
  },
  ...
}

A visit can be voided like a check: POST /v1/transactions/{external_id}/void.