Bitcoin lotto infrastructure for partners

Build the game. Luckotto runs the verifiable draw.

Create funded tickets through one API. You control the brand, customer experience, retail price, and markup. Luckotto supplies the shared draw, prize bankroll, Bitcoin commitment, and partner payout.

Holding a ticket? View its receipt link, browse the round ledger, or find the partner that sold it.

One product, clear boundaries

You own the customer. Luckotto owns the draw.

Luckotto is the wholesale layer underneath your product, not a replacement for it.

You control
  • Brand and customer experience
  • Retail price, currency, bundles, and markup
  • Customer game, prize rules, and settlement
  • Your customer-facing obligations
Luckotto provides
  • Funded, public ticket receipts
  • One shared weekly draw and prize bankroll
  • A Bitcoin commitment before randomness exists
  • Partner payout and independently replayable proof
From sale to settlement

Three moves. One public record.

  1. 01
    Create and sell

    Fund one UUIDv4 receipt through the API and sell your customer experience through your own channels.

  2. 02
    Seal and draw

    The exact round is committed on Bitcoin before a later block supplies the external randomness.

  3. 03
    Pay and prove

    Luckotto pays the selected partner at its fixed address and publishes everything needed to replay the result.

See the complete operating model
Live public proof

A claim you can actually check.

A resolved round is not a result page backed by Luckotto's word. It is a chain of public assertions that the browser verifier checks independently.

  1. 1Ticket set fixedExact funded receipts
  2. 2Manifest committedHash anchored on Bitcoin
  3. 3Randomness arrivedA later Bitcoin block
  4. 4Delay proof acceptedCanonical public VDF evidence
  5. 5Outcome replayedExact interval selection
One server-side API

Your first funded ticket is ordinary JSON.

Choose the permanent ticket id, contribution, and public metadata. Retries are idempotent; the same id and fields return the same ticket.

POST /api/partners/<partner-payout-address>/tickets
Authorization: Bearer <partner-api-key>
Content-Type: application/json

{
  "id": "018f58d2-2800-4000-8000-000000000123",
  "metadata": {
    "display": {
      "game": "partner-defined"
    }
  },
  "contributedSats": 1000,
  "expectedRoundNumber": 3,
  "expectedTicketFeeSats": 100
}
Start building

Your product, backed by a public Bitcoin draw.