Prerequisites:
- a working access token,
- the
kyc:writescope granted against your client — scopes are granted server-side and cannot be requested on the token exchange, - both firm strings and the difference between them — see Firms, participants and accounts.
The recorded position, in one paragraph
The IB owns end-user KYC, and an IB that is licensed may be able to remit against its own KYC policy, subject to AML sign-off. No timeframe is committed for that. Everything else on this page follows from those two sentences, and they are the entirety of what has been decided. This answer has only ever existed in Slack; this page is the first time it has been written down for partners.What we still require, regardless
Until a reliance model is in force for your firm, every participant you send us goes through our identity path as well as yours.- Our check is Socure-backed. We run it and we make the decision on the participant-provisioning path. You cannot override it, appeal it, or supply a decision.
decision,statusandsubStatuson our response are informational, not control flow. Log them; do not branch on them.- Branch on three things instead: is there a
docvobject in the response, did a terminal webhook arrive, and isparticipantIdnon-empty. - Only terminal events fire:
kyc.approved,kyc.rejectedandwebhook.test. There is no review event, so non-terminal states must be polled. participantIdcan come back empty on an accept while provisioning finishes. Observed gaps run from ~500 ms to 26 minutes. Wait for thekyc.approvedwebhook before you enable trading.- One SSN maps to exactly one exchange account, platform-wide. A trading account ID is derived from the customer’s SSN. There is no re-KYC, reset or PII-update path — a customer whose SSN is already in use cannot be re-verified by you.
- Our decline reasons are not exposed to you. Retrieving one currently requires a human to open a Socure thread, and there is no internal procedure for it either. You cannot tell your customer why we declined them.
"In Review"is a realsubStatusvalue that is not in the documented set (none/docv_required/pending). Aswitchover the documented three falls through on it.
Enable document verification now. Do not wait for the reliance model.
This is the practical advice on record, and it is the one thing on this page you can act on today. Setdocv_eligible: true on every submission. It is what converts a review case into a self-service document upload. If you leave it off, review cases go to manual review, 1–2 business days, and your signup funnel absorbs that delay on every one of them.
The reasoning is a sequencing argument, not a technical one: the delay you avoid by enabling document verification is available immediately, and the delay you would avoid by relying on your own KYC has no committed timeframe. A funnel designed around a reliance model that is not in force is a funnel with a two-day hole in it.
Three details that decide whether document verification works for you:
What you may share with us, and under what agreement
Two different sharing relationships apply, and partners conflate them. Your customer’s identity payload comes to us under your IB Agreement. You send it on the KYC path; we run our check on it. Field mechanics you will hit immediately:- Requests are
snake_case, REST responses arecamelCase, and webhook payloads aresnake_case. One object graph, three conventions. external_idis capped at 49 characters.postal_codeis five digits.{"code": 9, "message": "user already provisioned with a different SSN"}returns as HTTP 400, not the documented 409.
polymarketexchange.com, under requirements R-1 to R-6. R-3 forbids hosting modified, excerpted or re-rendered copies — link to them, do not re-serve them.
Contrast with the ISV position
If you or your vendor have read ISV material, this table is what differs. The ISV column is correct for an ISV and wrong for you.
The row readers get wrong is the third one. “You own KYC” and “our check still runs on every participant” are both true at the same time, and they will stay both true until a reliance model is signed off for your firm.
Defer KYC to the point of trading
Do not put KYC in your signup form. Trigger it when the customer first tries to do something that requires an exchange account. Three numbers drive this, and none of them changes because you are an IB:- Manual review takes 1–2 business days, so a KYC gate at signup abandons every review case at the front door.
participantIdcan be empty for up to 26 minutes after an approval, so “signup complete” cannot mean “tradable”.- Our rejections are terminal and carry no partner-visible reason, so a customer rejected at signup has nothing to fix and no path back.