Skip to content
Points

A points ledger that never counts twice.

Every point a member earns, spends, loses or gets back is one row in a ledger that cannot be edited. Retries, double-clicks and flaky networks cannot award the same purchase twice.

Points are money on your balance sheet. They should behave like it.

A till that retries after a timeout, or a web shop that fires the same webhook twice, quietly hands out free points. Over a year that becomes a liability nobody can explain. Points need the same care as payments.

  • Earn from the purchase amountSend the amount and the engine applies the right rate: an active campaign first, then the member’s tier, then your programme default. Choose how fractions round: to nearest, down or up. Every award records which rate was used and why.
  • Or post points you calculatedAlready have a points formula in your POS or ERP? Send the exact number of points instead. Both modes write to the same ledger.
  • Exactly once, guaranteed twiceEach award, deduction, adjustment and reversal carries an idempotency key. A retry within 24 hours returns the original answer instead of acting again. Behind that, the database itself refuses a second earn or redeem for the same order reference.
  • Redeem the way your checkout worksSet how many points equal one unit of your currency, a minimum to redeem and a maximum per purchase. Members can spend part of their balance, and redemptions can be requested in points or as a money amount.
  • Quote before you commitAsk what a purchase will earn or what a redemption is worth before writing anything. Checkouts show the number, then confirm.
  • Refunds that put things backReverse an order by its reference. Points earned on it are taken back and points spent on it are returned. Partial refunds reverse only part of it, and each reversal links to the original row.
  • Pending points for return windowsAward points that become spendable on a date you choose, for example after the 14-day return period. They show as pending until then and are released automatically every hour.
  • Expiry, oldest firstExpire points at the end of each year, a fixed number of days after they were earned, or never. The oldest points always go first. Manual adjustments and refunds do not expire.
  • Manual adjustments with a reasonStaff can add or remove points from the member page. A note is required, and the change appears in the member’s activity log with who made it.

A ledger you can reconcile.

Every movement is one row.

Earn, redeem, refund, expire and adjust, each with its source and order reference.

Spend points at checkout.

Quote the value first, with your minimum and per-order limits applied.

One purchase, start to finish.

  1. 01QuoteThe checkout asks what the basket earns and what the member’s points are worth.
  2. 02RedeemPoints the member chose to spend are deducted, keyed to the order.
  3. 03AwardAfter payment, points are earned on the amount paid. Optionally pending until returns close.
  4. 04ReverseIf the order is refunded, its earned points come back out and spent points go back in.

What your team sees.

  • Award, deduct, adjust and reverse from the member page, with a live quote
  • Balance, lifetime and pending points shown separately
  • Transaction history with type, source, order reference and note
  • Expiring points report: how many points expire in the next N days and for how many members
For developers

A missing Idempotency-Key is rejected with IDEMPOTENCY_KEY_REQUIRED. Reusing a key with a different body is rejected with IDEMPOTENCY_KEY_MISMATCH. Every member write takes a row lock, so concurrent tills cannot overspend a balance.

request.httpHTTP
1POST /api/v1/points/award
2Idempotency-Key: ord-58114
3
4{ "member": "pos:000731",
5 "purchase_amount": 2450.00, "currency": "MKD",
6 "source": "pos", "source_ref": "ord-58114",
7 "pending_until": "2026-10-15T00:00:00Z" }

Who it helps.

  • FinanceA ledger you can reconcile. A nightly check compares every balance with its transactions.
  • CustomersPoints that show up once, come back on refunds and do not vanish without notice.
  • DevelopersRetry freely. The API is built to be called again.

At a glance.

Transaction types
Earn, redeem, expire, adjust, bonus, refund, promote
Earning modes
Engine (rate × amount) or exact points
Rounding
Nearest, down, up
Expiry
End of year, rolling N days, never; oldest first
Redemption limits
Minimum points, maximum per purchase, partial on/off
Scheduled jobs
Expiry daily 02:30 · pending release hourly · reconcile daily 05:00

Points questions.

Not today. One rate applies per order: campaign, tier or programme default.

See it with your own programme.

Tell us about your members, your tills and your shop, and we’ll show you where Vendor Loyalty fits.

Ready to get started?

Launch a store yourself, or talk to us about connecting ecommerce to the systems you already run.

  • Vendor Standard

    Everything you need to launch, manage and grow an online store. From €39/month.

    Explore Commerce
  • Vendor Pro

    Larger catalogs, advanced pricing, complex operations and deeper integrations.

    Explore Scale