☰ Меню · Быстрый старт
Начало работы

Быстрый старт

Создайте тестовый ключ, проверьте его, зарегистрируйте гостя и проведите чек. Пять запросов, около пяти минут.

  1. 1
    Создайте тестовый ключ

    В кабинете заведения откройте Разработчикам → Ключи API, выберите Тест и нужные права. Ключ показывается один раз и начинается с sk_test_. Если вы делаете интеграцию для многих заведений, попросите каждое создать для вас ключ или напишите нам, и мы заведём партнёрский аккаунт.

  2. 2
    Проверьте ключ

    Вызовите GET /v1/account. В ответе будут заведение, его программы лояльности и права вашего ключа. Ответ 401 означает, что ключ неверный или отозван.

  3. 3
    Зарегистрируйте гостя

    Вызовите POST /v1/members с телефоном, именем и consent: true. В ответе будут номер карты и ссылки для добавления карты в Apple Wallet или Google Wallet.

  4. 4
    Проведите чек

    Вызовите POST /v1/transactions, передав свой id чека в external_id, номер карты и сумму. В ответе видно, что получил гость, и новый баланс.

  5. 5
    Отмените чек

    Вызовите POST /v1/transactions/{external_id}/void. Баланс вернётся к прежнему значению.

1. Проверьте ключ

curl
curl https://loyaltyfy.io/api/v1/account \
  -H "Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc"
Ответ · 200
{
  "object": "account",
  "id": "73267e72-7f6e-4ddd-bfa2-bd6746500794",
  "slug": "api-sandbox",
  "name": "API Sandbox",
  "timezone": "Europe/Chisinau",
  "livemode": false,
  "key": { "id": "65b6f90b-ba6f-47ce-886f-2deb9be1f087", "scopes": ["*"] },
  "programs": [
    {
      "id": "06af6eba-eaf5-4662-8a5e-2b6b52c65314",
      "slug": "default",
      "name": "Sandbox Cashback",
      "mechanic": "cashback",
      "currency": "MDL",
      "published": true,
      "barcode": "card_code128",
      "stamps_required": null,
      "cashback_rate": 5
    },
    {
      "id": "1480831a-9331-46dc-b055-90d14c844fb8",
      "slug": "stamps",
      "name": "Sandbox Stamps",
      "mechanic": "stamps",
      "currency": "MDL",
      "published": true,
      "barcode": "card_qr",
      "stamps_required": 5,
      "cashback_rate": null
    }
  ],
  "locations": []
}

Обратите внимание на список programs: в заведении может работать несколько программ (например, кэшбэк для постоянных гостей и штампы на кофе). Поле mechanic подсказывает, какие показатели участника важны: cashback, stamps, visit_discount и другие.

2. Зарегистрируйте гостя

curl
curl https://loyaltyfy.io/api/v1/members \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7d1b2c4e-enrol-000123" \
  -d '{
    "phone": "+37366791102",
    "first_name": "Ion",
    "last_name": "Popescu",
    "card_number": "2000111703779",
    "language": "ro",
    "consent": true
  }'
Ответ · 201
{
  "object": "member",
  "id": "6dacfe0a-2500-44c6-a37c-05c660b093b4",
  "card_number": "2000111703779",
  "serial": "b90273b1-10c9-46eb-ba74-8fef48266b5d",
  "first_name": "Ion",
  "last_name": "Popescu",
  "phone": "+37366791102",
  "email": null,
  "birthday": null,
  "language": "ro",
  "marketing_consent": false,
  "program": {
    "id": "06af6eba-eaf5-4662-8a5e-2b6b52c65314",
    "name": "Sandbox Cashback",
    "mechanic": "cashback",
    "barcode": "card_code128"
  },
  "stamps": null,
  "cashback": {
    "balance": 1250,
    "currency": "MDL",
    "earn_rate": 5,
    "level": null,
    "redeem_max_percent": 30,
    "min_amount": 10000,
    "expires_at": "2027-01-04T18:17:17.721+00:00"
  },
  "discount": null,
  "visits": 1,
  "total_spent": 25000,
  "wallet": {
    "apple_url": "https://loyaltyfy.io/api/wallet/issue/3832466f-...?platform=apple&t=...",
    "google_url": "https://loyaltyfy.io/api/wallet/issue/3832466f-...?platform=google&t=...",
    "card_url": "https://loyaltyfy.io/wallet/3832466f-...?t=..."
  },
  "created_at": "2026-10-06T18:17:15.594+00:00"
}

card_number передавать не обязательно. Если его нет, мы выпустим 13-значный номер. Передавайте его, если у кассы уже есть свои карты и карта в Wallet должна иметь тот же номер.

3. Проведите чек

curl
curl https://loyaltyfy.io/api/v1/transactions \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "CHK-2026-000123",
    "member": "2000111703779",
    "amount": 25000,
    "currency": "MDL",
    "register_id": "POS-1",
    "closed_at": "2026-10-06T18:17:00+03:00",
    "line_items": [
      { "sku": "1001", "name": "Espresso", "quantity": 2, "unit_price": 4000, "category": "Coffee" },
      { "sku": "2005", "name": "Cheesecake", "quantity": 1, "unit_price": 17000, "category": "Desserts" }
    ]
  }'
Ответ · 201
{
  "object": "transaction",
  "id": "f8acbb16-0b3b-4afc-acbb-e5eabd4dd072",
  "external_id": "CHK-2026-000123",
  "status": "completed",
  "amount": 25000,
  "redeem_amount": 0,
  "cashback_earned": 1250,
  "stamps_earned": 0,
  "reward_unlocked": false,
  "net_amount": 25000,
  "currency": "MDL",
  "register_id": "POS-1",
  "closed_at": "2026-10-06T15:17:00+00:00",
  "livemode": false,
  "created_at": "2026-10-06T18:17:17.921+00:00",
  "voided_at": null,
  "member": {
    "object": "member",
    "id": "6dacfe0a-2500-44c6-a37c-05c660b093b4",
    "card_number": "2000111703779",
    "cashback": { "balance": 1250, "currency": "MDL", "earn_rate": 5, ... },
    ...
  }
}

4. Отмените чек

curl
curl -X POST https://loyaltyfy.io/api/v1/transactions/CHK-2026-000123/void \
  -H "Authorization: Bearer sk_test_..."
Всё, что вы делаете с ключом sk_test_, помечается как livemode: false. Тестовые участники и чеки создаются в аккаунте заведения как настоящие записи, поэтому используйте тестовое заведение или удаляйте за собой данные. Подробнее в разделе Тестирование.
Вопросы по интеграции: api@loyaltyfy.io. Отвечаем в течение одного рабочего дня.