Skip to main content
Work through every assertion below in preprod, capture the evidence named next to it, and your integration lead signs the result off as your UAT gate.
Prerequisites: What preprod does and does not simulate and Test harness. You need a funded preprod pool and at least two KYC-approved test participants before you start.
This page replaces the UAT framework that has lived in a Google Doc and a companion Sheet. Those two artefacts are no longer the record. A completed copy of this checklist, with the evidence attached, is.
Evidence means a captured request and response pair, or a captured stream message, with the environment, the timestamp and the identifier named. A screenshot of a passing test is not evidence; the response body is.

The one contradiction you cannot resolve yourself

If you are an IB, this differs. You have a gate with no ISV equivalent: the regulatory pack and the NFA/CFTC demo, with the ten reports mapped to a source and the five unsupported ones escalated in writing — see Reporting pack. Agree the demo environment before the date is set, because you cannot demonstrate a settled market in preprod. You will also be asserting record-level requirements (physical-person legal names, five-digit postal_code, external_id within 49 characters, all three identity strings labelled) and that no flow has your firm receiving or holding customer funds.
UAT §0 and the only available way to manufacture a fill contradict each other.UAT §0 asks you to disavow generic REST/FIX and legacy order entry. Because the partner surface is FOK-only and you are always the taker, the only way to manufacture a fill in a thin preprod book is to rest an order through the legacy OrderEntryAPI/insertOrder. Every fill-dependent assertion below therefore depends on the thing §0 asks you to disavow.Do not guess which one governs. Ask your integration lead to state in writing either that seeding depth through insertOrder is permitted for certification, or that the fill-dependent assertions are waived for preprod and verified in production. Mark the affected rows Unresolved on your submission until you have that sentence.
A second known defect in the existing UAT plan: it asks you to test non-terminal KYC states via webhook. Only kyc.approved, kyc.rejected and webhook.test fire. There is no review event. Poll GET /v1/kyc/status for non-terminal states and mark that UAT row as satisfied by polling.

Connect

C8 is the single highest-value row on this page. A constructed participant ID fails validateParticipantFirmOwnership and raises CROSS_ISV_PARTICIPANT_IMPERSONATION_ATTEMPT, a CRITICAL security log and a cross-ISV access metric, against your own legitimate account.

Onboard

The agreement.version format is not settled, and this is compliance-relevant.Do not code either format as canonical. Capture whichever value your integration lead confirms in writing and cite that message on your submission. There is also no agreement.version discovery endpoint, no rotation policy and no re-acceptance mechanism for already-approved users.

Fund

The canonical free-cash formula, the transfer rate limit and open-short collateral are all unresolved.Until the short-collateral question is answered, do not let a user withdraw funds backing an open short. State that guard explicitly on your submission.

Trade

Rows T4, T5, T10 and T11 are the rows that have cost real money. T10 in particular: reading commission_notional_collected one scale short turned a 0.01feeinto0.01 fee into 1.00 on a 32-cent trade, which exceeded a customer’s entire prefund and suppressed their refund.
The taker fee coefficient changed on 2026-09-14 and there is no fee-schedule endpoint, so every partner hand-edited their systems. Pin the current coefficient from the published Fee Schedule on the day you certify, record the value on your submission, and subscribe to the changelog. → Breaking changes and the changelog

Stream

Settle

Every row in this section is blocked in preprod, because markets do not resolve there. Agree with your reviewer which evidence substitutes.
Three settle-section facts are not yet settled, and two of them can pay a user twice.Two partners shipped settlement code switched off in production rather than risk the double payout. Until X1 is confirmed in writing, switched-off is the correct state and is an acceptable certification outcome. → Who pays at settlement

Operate

Sign-off

A submission with rows marked Unresolved is still a valid submission. A submission that silently picked a value instead is not.

What can go wrong

Next

Running it