Geolocation compliance for DFS, sweepstakes and social gaming

Know where every entry comes from. Block the ones you shouldn't take.

BoundsCheck decides, in milliseconds, whether a player is inside a jurisdiction where your contest is allowed. Every decision is logged with its reasons, so you can show your work later.

Built by operators, for operators. It runs on our own daily fantasy platform before it runs on yours.

POST /v1/check9 ms
decision   ALLOW
region     US-TX · Travis County
activity   contest_entry · paid
policy     v2026.10.02
signals    gps ✓  accuracy 25 m  mocked ✗  vpn ✗
check_id   chk_7f3a…e91c
What it does

One API call before money moves.

Your app sends a device location with each paid entry, deposit or withdrawal. BoundsCheck checks it against current boundaries and your policy, returns allow or block with the reasons, and writes an audit row. You keep control of your UI, your players and your data.

01

Blocks by default

A mocked location, one we can't resolve, or one close enough to a border that it could be in a disallowed state is never approved. With no usable location, the player is asked to share it. Errors answer BLOCK. We never guess a player in.

02

Rules per state, per county, per format

Allow pick'em in one state and salary-cap only in another. Carve out a county or a custom zone. Policy changes are versioned and take effect without an app release.

03

Fast enough to sit in the request path

Most decisions return in milliseconds, and approvals stay valid for 15 minutes. Your eligible-states list is served with ETags so the client only re-downloads it when policy changes.

04

Monitor first, enforce when ready

Run checks on live traffic without acting on them, and use the decision log and review queue to see what would have been blocked and why. Start enforcing when you're ready.

How it works

Four parts, one decision.

Each check runs through the same pipeline. Every stage records what it saw, so the audit row explains the decision rather than just stating it.

1
Device fix
Your client sends lat/lng, accuracy, timestamp, timezone, platform and mock flag.
2
Boundaries
The fix is resolved to a state and county using official boundaries.
3
Fraud signals
Fake GPS, VPN and proxy, IP-vs-GPS distance, impossible travel, staleness.
4
Policy engine
Your versioned rules for that state, county and contest format are applied.
5
Decision + audit
Allow, block, step-up or review, the reasons, and a check ID to store.

Boundaries

Official state boundaries and all 3,142 US counties, not a radius around a city centre. Add your own zones, such as tribal land.

  • Point-in-polygon at state and county level
  • Accuracy radius plus a safety buffer: a location that could be across a border is not approved
  • Canada and Mexico provinces and states also mapped

Policy engine

Policy is a set of rules keyed on jurisdiction and contest format, paid or free. You edit it in a panel; every change is versioned with the admin who made it.

  • Checks at session start, contest entry, deposit, withdrawal and signup. Custom activities Roadmap
  • Formats: pick'em, salary cap, peer-to-peer and free
  • State minimum age Roadmap
  • Eligible-states endpoint for your app's onboarding screens

Fraud signals

Location spoofing is cheap. We look for the common tells, and an untrusted location is never approved.

  • Fake-GPS (mock location) flag from the device
  • VPN, proxy and hosting-range detection on the request IP
  • IP geolocation compared against the GPS fix
  • Stale locations and timezone mismatches
  • Impossible travel between a player's checks
  • Multi-account links by device, email or phone

Audit trail

Every check is stored with its inputs, the signals observed, the policy version applied and the result. Nothing is sampled.

  • Check ID returned on every call to store with the transaction
  • Searchable log of decisions and reasons
  • Change log naming the admin for every change: rules, settings, zones, IP rules and reviews
  • Review queue, with each outcome sent to your system by signed webhook
  • Self-serve export of any date range, CSV or JSON Lines, from the panel or the API
Who it's for

Operators who need real state-by-state blocking without an enterprise contract.

If you run paid contests across many states, you already know the map changes. BoundsCheck is for the teams who have been maintaining a hand-edited list of state codes and want something they can defend.

What you get

A REST API, an admin panel with a decision log and review queue that you can embed in your own back office or use hosted with two-factor sign-in, and a web script and iOS and Android SDKs Roadmap. Flat monthly pricing by active players, with unlimited checks. No per-ping charges.

How we work with you

We're a small team and we integrate with you directly. Expect a shared channel, a period of running checks on real traffic without enforcing, reviewing the results together, and a go-live plan for web first and mobile once your new build has adoption.

Contact

Tell us what you're running.

There's no self-serve signup yet. Send a note and we'll set up a walkthrough, share the API reference, and talk through what the decisions would look like on your traffic.

Your message goes straight to our team by email. We reply within one business day.

Direct

New to BoundsCheck? Email hello@boundscheck.com. Existing customers, write to support@boundscheck.com. We reply within one business day.

Not ready to talk yet? Download the six-page overview (PDF) to share with your team.

Good to know before we talk

  • Integration effortYour server calls one API before money moves. Mobile needs the location permission and a small payload on your paid-entry calls, which means an app-store release.
  • Data handlingWe store device fixes and decisions for the audit trail. We don't sell or share location data, and you can set your own retention window. Questions go to privacy@boundscheck.com.
  • PricingPlans from $199 a month, priced by active players with unlimited checks and no minimums. See pricing.