sofEuQuestionnaire object embedded directly in the KYC payload (GET/POST /v2/users/:userId/kyc) — its required fields varied by rail, and values were free-text strings with no fixed vocabulary. v3 breaks this out into its own dedicated resource with renamed fields and a fixed enum for nearly every value.
Endpoints
Answers feed into the same
POST /users/:userId/compliance/submit review as the Compliance Profile, Associated Party, and Documents resources — a compliance review can be blocked pending questionnaire answers the same way it can be blocked on a missing document.
v2’s questionnaire values were unconstrained free text (e.g.
sourceOfFunds: "salary" or "consulting income"), so they can’t be mechanically mapped onto v3’s fixed enum values (e.g. sourceOfFunds: "employment_income"). There’s no automatic backfill — plan to re-collect questionnaire answers from users through your v3 integration.Request changes: Individual
v2 (sofEuQuestionnaire object, itself nested inside the main KYC payload):