Business Overview
/ ── CHROME ──────────────────────────────────────────── /
.site-header {background: var(--black); color: white;
padding: 13px 28px; display: flex; align-items: center; gap: 10px;
position: sticky; top: 0; z-index: 100; border-bottom: 2px solid var(--green);}
.logo {color: var(--green); font-weight: 800; font-size: 15px;}
.sep {color: #333;}
.crumb {color: #9ca3af; font-size: 13px;}
.spacer {flex: 1;}
.pill {background: #1a1a1a; border: 1px solid #333; color: #9ca3af; font-size: 11px; padding: 3px 10px; border-radius: 20px;}
.pill em {color: #fbbf24; font-style: normal; font-weight: 700;}
.page-wrap {display: flex; min-height: 100vh;}
/ ── MAIN ────────────────────────────────────────────── /
.main {flex: 1; padding: 40px 52px 80px; max-width: 820px;}
/ ── TYPE ────────────────────────────────────────────── /
h1 {font-size: 30px; font-weight: 800; color: var(--black); letter-spacing: -0.5px; line-height: 1.2; margin-bottom: 16px;}
h2 {font-size: 18px; font-weight: 700; color: var(--black); margin: 44px 0 12px; padding-top: 8px; border-top: 1px solid var(--gray-200);}
h3 {font-size: 13.5px; font-weight: 700; color: var(--black); margin: 16px 0 7px;}
p {margin-bottom: 12px; line-height: 1.75;}
ul {padding-left: 20px; margin-bottom: 12px;}
li {margin-bottom: 5px; line-height: 1.6;}
a {color: var(--green); text-decoration: none; font-weight: 500;}
a:hover {text-decoration: underline;}
code {font-family: var(--mono); font-size: 12px; background: var(--gray-100); padding: 2px 5px; border-radius: 3px; color: #b91c1c;}
hr {border: none; border-top: 1px solid var(--gray-200); margin: 36px 0;}
/ ── TABLES ──────────────────────────────────────────── /
table {width: 100%; border-collapse: collapse; font-size: 13px; margin: 14px 0 20px;}
thead tr {background: var(--black);}
th {padding: 9px 14px; text-align: left; font-weight: 700; font-size: 12px; color: var(--green-light);}
td {padding: 9px 14px; border-bottom: 1px solid var(--gray-200); vertical-align: top; line-height: 1.55;}
tr:last-child td {border-bottom: none;}
tr:nth-child(even) td {background: var(--gray-50);}
/ ── CALLOUTS ────────────────────────────────────────── /
.callout {border-left: 3px solid var(--green); background: var(--green-bg);
padding: 12px 16px; border-radius: 0 8px 8px 0; margin: 14px 0; font-size: 13px; line-height: 1.65;}
.callout.warn {border-color: #d97706; background: #fffbeb;}
.callout.info {border-color: #3b82f6; background: #eff6ff;}
.callout strong {font-size: 10px; text-transform: uppercase; letter-spacing: 0.07em; display: block; margin-bottom: 4px; color: #166534; font-weight: 800;}
.callout.warn strong {color: #92400e;}
.callout.info strong {color: #1e40af;}
/ ── HOW IT WORKS ────────────────────────────────────── /
.how-cards {display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; margin: 20px 0;}
.how-card {border: 1px solid var(--gray-200); border-radius: 10px; padding: 18px; background: white; position: relative;}
.how-card .step-num {width: 28px; height: 28px; background: var(--green); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-size: 12px; font-weight: 800; margin-bottom: 12px;}
.how-card .arrow {position: absolute; right: -19px; top: 50%; transform: translateY(-50%); color: var(--green); font-size: 18px; font-weight: 700; z-index: 1;}
.how-card h3 {font-size: 13px; margin: 0 0 8px;}
.how-card p {font-size: 12px; color: var(--gray-600); margin: 0; line-height: 1.55;}
/ ── STEP CARDS (numbered decisions) ─────────────────── /
.step-card {border: 1px solid var(--gray-200); border-radius: 10px;
overflow: hidden; margin-bottom: 20px; background: white;}
.step-card-header {display: flex; align-items: center; gap: 14px;
padding: 14px 20px; background: var(--black);}
.step-num-lg {width: 32px; height: 32px; border-radius: 50%;
background: var(--green); color: white;
display: flex; align-items: center; justify-content: center;
font-size: 14px; font-weight: 800; flex-shrink: 0;}
.step-card-header h3 {font-size: 14px; font-weight: 700; color: white; margin: 0;}
.step-card-header .step-sub {font-size: 12px; color: var(--gray-400); margin-top: 2px;}
.step-card-body {padding: 20px 22px;}
.step-card-body p {font-size: 13.5px;}
.step-card-body p:last-child {margin-bottom: 0;}
/ ── OPTION SPLIT ────────────────────────────────────── /
.option-split {display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 14px 0;}
.option-box {border: 1px solid var(--gray-200); border-radius: 8px;
padding: 16px; background: var(--gray-50);}
.option-box.highlighted {border-color: var(--green); background: var(--green-bg);}
.option-label {font-size: 10px; font-weight: 800; text-transform: uppercase;
letter-spacing: 0.07em; color: var(--gray-400); margin-bottom: 6px;}
.option-box.highlighted .option-label {color: var(--green);}
.option-box h4 {font-size: 13px; font-weight: 700; margin-bottom: 6px; color: var(--black);}
.option-box p {font-size: 12.5px; color: var(--gray-600); margin: 0; line-height: 1.55;}
.option-box.highlighted p {color: #166534;}
/ ── WALLET DIAGRAM (compact) ────────────────────────── /
.wallet-diagram {margin: 18px 0;}
.wd-center {display: flex; flex-direction: column; align-items: center;}
.wd-decision {background: var(--black); color: white; border-radius: 10px;
padding: 13px 28px; text-align: center; max-width: 360px; width: 100%;}
.wd-decision .wd-label {font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--green); font-weight: 700; margin-bottom: 3px;}
.wd-decision .wd-title {font-size: 13.5px; font-weight: 700;}
.wd-decision .wd-sub {font-size: 11px; color: var(--gray-400); margin-top: 3px;}
.wd-fork {display: flex; width: 100%; max-width: 680px;}
.wd-fork-l {flex: 1; height: 24px; border-right: 2px solid var(--gray-200);}
.wd-fork-gap {width: 40px; flex-shrink: 0;}
.wd-fork-r {flex: 1; height: 24px; border-left: 2px solid var(--gray-200);}
.wd-branches {display: flex; width: 100%; max-width: 680px; gap: 40px;}
.wd-branch {flex: 1; display: flex; flex-direction: column; align-items: center;}
.wd-conn {width: 2px; height: 18px; background: var(--gray-200);}
.wd-model {border: 2px solid var(--green); background: var(--green-dark); color: white;
border-radius: 8px; padding: 13px 15px; text-align: center; width: 100%;}
.wd-model .wm-tag {font-size: 10px; font-weight: 800; color: var(--green-light); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 3px;}
.wd-model .wm-name {font-size: 13px; font-weight: 700; margin-bottom: 4px;}
.wd-model .wm-eg {font-size: 11px; color: var(--gray-400); font-style: italic; margin-bottom: 7px;}
.wd-model .wm-desc {font-size: 11.5px; color: var(--gray-400); line-height: 1.5;}
.wd-result {border-radius: 8px; padding: 10px 13px; text-align: center; width: 100%; font-size: 12px;}
.wd-result.plain {background: var(--gray-50); border: 1px solid var(--gray-200);}
.wd-result.green {background: var(--green-bg); border: 1px solid var(--green-light);}
.wd-result .wr-title {font-weight: 700; margin-bottom: 3px;}
.wd-result.plain .wr-title {color: var(--gray-800);}
.wd-result.green .wr-title {color: #166534;}
.wd-result .wr-desc {font-size: 11.5px; line-height: 1.5;}
.wd-result.plain .wr-desc {color: var(--gray-600);}
.wd-result.green .wr-desc {color: #166534;}
/ ── NEXT NAV ────────────────────────────────────────── /
.next-nav {display: flex; justify-content: flex-end; margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--gray-200);}
.next-nav a {padding: 12px 20px; border: 1px solid var(--gray-200); border-radius: 8px; display: flex; flex-direction: column; align-items: flex-end; text-decoration: none; color: var(--black);}
.next-nav a:hover {border-color: var(--black);}
.next-nav .nav-label {font-size: 10px; color: var(--gray-400); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 3px;}
.next-nav .nav-title {font-size: 13px; font-weight: 700;}
<!-- ── TITLE ─────────────────────────────────────────── -->
<h1>Welcome to the ProphetX ISV!</h1>
<p>
ProphetX is a CFTC-regulated sports prediction market exchange. Through the ISV program, partners embed ProphetX's exchange infrastructure — markets, order execution, KYC, and settlement — directly into their own product. You own the product experience. ProphetX handles the regulated layer underneath.
</p>
<p>
Before you write any code, there are four integration decisions to work through with your ProphetX contact. This page walks you through each one. The API is REST-based with webhook delivery for real-time updates, all requests are authenticated, and sandbox credentials are available so you can test against a live-shaped environment before going to production.
</p>
<hr>
<!-- ── HOW IT WORKS ───────────────────────────────────── -->
<h2>How the integration works</h2>
<div class="how-cards">
<div class="how-card">
<div class="step-num">1</div>
<div class="arrow">→</div>
<h3>Integrate to ISV APIs</h3>
<p>Connect to ProphetX's ISV API suite — market data, user onboarding, order placement, and settlement webhooks — all server-to-server from your backend.</p>
</div>
<div class="how-card">
<div class="step-num">2</div>
<div class="arrow">→</div>
<h3>Build your front end</h3>
<p>You own the full UI and UX. Show ProphetX markets alongside your own content however you choose. ProphetX is invisible to your end users.</p>
</div>
<div class="how-card">
<div class="step-num">3</div>
<h3>ProphetX handles the rest</h3>
<p>Trade execution, settlement, KYC, and CFTC compliance all run on ProphetX. Your users trade; ProphetX settles.</p>
</div>
</div>
<hr>
<!-- ── FOUR DECISIONS ─────────────────────────────────── -->
<h2>Four things to decide before you build</h2>
<p>
Work through these with your ProphetX contact during onboarding. Each decision affects how your integration is structured and what you need to build.
</p>
<!-- ── DECISION 1: WALLET MODEL ──────────────────────── -->
<div class="step-card">
<div class="step-card-header">
<div class="step-num-lg">1</div>
<div>
<h3>Wallet model</h3>
<div class="step-sub">Determines whether you use ProphetX payment rails or your own</div>
</div>
</div>
<div class="step-card-body">
<p>Your wallet model is set during commercial onboarding and cannot be changed at runtime. It determines how money moves between your platform and ProphetX — and whether you build your own payment flows or embed ProphetX's.</p>
<div class="wallet-diagram">
<div class="wd-center">
<div class="wd-decision">
<div class="wd-label">Choose one</div>
<div class="wd-title">Which model did ProphetX provision?</div>
<div class="wd-sub">Agreed during commercial onboarding · Cannot change at runtime</div>
</div>
<div class="wd-fork"><div class="wd-fork-l"></div><div class="wd-fork-gap"></div><div class="wd-fork-r"></div></div>
<div class="wd-branches">
<div class="wd-branch">
<div class="wd-model">
<div class="wm-tag">Standing Fund</div>
<div class="wm-name">You manage payments</div>
<div class="wm-desc">You pre-fund a standing fund wallet at ProphetX via bank wire. You own user wallets and payment flows on your side. ProphetX debits the standing fund wallet per trade and notifies you via webhook.</div>
</div>
<div class="wd-conn"></div>
<div class="wd-result plain">
<div class="wr-title">You build the payment UI</div>
<div class="wr-desc">Use your own payment rails. ProphetX has no role in the deposit or withdrawal flow. Daily reconciliation + net settlement on agreed cadence.</div>
</div>
</div>
<div class="wd-branch">
<div class="wd-model">
<div class="wm-tag">Individual Wallets</div>
<div class="wm-name">ProphetX hosts payments</div>
<div class="wm-desc">Each user has their own ProphetX wallet, created on KYC success. Users deposit directly through ProphetX-hosted modals you embed.</div>
</div>
<div class="wd-conn"></div>
<div class="wd-result green">
<div class="wr-title">ProphetX provides the payment UI</div>
<div class="wr-desc">Embed ProphetX-hosted deposit and withdrawal modals in your app. See Decision 2 below.</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- ── DECISION 2: DEPOSIT & WITHDRAWAL ──────────────── -->
<div class="step-card">
<div class="step-card-header">
<div class="step-num-lg">2</div>
<div>
<h3>Deposits & withdrawals</h3>
<div class="step-sub">Individual wallet model only</div>
</div>
</div>
<div class="step-card-body">
<p>If you're on the Individual wallet model, ProphetX provides pre-built deposit and withdrawal modals you embed directly in your app. Users complete the deposit or withdrawal inside the modal — funds go directly to and from their individual ProphetX wallet. You never handle the money.</p>
<div class="option-split">
<div class="option-box highlighted">
<div class="option-label">Deposit modal</div>
<h4>Users fund their ProphetX wallet</h4>
<p>Surface the ProphetX deposit modal at the point in your app where users add funds. Supported providers: Aeropay, ZeroHash, and wire. The modal is ProphetX-hosted and branded, but configurable to match your app's theme.</p>
</div>
<div class="option-box highlighted">
<div class="option-label">Withdrawal modal</div>
<h4>Users withdraw their winnings</h4>
<p>Surface the ProphetX withdrawal modal where users cash out. Settlement credits go directly to the user's wallet — no wire to you. Withdrawal is processed through the same payment providers as deposit: Aeropay, ZeroHash, and wire.</p>
</div>
</div>
<div class="callout">
<strong>Standing Fund partners</strong>
If you're on the Standing Fund model, skip this section — you own the deposit and withdrawal flow entirely using your own payment rails. See the <a href="https://isv-docs.prophetx.co/docs/wallets">Wallets</a> section for reconciliation and net settlement details.
</div>
</div>
</div>
<!-- ── DECISION 3: T&Cs ───────────────────────────────── -->
<div class="step-card">
<div class="step-card-header">
<div class="step-num-lg">3</div>
<div>
<h3>Terms & Conditions</h3>
<div class="step-sub">CFTC requirement — all ISV users must accept ProphetX T&Cs before trading</div>
</div>
</div>
<div class="step-card-body">
<p>CFTC regulations require that every user trading on ProphetX has explicitly accepted ProphetX's Terms and Conditions. T&C acceptance must be captured and confirmed to ProphetX before a user can place their first trade. You have two options for how to handle this:</p>
<div class="option-split">
<div class="option-box highlighted">
<div class="option-label">Option A</div>
<h4>ProphetX T&C modal</h4>
<p>ProphetX provides a pre-built T&C modal you surface as part of your onboarding flow. The user reviews and accepts the ProphetX T&C documents inside the modal. Acceptance is recorded with a timestamp and automatically confirmed to ProphetX. Nothing to build on your side.</p>
</div>
<div class="option-box">
<div class="option-label">Option B</div>
<h4>Co-joined T&C page</h4>
<p>If you want to combine ProphetX T&Cs with your own, you can design a single T&C page. ProphetX has specific design requirements for this approach — ProphetX branding must be prominently displayed on the page and on all T&C documents. Reach out to your ProphetX contact for the design requirements before building.</p>
</div>
</div>
<div class="callout">
<strong>How acceptance is tracked</strong>
T&C acceptance is a one-time step per user. ProphetX keeps a log of when each document was accepted and which version was in effect at the time. If ProphetX updates its T&C documents, users will need to re-accept before trading again — your integration will be notified so you can prompt them at the right moment.
</div>
</div>
</div>
<!-- ── DECISION 4: KYC ────────────────────────────────── -->
<div class="step-card">
<div class="step-card-header">
<div class="step-num-lg">4</div>
<div>
<h3>KYC — user identity verification</h3>
<div class="step-sub">CFTC requirement — all ISV users must be KYC'd before trading</div>
</div>
</div>
<div class="step-card-body">
<p>
Even though you own the customer relationship, CFTC regulations require ProphetX to know and monitor every user trading on the platform at the individual level. User identity must be tied to every trade. ProphetX runs KYC and AML — you choose how user information gets to us.
</p>
<p>You have two options depending on whether you already collect identity information from your users:</p>
<div class="option-split">
<div class="option-box">
<div class="option-label">Option A — Already collecting KYC data</div>
<h4>Send PII to ProphetX behind the scenes</h4>
<p>If you already collect identity details from your users as part of your own onboarding, you can pass that information directly to ProphetX via the account creation API — no additional user-facing step required. ProphetX runs KYC and AML in the background and returns a status: <code>PENDING</code>, <code>SUCCESS</code>, or <code>FAILURE</code>. The user never sees ProphetX — it's entirely invisible to them.</p>
</div>
<div class="option-box highlighted">
<div class="option-label">Option B — Not yet collecting KYC data</div>
<h4>Use the ProphetX Verified modal</h4>
<p>ProphetX provides a Verified modal you can embed in your onboarding flow. The user enters their <strong>phone number</strong> and <strong>last 4 digits of their SSN</strong> — the modal then pulls their full KYC details automatically and presents them for confirmation. Once the user confirms, ProphetX runs KYC in the background. No manual data entry of full PII required.</p>
</div>
</div>
<div class="callout">
<strong>Before calling KYC — verify email and phone first</strong>
CFTC requires ProphetX to have a verified phone number and email address on record for every user before they can trade. Your onboarding flow must verify both before calling the ProphetX account creation endpoint — ProphetX will reject unverified contact details at the API level.
</div>
<h3>How KYC statuses work</h3>
<table>
<thead><tr><th>Status</th><th>What it means</th><th>What to do</th></tr></thead>
<tbody>
<tr><td><code>PENDING</code></td><td>KYC check is in progress</td><td>Poll <code>GET /private/v1/users/USERID/kyc</code> until status resolves</td></tr>
<tr><td><code>SUCCESS</code></td><td>User is verified and can trade</td><td>Proceed to T&C acceptance, then deposit (if Individual model)</td></tr>
<tr><td><code>FAILURE</code></td><td>KYC could not be completed automatically</td><td>Direct user to contact <a href="#">[email protected]</a> for manual review</td></tr>
</tbody>
</table>
</div>
</div>
<hr>
<!-- ── WHAT'S IN THESE DOCS ───────────────────────────── -->
<h2>What's in these docs</h2>
<table>
<thead><tr><th>Section</th><th>What it covers</th></tr></thead>
<tbody>
<tr><td><strong><a href="https://isv-docs.prophetx.co/docs/technical-overview#">Technical Overview</a></strong></td><td>Full technical orientation — request path, path prefixes, reading order, and the complete glossary. Read this before writing code.</td></tr>
<tr><td><strong>User Management</strong></td><td>Creating users, running KYC, recording T&C acceptance, and managing wallets. The four decisions above map directly to this section.</td></tr>
<tr><td><strong>Order Management</strong></td><td>Browsing fixtures and markets, placing market orders, and building parlays.</td></tr>
<tr><td><strong>Push Integration</strong></td><td>Registering a webhook receiver so ProphetX pushes order and settlement events to you in real time.</td></tr>
<tr><td><strong>Frontend Integrations</strong></td><td>Embedding ProphetX-hosted deposit, withdrawal, KYC, and T&C components. Relevant primarily for Individual wallet model partners.</td></tr>
<tr><td><strong>Error Reference</strong></td><td>All error codes, rate limits, and configuration constants.</td></tr>
</tbody>
</table>
<div class="callout info">
<strong>Ready to dive in?</strong>
Head to <a href="https://isv-docs.prophetx.co/docs/technical-overview#/">Technical Overview</a> for the full technical orientation, then work through each section in sequence. If you haven't agreed your wallet model and KYC approach with your ProphetX contact yet, do that first — it affects every section that follows.
</div>
<p style="font-size:13px; color:var(--gray-600); margin-top: 8px;">If anything is unclear or missing, reach out to your ProphetX integration contact. We'd rather hear from you early than have you guessing.</p>
<div class="next-nav">
<a href="https://isv-docs.prophetx.co/docs/technical-overview#/#">
<span class="nav-label">Next →</span>
<span class="nav-title">Technical Overview</span>
</a>
</div>
