Qravio
QR code API for loyalty

A personal loyalty code for every member

Give each member a code that opens their card or offer page. Create it when they join, and hear about every scan through a webhook so your CRM can react.

curl
curl -X POST https://api.qravio.app/api/public/v1/qrcodes/bulk \
  -H "Authorization: Bearer $QRAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "name": "Member 30217",
        "type": "website",
        "category": "dynamic",
        "content": {
          "url": "https://example.com/loyalty/30217"
        },
        "destinations": [
          {
            "target_url": "https://example.com/loyalty/30217"
          }
        ],
        "client_ref": "member-30217"
      },
      {
        "name": "Member 30218",
        "type": "website",
        "category": "dynamic",
        "content": {
          "url": "https://example.com/loyalty/30218"
        },
        "destinations": [
          {
            "target_url": "https://example.com/loyalty/30218"
          }
        ],
        "client_ref": "member-30218"
      }
    ]
  }'

How the integration works

Your CRM creates a code at sign-up with the member ID as the client_ref, and stores the returned QR id. A scan webhook posts that QR id to your server, which maps it back to the member.

  1. 1Create an API key under Developers, and a webhook endpoint subscribed to scan events.
  2. 2On sign-up, create the member code with POST /qrcodes, or in batches with /qrcodes/bulk for an import.
  3. 3Store the returned id against the member record.
  4. 4When the scan webhook arrives, look up the member by QR id and apply your own rules.

What you get

Signed scan events

Each webhook is HMAC-signed and retried on failure, and carries the QR id, country, device and time of the scan.

Offers that change

PATCH a member destination to point at this month offer without reissuing the card.

Seasonal cards

start_at and end_at open and close a code on a schedule.

Bulk import

Move an existing member base across in batches of 50, safely re-runnable with client_ref.

What each plan allows

Every call counts against the monthly quota, and a bulk request counts one call per item. Static codes use calls but not the dynamic QR allowance.

PlanAPI callsDynamic QRsWebhooks
Free, StarterNo API accessn/aNo
Pro3,000 a month300Scan, lead, scan limit
Agency25,000 a monthNo capAdds scan milestones

Prices are on the pricing page.

Loyalty API FAQ

Does a scan award points automatically?

No. The webhook tells your system a scan happened; the points rule is yours. For points per visit, confirm at the counter, since anyone holding the card can scan it.

Does the webhook say who scanned?

It says which code was scanned, with country, device and time. The person is whoever you issued that code to.

What plan do I need?

API access and webhooks are on Pro and Agency. Pro allows 300 dynamic QRs, so a large member base needs Agency.

Start generating codes

Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.