Launch cash back rewards in weeks, not quarters.
Issue your own branded points, let cardholders earn them on anything you can measure — not just spend — and redeem straight to cash back through the rails you already run.
Self-serve in about a minute. No sales call, no procurement to see it run.
Your points
46,930
Worth $469.30 in cash back
- Cardholder taps to pay
- Your earn rule fires
- Points land instantly
- They cash out
How it works
Three calls between a transaction and a reward.
Send the event
One endpoint, whatever processor you're on. A card settles, a direct deposit lands, a savings goal is hit — anything you can measure.
Set the rules
3× on dining, 2× on groceries, a bonus for payroll direct deposit. Retune rates in the dashboard without shipping code.
They cash out
Members redeem straight to cash back through the rails you already run. You fund the credit; we tell you the exact amount and keep the books.
What your members see
Your brand on the front. Our ledger underneath.
Members hold your currency — Bounty points, not ours. They never see Trove, and neither does your app's design system.
Points land the moment a card settles
Your category multipliers, applied on your rules. Members see the reason they earned, not a mystery credit.
Cashing out
$482.20
48,220 points at 1¢ · posts as statement credit
Cash back, at a rate you control
One cent a point, or whatever you set. The credit posts through your existing rails — Trove never touches the money.
Books that balance on demand
Outstanding liability, issued lifetime, and redeemed — recomputed from raw entries every time the page loads.
Why it holds up
An infrastructure product that can prove its balances.
A rewards ledger that can't be reconciled is unsellable to a risk team. This one was built the other way round — the proof came first, the features after.
# Post a transaction when it settles. Your rules do the rest.
curl https://api.trovereward.com/v1/events \
-H "Authorization: Bearer trv_sk_test_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"member": "user_8412",
"type": "card.purchase",
"payload": {
"amount_cents": 4300,
"merchant": { "name": "Blue Bottle", "category": "dining" }
}
}'Every balance is provable
Append-only double-entry. Balances are summed from entries, never updated in place, and the whole book reconciles to zero on demand — a screen your risk team can open, not a claim in a questionnaire.
Built for a bank's controls
Per-tenant approval policies, four-eyes on adjustments above a threshold you set, and an audit trail on every correction. Your support team resolves disputes without calling us.
Idempotent by default
Every mutating endpoint requires an idempotency key. A retried request replays the original response instead of double-posting — because a duplicate award is a real liability, not a rounding error.
Airline and hotel transfer is on the roadmap, not in the product.
Cash back settles through rails you already have, which is why it ships first. Transferring points into real airline and hotel programmes needs a signed agreement with a transfer network, and until that exists redemptions in the sandbox are simulated and move nothing. The conversion engine, the rounding rules, and the ledger entries are real and already built — the fulfilment partner is the missing piece, and we'd rather say so than demo a capability we don't have.
Start with a sandbox key and a working ledger.
Sign up and you get a branded currency, starter earn rules, and a live API key in about a minute. Nothing to install, nobody to email.