KYC Management
Know Your Customer (KYC) is the compliance process that every investor must complete before they can invest. This guide walks you through fetching the KYC form, submitting answers, and triggering the compliance analysis.
Read the Account concept guide for KYC status values and the Forms concept guide for a detailed explanation of form steps and questions.
KYC Status Overview
Your integration will typically drive the investor through the first three states. The transition to validated or refused is performed by the platform's compliance team.
Step 1 — Retrieving KYC Form Steps
Before presenting the form to the Investor, fetch the list of steps available for their account. Steps may vary depending on the account type (individual vs corporate).
query GetKycSteps {
GetKycFormSteps(accountId: "123") {
id
technicalCode
label
commentsCount
# ...Other ConfigurableFormStep fields
}
}
→ Type reference: ConfigurableFormStep → Reference: GetKycFormSteps
Example response:
{
"GetKycFormSteps": [
{ "technicalCode": "identity", "label": "Identity", "position": 1, "isCompleted": false },
{ "technicalCode": "address", "label": "Address", "position": 2, "isCompleted": false },
{ "technicalCode": "financial_info", "label": "Financial Info", "position": 3, "isCompleted": false },
{ "technicalCode": "documents", "label": "Documents", "position": 4, "isCompleted": false }
]
}
Step 2 — Fetching Questions for a Step
For each step, retrieve the questions and their current answers (if any):
query GetKycStep {
GetKycForm(
accountId: "123"
formStep: "identity"
) {
id
technicalCode
label
answer {
value
# For file questions, answer may contain document information
}
# ...Other FormQuestionWithAnswer fields
}
}
→ Type reference: FormQuestionWithAnswer → Reference: GetKycForm
Step 3 — Submitting Answers
Submit answers for a step using the AnswerKyc mutation. You can re-call this mutation as many times as needed — previous answers for the step will be overwritten.
mutation SubmitIdentityStep {
AnswerKyc(
accountId: "123"
stepTechnicalCode: "identity"
formAnswers: [
{ technicalCode: "first_name", value: "Alice" }
{ technicalCode: "last_name", value: "Dupont" }
{ technicalCode: "birth_date", value: "1985-04-12" }
{ technicalCode: "nationality", value: "FR" }
]
) {
id
kycStatusDetailed {
code
label
}
# ...Other Account fields
}
}
→ Type reference: Account → Reference: AnswerKyc
Repeat this for each step until all steps are marked isCompleted: true.
Linking KYC Answers to an Investment
Some subscription forms extend the KYC with investment-specific questions. Pass investmentId to scope the answers to that investment:
mutation SubmitInvestmentKycStep {
AnswerKyc(
accountId: "123"
investmentId: "456"
stepTechnicalCode: "investment_profile"
formAnswers: [
{ technicalCode: "investment_horizon", value: "long_term" }
{ technicalCode: "risk_tolerance", value: "moderate" }
]
) {
id
kycStatusDetailed {
code
label
}
# ...Other Account fields
}
}