Appearance
FAQ
Answers to common questions about FAST integration, challenges, funded accounts, and operations.
General
What is FAST?
FAST (Funded Account Sportsbook Trading) is a B2B SaaS platform that enables sportsbook operators to offer funded account challenges to their users. Users pay a fee, receive virtual money to bet with, and must grow it to a target. Successful users earn a funded account where profits are real and withdrawable.
FAST is a rules engine and shadow ledger. It does not hold money, verify users, or require a gambling license.
How does FAST differ from prop trading?
Same concept, different market. Prop trading firms (FTMO, MyForexFunds) offer funded accounts for forex traders. FAST brings this model to sports betting. The key differences:
- Sports betting is event-based (not continuous trading)
- Rules focus on stake limits and odds ranges (not lot sizes and drawdown pips)
- Settlement is asynchronous (bets settle when events end)
- User-facing terms are "Skill Challenge" and "Reward Account" (not "evaluation" and "funded account")
Is this gambling?
FAST itself is not a gambling product. It is B2B technology (a rules engine) sold to licensed sportsbook operators. The sportsbook holds the gambling license and is responsible for regulatory compliance. FAST does not accept bets, hold funds, or interact with end users directly.
Does FAST need a gambling license?
No. FAST operates as a B2B technology provider. It is a rules engine and shadow ledger. All licensing, KYC/AML, responsible gambling, and fund management are the sportsbook's responsibility.
What percentage of users fail challenges?
Based on prop trading industry data and early FAST deployments, 80-90% of users fail challenges. The challenge fee is pure revenue for the operator regardless of outcome.
Integration
How long does integration take?
Most operators integrate in 1-2 weeks. The minimum viable integration requires:
- Calling
POST /v1/challenges/purchasewhen a user buys a challenge - Calling
POST /v1/bets/validatebefore accepting bets from challenge users - Sending bet settlement events to
POST /v1/bets - Handling webhooks for state changes
The Quickstart guide walks through the first API call in 15 minutes.
Do I need to change my bet placement flow?
Minimally. In sync mode, add a call to /v1/bets/validate before accepting bets from users with active challenges. If FAST rejects the bet, block it in your UI.
In async mode, no changes to your bet flow at all. Send bet events to /v1/bets after the fact and FAST processes them in the background.
What if my bet payload fields have different names?
Configure an adapter mapping in the operator backoffice. FAST translates your field names to its canonical format automatically. Supports dot notation for nested fields. Test your mapping before going live.
See Adapter Mapping for details.
What if FAST is down?
Your sportsbook continues normally. FAST is never a single point of failure.
- In async mode: queue bet events and send them when FAST is back
- In sync mode: accept all bets and queue them for later validation
- Challenge progress updates when FAST processes the queued events
- Reconcile after recovery to ensure nothing was missed
See Error Handling for circuit breaker and graceful degradation patterns.
Can I use FAST with multiple sportsbook brands?
Yes. Each brand gets its own isolated environment with separate configuration, API keys, rulesets, and branding.
Does FAST support mobile apps?
Yes. The API is the same regardless of client platform. The embeddable widget works on mobile browsers. For native apps, use the API directly and build your own UI.
Challenges
Can a user have multiple active challenges?
No. FAST enforces exactly one active challenge or Reward Account per user at any time. Attempting to purchase a second returns 409 active_challenge_exists. After a failed or cancelled challenge the user can buy again from midnight UTC (until then a purchase returns 429 purchase_cooldown); after a Reward Account is revoked, immediately.
What happens when a challenge expires?
The challenge is marked as failed with reason expired. FAST fires a challenge.failed webhook. The user can purchase a new challenge from midnight UTC.
Expiry is checked every 60 seconds via a background job. The check uses UTC calendar days.
Can I cancel a challenge for a user?
Yes, on the user's behalf: POST /v1/users/:userId/challenge/cancel with {"confirm": true}. No refund is issued: the own stake is forfeited and the bonus voided, and FAST sends challenge.cancelled. POST /v1/users/:userId/funded/cancel does the same for a Reward Account. From the widget, both go through your approval URL.
What counts as an "active day"?
A day (UTC) where the user placed at least one accepted bet. Active days are a challenge condition; they do not gate funded payouts.
Can users bet on any sport?
Yes. FAST is sport-agnostic. It only tracks stake, odds, and settlement outcome. Any sport, any market, any bet type works.
What happens with voided or cancelled bets?
Voided bets are ignored. No balance change, no bet counter increment. Send them to FAST with status voided and they will be recorded but not counted.
Are free bets counted?
No. Only real-money bets count toward challenge progress. Free bets are ignored by the rules engine.
Can users cash out during a challenge?
No. Cash-out is disabled during the challenge phase (bets with isCashOut: true are rejected). Cash-out is allowed during the funded account phase.
Funded accounts (Reward Accounts)
How do withdrawals work?
- User requests a payout in your UI (or in the widget)
- Your backend calls
GET /v1/users/:userId/withdrawableto check what can be taken now - If it is more than 0, call
POST /v1/users/:userId/withdrawwith thegrossAmountto take - FAST pays the user their profit split of that gross amount and takes exactly the gross amount off the balance
- FAST fires
funded_account.payoutwebhook - You pay the user their share
Gross profit = virtual balance - funded amount. The user's share of a payout = gross amount taken x profit split percent.
See Withdrawals for the full flow.
What causes funded account revocation?
Three things: the total drawdown limit (cumulative losses beyond the configured percentage of the funded amount), 14 days without an accepted bet or a payout, and, when the tier sets fundedFirstPayoutDays, a first payout not requested in time (reason first_payout_deadline). The operator can also revoke an account by hand. FAST fires funded_account.revoked webhook. The user can immediately purchase a new challenge.
What is the profit split?
Configurable per challenge tier. Default is 80/20 (user keeps 80%, operator keeps 20%). When a user takes a payout of 1,000 EUR gross profit:
- User receives 800 EUR
- Operator retains 200 EUR
- The balance drops by 1,000 EUR
The split percentage can be boosted by rewards (e.g., a profit_split_boost reward of 5 makes it 85/15). Tax on the payout is the operator's matter; FAST's figures are before any tax.
Is there a minimum withdrawal amount?
Only if the tier sets one: fundedMinPayout is the smallest share a payout request may ask for, measured on the user's share (200 at an 80% split needs 250 gross profit). Tiers can also set a gap between payouts (none by default), a maximum number of payouts, per-payout and lifetime caps, and a deadline for the first payout. There are no minimum active days or bets in the funded phase.
Does the balance reset after withdrawal?
No. A payout takes exactly its gross amount off the balance and the rest of the profit stays on it, to be played on or taken later. Two payouts take everything: one created automatically at the tier's mandatory payout threshold, which takes the balance back to the funded amount, and the account's last allowed payout, which ends the account. See Withdrawals.
Achievements and rewards
How do I enable achievements?
Achievements are available on Growth and Enterprise plans. Once your tenant is on one of these plans, create achievements in the operator backoffice. No code changes needed on your side.
Do achievements cost money?
Achievements alone are cosmetic (badges, points, levels). They have no financial impact. However, if you link a reward to an achievement, the reward does have economic value (bonus balance, discounts, etc.).
Can I create custom achievement criteria?
You can combine the 15 built-in criteria types with different thresholds to create any milestone. Custom criteria types beyond the built-in set are not currently supported. See Achievements for all criteria types.
How do rewards affect challenge economics?
Rewards are consumed during the next challenge purchase or funded account creation:
balance_bonus: increases starting balancepurchase_discount_percent/fixed: reduces purchase priceextended_duration: adds days to the challengeprofit_split_boost: improves the user's profit sharepayout_cap_boost_percent: increases withdrawal limits
Revenue share is calculated on the full purchase price (before discounts). Discounts come from your margin, not FAST's share.
Widget
Can I customize widget colors?
Yes. Set brandColor and brandColorEnd to match your sportsbook's palette. On Growth and Enterprise plans, you can also set custom fonts and logos. See Widget and White-Label for full details.
Does the widget work on mobile?
Yes. The widget is fully responsive. The FAB button and panel adapt to mobile screen sizes. Touch interactions are supported.
What is Shadow DOM and why does it matter?
Shadow DOM is a browser feature that isolates the widget's HTML and CSS from your page. This means:
- Your CSS does not affect the widget
- Widget CSS does not affect your page
- No class name conflicts
- No z-index fights (widget manages its own stacking)
You do not need to do anything special. It works automatically.
Can I embed the widget without the floating button?
Currently, the widget always renders as a FAB with a slide-out panel. A headless mode (API-only, bring your own UI) is on the roadmap. For now, use the API directly if you want a custom UI.
What happens if the user is not logged in?
Do not render the widget for unauthenticated users. Only include the script tag (or call mount()) when you have a valid userId. If userId is empty, the widget does not initialize.
Security
How are webhooks signed?
FAST signs the raw body of every webhook with HMAC-SHA256 using your webhook secret. The hex signature is sent in the X-Webhook-Signature header. Verify it over the raw request bytes (not a re-serialised JSON.stringify(req.body)) with a length-checked, constant-time comparison before processing.
javascript
const crypto = require('crypto');
// rawBody: the exact request bytes, e.g. from express.raw({ type: 'application/json' })
function verifySignature(rawBody, signature, secret) {
const expected = Buffer.from(
crypto.createHmac('sha256', secret).update(rawBody).digest('hex')
);
const received = Buffer.from(String(signature));
return received.length === expected.length &&
crypto.timingSafeEqual(received, expected);
}See Webhook Handling for a full example, retries and deduplication.
Is data encrypted?
- All API traffic is over HTTPS (TLS 1.2+)
- API keys are stored as SHA-256 hashes (never plaintext)
- Webhook secrets are AES encrypted at rest
- PostgreSQL connections use SSL
- No PII is stored beyond the operator-provided
userIdstring
What is FAST's SOC 2 status?
SOC 2 Type I certification is in progress. Contact support@fundedfast.eu for the current status and security documentation.
Can I restrict API access by IP?
IP allowlisting is available for super admin endpoints. For tenant API keys, rate limiting and key rotation are the primary security controls. Contact support if you need IP restrictions on tenant endpoints.
Billing
When are invoices issued?
- Setup fee: invoiced at contract signing
- Monthly SaaS fee: invoiced on the first of each month
- Revenue share: invoiced monthly in arrears (based on previous month's challenge purchases)
- Payment terms: NET 15 days
What is the revenue share model?
FAST takes a percentage of every challenge purchase price. The percentage depends on your plan:
- Starter: 20% (10,000 EUR setup + 500 EUR/month)
- Growth: 15% (25,000 EUR setup + 1,000 EUR/month)
- Enterprise: negotiated
The share falls as the plan rises: the higher plan pays a larger fixed fee and keeps more of each purchase.
Revenue share is calculated on the full purchase price, before any discount rewards are applied.
Can I see my invoice history?
Yes. Invoices are visible in the operator backoffice under Billing. The FAST super admin also generates invoices and can resend them on request.
What happens if I exceed my plan's challenge volume?
Purchases beyond your plan's monthly volume (5,000 on Starter, 25,000 on Growth) are refused with 409 monthly_challenge_limit_reached until the next calendar month or a plan upgrade. Enterprise has no volume limit.
Support
- API documentation: https://docs.fundedfast.eu/api/endpoints
- Email: support@fundedfast.eu
- Phone: +385 99 371 341
- Always include the
correlationIdwhen reporting API issues