Drop-in loyalty & gift cards for any POS, e-commerce, or app.

Points, tiers, rewards, and gift cards through one clean API. Idempotent by design, tenant-isolated, metered per plan — integrate in an afternoon, run it for years.

Open dashboard → Quickstart API reference Pricing

Everything a loyalty stack needs

Points & tier engine

Configurable points-per-dollar, tier thresholds and multipliers. Automatic tier upgrades the moment a customer crosses a threshold.

Gift cards done right

Issue, redeem, refund, disable. Exact integer-cents math, no over-redemption, automatic depletion state.

Idempotent money paths

Every earn, redeem and gift-card transaction takes an idempotencyKey. Retries replay the original result — never a double charge.

Full audit ledger

Every points movement is written to an immutable per-customer ledger with balance snapshots. Paginated API included.

Rewards catalog

Define redeemable rewards with point costs; redeem by reward or raw points and get the dollar discount back.

Webhooks

customer.tier_changed and gift_card.depleted, signed with HMAC-SHA256 (X-Loyara-Signature).

Quickstart — 3 requests to your first point

1. Create an account (14-day free trial, no card)

curl -X POST https://yagno-loyara.fly.dev/api/auth/signup \
  -H "Content-Type: application/json" \
  -d '{"email":"you@business.com","password":"s3cure-pass","companyName":"Blue Fork Cafe"}'

2. Mint an API key (shown once)

curl -X POST https://yagno-loyara.fly.dev/api/keys \
  -H "Authorization: Bearer <JWT from signup>" \
  -d '{"name":"production"}' -H "Content-Type: application/json"

3. Create a customer and award points

curl -X POST https://yagno-loyara.fly.dev/v1/customers \
  -H "Authorization: Bearer sk_loyara_..." -H "Content-Type: application/json" \
  -d '{"phone":"+16045551234","name":"Priya"}'

curl -X POST https://yagno-loyara.fly.dev/v1/earn \
  -H "Authorization: Bearer sk_loyara_..." -H "Content-Type: application/json" \
  -d '{"phone":"+16045551234","amountSpent":42.50,"orderRef":"ORD-1042","idempotencyKey":"ORD-1042-earn"}'

API reference

Dashboard routes use your JWT. All /v1 routes authenticate with Authorization: Bearer sk_loyara_…. Errors always return {"error":{"code","message"}}.

EndpointDescription
POST/api/auth/signupCreate account → JWT. Starts a 14-day trial.
POST/api/auth/loginLogin → JWT (7 days).
GET/api/auth/meCurrent account, plan and trial state.
POSTGETDEL/api/keysCreate (returns full key once), list, revoke API keys.
GET/api/usageThis month's metered counters + plan limits.
POST/api/billing/checkout · /portal · /webhookStripe subscription lifecycle (simulated mode without a key).
GETPUT/v1/programLoyalty config: pointsPerDollar, redemptionValue, tiers (ascending minPoints).
POST/v1/customersUpsert by externalId / phone / email.
GET/v1/customers/:id · ?phone=|email=|externalId=Fetch or search customers.
GET/v1/customers/:id/ledgerPaginated points audit trail.
POST/v1/earnpoints = floor(amountSpent × pointsPerDollar × tierMultiplier). Idempotent.
POST/v1/redeemRedeem points or a reward → dollar discountValue. 422 if balance short.
POST/v1/adjustManual ± balance adjustment with a note.
POSTGETPUTDEL/v1/rewardsRewards catalog CRUD.
POST/v1/gift-cardsIssue a card → GC-XXXX-XXXX-XXXX.
GET/v1/gift-cards/:codeBalance & status.
POST/v1/gift-cards/:code/redeem · /refund · /disableRedeem (rejects over-balance), refund (never beyond spent), freeze.
POSTGETDEL/v1/webhooksManage signed outbound webhooks.
GET/api/healthLiveness + DB state.

Simple pricing (CAD/month)

Every plan starts with a 14-day free trial — no credit card. A metered event is one earn, redeem, or gift-card transaction.

Starter
$49/mo
  • 2,000 events / month
  • Unlimited customers
  • Gift cards included
  • Signed webhooks
Growth
$129/mo
  • 20,000 events / month
  • Everything in Starter
  • Priority support
Scale
$299/mo
  • 200,000 events / month
  • Everything in Growth
  • Migration assistance