Live-Camera Betting

How Does a Seamless Wallet Integration Work for Live-Camera Betting?

Lukk, by Adkuu, never holds player funds: the operator exposes debit, credit, rollback and reconcile endpoints, each HMAC-SHA256 signed with an idempotency key.

Live-Camera BettingCCTV BettingLukkiGaming

A seamless wallet integration for live-camera betting means the money never leaves the operator. Lukk, by Adkuu, holds no player funds and moves every stake and payout through four endpoints on the operator's side, debit, credit, rollback and reconcile, the way any other game provider on the floor does. Every call is HMAC-SHA256 signed with the operator API key (X-Lukk-Signature), every money movement carries an idempotency key, and amounts are decimals with two places in the operator's currency. The operator keeps the player relationship and the balance; Lukk sees only an opaque player_ref.

The four endpoints

EndpointTimingRule
debitSynchronous and fail-closed; the operator answers within 5 secondsNo debit, no bet: a stake exists only once the operator has confirmed it
creditQueued, retried until deliveredA payout is never lost to a transient failure
rollbackOn demandReverses an earlier debit
reconcileDailyA two-party cross-check of both ledgers; Lukk alarms on any divergence and never auto-adjusts

The asymmetry between the first two is deliberate. A debit that the operator cannot confirm within 5 seconds is a bet that never happened; the player sees a refusal (insufficient_funds is one of the rejection reasons an operator will recognise, alongside min_stake, max_stake and max_payout), and nothing is owed in either direction. A credit that cannot be delivered right now is queued and retried, because by then the market has settled and the operator's ledger is the one that is behind. Reconcile closes the loop once a day: both sides compare totals, and any divergence is raised as an alarm for people to resolve, never corrected silently by Lukk.

Signatures, idempotency and amounts

  • Signatures. Every call is HMAC-SHA256 signed with the operator API key and carries the X-Lukk-Signature header; keys rotate on request.
  • Idempotency. Every money movement carries an idempotency key, so a retried credit or a replayed debit lands exactly once.
  • Amounts. Decimals with two places in the operator's currency (EUR, USD, SOL and others). Payout is stake × odds, exactly, and the minimum stake, maximum stake and maximum payout per bet are set per operator in the same currency.
  • Schemas. Versioned as lukk.feed.v1 and lukk.webhook.v1.

What travels with the debit, and showing an open position

Each debit belongs to a ticket, and the ticket's details travel with it in the call's meta: the market and the outcome the player backed, the odds locked at acceptance (one to three seconds after the tap) and the frozen rule_hash that pins the exact settlement contract. That is enough for the operator to write an open position into its own account history the moment the debit succeeds, with the potential payout already known as stake × odds, and the market's timing known from the feed, rather than waiting for a settlement message to learn what the stake was for.

In the widget path the postMessage bridge reports lukk:bet as the ticket is placed, and the operator can post lukk:refresh_balance to the widget after its own ledger moves; the widget itself runs inside a single-use launch session the operator's backend mints (POST https://api.lukk.gg/api/v1/b2b/embed/sessions, header x-operator-key, token valid for 120 seconds). On the feed path the operator already holds the quote and the ticket (GET /api/v1/b2b/quote/ followed by the market slug, then POST /api/v1/bets), so the position is known before the debit returns. Both paths share one identity model, one wallet contract, one risk engine and one settlement backbone, and many operators run both.

Settlement: webhooks and the pull endpoint

When a market settles, Lukk sends a signed webhook with the X-Lukk-Event: settlement header, at-least-once with exponential backoff, so the operator's receiver must treat a repeat as a repeat. Settlement states are won, lost and refunded (void). A void is always a full refund of every stake, never a re-grade; post-settlement corrections are rare and audit-driven; larger payouts carry a short verification hold before the credit is queued. For finance teams there is also a pull endpoint, GET /api/v1/b2b/settlements, which returns page totals so that a day's activity can be netted without summing individual tickets. Bet-placed and bet-cancelled webhooks are on the roadmap.

What Lukk never sees

Lukk, by Adkuu, is a PII-free supplier: it never sees a name, an email or a balance, only the opaque player_ref the operator chooses. Responsible-gambling limits and self-exclusion are the operator's decisions, passed as ticket context and enforced by Lukk's acceptance pipeline; KYC, AML, age verification (18+) and geofencing stay with the operator as well. Certification runs on a play-money account on the production surface, a disabled-for-real-money operator, with a dedicated sandbox host on the roadmap. The full split of duties is on Lukk for operators and in What Licence Do Operators Need to Offer Live-Camera Betting?.

How this compares with the aggregator route

The other named title in the genre, 155.io's "CCTV Game: Rush Hour", reaches operators through Hub88, which became its exclusive aggregation partner on 26 February 2026 after carrying 155.io's earlier titles Ducks and Marbles since 2024. As of October 2026 Lukk is not distributed through an aggregator; it integrates directly, on the operator's own wallet and with the operator's own margin and limits, through the widget, the feed or both. That is a design choice about where the wallet contract lives rather than a judgement on either route: an aggregator wraps many suppliers behind one wallet integration, while a direct integration gives the operator the contract described above, end to end. Pricing and limits are covered in How Is Live-Camera Betting Priced: Fixed Odds or Pool?, and the product overview is at /solutions/lukk.

Sources

Last verified: October 10, 2026.