Ready first
Counter flow beside your register
Run QR earning and redemption beside any checkout from a phone, tablet, or browser.
Start beside the register without replacing it. Move to a direct API, signed webhooks, or an approved POS adapter when the business is ready — they arrive with the Grow plan. The loyalty ledger and customer experience stay the same.
The product does not force a small merchant into an enterprise integration project. Each path reaches the same customer, program, redemption, and ledger model.
Ready first
Run QR earning and redemption beside any checkout from a phone, tablet, or browser.
Developer path
Send customers, sales, refunds, voids, rewards, and redemption commands through /api/v1.
Event path
Receive register events and deliver loyalty changes with traceable retry and replay behavior.
Partner path
Map provider-specific formats at the boundary so reward logic never depends on one vendor.
The in-app inbox and push are included on every plan. Campaign email carries an allowance on the paid tiers; SMS is bought as credits on every tier. Whatever the channel, you see what a send will cost before it goes. Consent, quiet hours and frequency caps apply everywhere, including the channels that cost nothing.
Lands in the customer's wallet, where their card already is. Nothing to install and nothing to pay.
Reaches a customer who has closed the wallet, so a reminder arrives while there is still time to act on it.
Viber and WhatsApp, chosen automatically per customer. Cheaper than SMS and better looking, and most people read them sooner. Being connected and not live yet; when it opens the composer will try them before SMS.
The one channel that works on any phone, with no app and no data. Used when nothing cheaper will reach them.
Sign-in codes, reward notices and data exports always send, on every plan, and never touch the allowance. The allowance is for campaigns, and only the paid tiers carry one.
A loyalty balance is a promise. The integration layer must explain every change, reject accidental duplicates, and recover without asking staff to guess.
Planned quickstart
POST /api/v1/transactions
Authorization: Bearer sk_live_••••••••
Idempotency-Key: sale_sc_10482
{
"memberCode": "2966093052778",
"branchId": "branch_legazpi",
"amountCentavos": 48500,
"items": 1,
"externalReference": "SC-10482"
}Scoped credentials
Keys can be limited by branch and action.
Signed events
Planned: every event signed with a timestamp, so a copied event cannot be replayed later.
Duplicate-safe
The same idempotency key returns the original result.
Retry evidence
Every attempt keeps status, latency, and request context.
The counter app stores a signed local queue, shows pending status, then reconciles safely when connectivity returns.
The worker retries with backoff, records each attempt, and exposes a manual replay after the destination recovers.
An owner rotates or revokes the scoped key while unaffected terminals continue using their own credentials.
The ledger appends a reversal tied to the original sale instead of silently rewriting the customer balance.
The counter flow works today, on any register, with no integration at all. The API, webhooks and POS adapters below arrive with the Grow plan — and most shops are running a healthy program long before they need them.
No. Begin with the counter flow that runs beside your register, then add a direct connection — an API your register calls, or a webhook, which is your register telling us about each sale as it happens — when it creates enough operational value.
KYP Rewards does not maintain per-vendor integrations. Any register that can post sale webhooks, expose a read API, or export sale files connects through one shared event contract, so support does not depend on a vendor partnership.
Every sale and redemption carries an idempotency key — a unique tag for that one event — so if the same sale is sent twice by accident we recognize it and return the first result, not a second stamp. Every webhook carries a stable event ID for the same reason.
Start with the counter flow beside the register you own. Tell us which checkout you use and we will tell you straight whether connecting it is worth your time.