Loyalty cards your customers keep.
One card in Apple Wallet and Google Wallet. Customers join from a QR in 30 seconds, staff scan with a phone, and the balance updates instantly.
Free forever up to 50 cards.
Trusted by businesses in Tirana, Durrës and Vlorë
- Kafe Mëngjes
- Fitlab
- Bruno Barber
- Ora Bakery
- Vjosa Rafting
- Ginger Sushi
Three steps. No app to install.
Customers use the wallet already on their phone. Staff use the phone already in their pocket.
-
Step 1
3 minutes
Design your card
Choose a preset, drop in your logo, adjust two colours. Live preview for Apple, Google and web.
-
Step 2
30 seconds
Customers join from a QR
Phone number, one-time code, done. The card lands in the wallet and in WhatsApp.
-
Step 3
1 tap
Staff scan, rewards update
Points, stamps, check-ins and redemptions reach the customer phone within seconds.
Six ways to bring them back
Every program runs on the same card, the same scanner and the same wallets.
Buy nine, get the tenth free.
The classic stamp card, minus the cardboard. Staff tap once per visit, and the card resets itself when the reward is claimed.
- A cooldown between stamps stops double taps
- Reward unlocked message sent by WhatsApp
- Stamp grid drawn inside the wallet pass
One point per 100 lek.
Points for spend, tiers for the regulars, rewards at any threshold you set. Expiry rules keep the books clean.
- Silver, Gold and custom tiers with multipliers
- Birthday and welcome bonuses
- Rolling or fixed expiry
10 coffees for 800 lek, paid up front.
A prepaid pack. A coffee costs 100 lek, the pack of 10 costs 800, so the customer saves 20 percent. They show the code and staff take off 1, 2 or 3 each visit.
- The card shows what is left, for example 7 of 10
- Staff sell a new pack from the scanner and the units add to what is left
- Optional per-scan limit and expiry
A permanent 10 percent for members.
Show the discount on the card, have staff mark it used, and know exactly who is getting it and how often.
- Percent or fixed amount
- Minimum spend rules
- Usage history per customer
Monthly access, checked at the door.
Gyms, studios and clubs. The card turns red when it expires and staff renew it on the spot.
- Daily check-in limits
- A grace period before lockout
- Renewal reminders 3 days before
Single-use offers that expire.
Send a coupon to a segment, watch it get redeemed, and never argue about a screenshot again.
- Segment targeting
- Expiry countdown on the pass
- Voided after the first scan
The till is a phone your staff already have
Open the scanner, unlock with the staff PIN and point the camera. One tap adds a stamp, the keypad turns a sale into points.
- One PIN per device, revocable from the app
- Works offline and syncs when the connection returns
- Any scan can be undone within 30 seconds
Messages that send themselves
Five rules cover what you would otherwise send by hand.
Sent by WhatsApp, SMS or email.
- WelcomeAs soon as the card is issued
- Reward unlockedThe moment the threshold is crossed
- Birthday points3 days before the date
- Lapsed customerAfter 30 days without a visit
- Membership expiring3 days before lockout
Connect your POS, WooCommerce, or anything with an HTTP client
A REST API for everything the scanner does. Test mode is included on every plan with API access.
- Idempotent writes with an Idempotency-Key
- Scoped keys and a test mode
- Signed webhooks for every balance change
# Award points after a sale curl -X POST https://perfito.al/v1/cards/PF-8F2A-19/earn \ -H "Authorization: Bearer sk_live_…" \ -H "Idempotency-Key: order_10492" \ -d '{ "amount": 1450, "reference": "order_10492" }' # Response { "balance": 1254, "delta": 14, "tier": "Gold", "wallet_synced": true }
// Award points after a sale $ch = curl_init('https://perfito.al/v1/cards/' . $serial . '/earn'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $key, 'Idempotency-Key: ' . $orderId, 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode(['amount' => 1450, 'reference' => $orderId]), ]); $result = json_decode(curl_exec($ch), true);
// Award points after a sale const res = await fetch(`https://perfito.al/v1/cards/${serial}/earn`, { method: 'POST', headers: { Authorization: `Bearer ${key}`, 'Idempotency-Key': orderId, 'Content-Type': 'application/json', }, body: JSON.stringify({ amount: 1450, reference: orderId }), }); const { balance, delta, tier } = await res.json();
What the counter sounds like after a month
We printed one QR for the counter. In the first month 412 customers joined, and the ones with a card come back about twice as often.
Staff learned the scanner in a single shift. The undo button is the reason nobody is afraid of it.
Memberships used to live in a notebook. Now the card turns red at the door and renewals take 20 seconds.
Start free. Grow when they come back.
Starter
- 500 cards
- 3 programs
- 5 staff
- 500 messages a month
- Apple and Google Wallet push updates
Growth
Most popular- 2.000 cards
- 10 programs
- 20 staff
- 5.000 messages a month
- Apple and Google Wallet push updates
- REST API and test mode
Scale
- Unlimited cards
- Unlimited programs
- Unlimited staff
- Unlimited messages a month
- Apple and Google Wallet push updates
- REST API and test mode
- Signed webhooks
Questions
Cannot find the answer? Talk to us
Do customers need to install an app?
No. The card lives in Apple Wallet or Google Wallet, and there is a web card for every other phone.
What do staff need?
Any phone with a camera. The scanner runs in the browser and can be installed to the home screen.
How long does setup take?
About 3 minutes: pick a program, add a logo and two colours, print the QR.
Can I move my paper stamp cards over?
Yes. Import customers from a CSV with their current balance, or let staff set an opening balance at the first scan.
Who owns the customer data?
You do. Export any time as CSV, and a customer can delete their own account from the portal.
What happens if I go over my plan limit?
You are warned at 80 percent. At 100 percent new cards stop being issued, and existing cards keep scanning.
Your first card takes three minutes.
Free forever up to 50 cards. No card details.