Investment Management
This guide walks you through how to:
- Create an investment
- Fill in the subscription form
- Manage the signature flow
- Manually upload signed documents.
Read the Transaction concept guide for an explanation of investment lifecycle states, dismemberment types, and money movements.
Prerequisites
Before being able to create an investment, you'll need:
- An Account
- An Operation ID — the
SecurityOperationInvestmentopened by the issuer for the subscription round
Depending on the operation's settings, the Investor may need to be have a completed or validated kycStatus in order to be able to sign the subscription.
The operation ID is not directly related with the Security Operation ID, and can be different.
Step 1 — Creating an Investment
Use the CreateInvestment mutation to open a new subscription:
mutation OpenSubscription {
CreateInvestment(
operationId: "123"
accountId: "456"
amount: 50000
taxationType: pea
withEmail: false
) {
id
rawAmount
initialAmount
investmentStatus { value label }
signed
paymentInformation {
paymentMethodDetailed {
code
}
}
# ...Other Investment fields
}
}
→ Type reference: Investment → Reference: CreateInvestment
Key arguments:
| Argument | Required? | Description |
|---|---|---|
operationId | ✅ | The Security Operation Investment ID |
accountId | ✅ | The Investor account |
amount | ✅ | Gross subscription amount (in the platform's base currency unit) |
taxationType | ❌ | Tax wrapper: pea, assurance_vie, compte_titre, etc. |
securityFeePatternId | ❌ | Overrides the default fee pattern |
consultancyFeesPercentage | ❌ | Advisor consultancy fee (%) |
withEmail | ❌ | Sends a confirmation email to the investor |
The response includes paymentInformation with the bank details (IBAN, BIC, transfer reference) that the investor must use to send their funds.
Step 2 — Fill in the Subscription Form
Most investments require a subscription form to be filled in before the investor is able to sign. The form follows the same step-by-step pattern as the KYC form.
Getting subscription form steps
query SubscriptionSteps {
GetInvestmentFormSteps(investmentId: "789") {
id
technicalCode
label
commentsCount
# ...Other ConfigurableFormStep fields
}
}
→ Type reference: ConfigurableFormStep → Reference: GetInvestmentFormSteps
Getting the questions for a given step
query SubscriptionStepQuestions {
GetInvestmentForm(
investmentId: "789"
formStep: "investment_profile"
) {
id
formDefinition
technicalCode
label
# ...Other FormQuestionWithAnswer fields
}
}
→ Type reference: FormQuestionWithAnswer → Reference: GetInvestmentForm
Submitting answers
mutation FillSubscriptionStep {
AnswerInvestmentModalities(
investmentId: "789"
stepTechnicalCode: "investment_profile"
formAnswers: [
{ technicalCode: "investment_horizon", value: "more_than_8_years" }
{ technicalCode: "risk_tolerance", value: "balanced" }
]
) {
id
investmentStatus {
value
label
}
# ...Other Investment fields
}
}
→ Type reference: Investment → Reference: AnswerInvestmentModalities
Repeat for each step until all steps are isCompleted: true.
Step 3 — Electronic Signature
Once the subscription form is complete, the investor must sign the subscription pack. The platform integrates with electronic signature providers.
Check signature status
query CheckSignature {
GetInvestment(id: "789") {
signed
signatureStatus {
code
label
}
signersStatuses {
signerId
type
email
status
}
signatureLink {
link
linkExpirationDate
}
# ...Other Investment fields
}
}
→ Type reference: Investment
The signatureLink.link has an expiration time. Request it just before redirecting the Investor.
Request the signature URL
query GetSignatureUrl {
GetInvestment(id: "inv-789") {
signatureLink {
link # Redirect the investor here to sign
linkExpirationDate
}
}
}
Step 4 — Upload Manually Signed Subscription Forms
If the subscription requires a wet signature (physically signed documents), upload the signed subscription document with the signature date.
Document uploads use a multipart/form-data request combined with the GraphQL mutation. Refer to the Upload Document scalar documentation for the exact HTTP format.
mutation UploadSignedDocuments {
UploadSubscriptionDocuments(
investmentId: "inv-789"
uploadedDocuments: [$file]
signatureDate: "2024-03-15"
) {
id
investmentStatus {
value
}
}
}
→ Type reference: Investment → Reference: UploadSubscriptionDocuments
Step 5 — Validate the Subscription (Admin)
Once the Investor has signed and funds are received, an admin validates the subscription:
mutation ValidateInvestment {
ValidateSubscription(
investmentId: "inv-789"
validationDate: "2024-03-15"
withEmail: true
documentGeneration: {
behaviour: "generateNewDocumentsOnly"
documentTemplateId: "123"
visibleByInvestor: true
}
) {
id
investmentStatus {
code
label
}
effectiveDate
# ...Other Investment fields
}
}
→ Type reference: Investment → Reference: ValidateSubscription
Update Investment Amount (Before Signing)
Before the Investor signs, you can adjust the amount of the Subscription:
mutation AdjustAmount {
UpdateInvestmentAmount(
investmentId: "inv-789"
amount: 75000
) {
id
rawAmount
initialAmount
# ...Other Investment fields
}
}
→ Type reference: Investment → Reference: UpdateInvestmentAmount
Canceling an Investment (Draft Only)
Unsigned subscriptions can be canceled:
mutation CancelDraft {
DeleteInvestment(investmentId: "inv-789") {
id
deleted
}
}
→ Reference: DeleteInvestment
Listing Investments
query ListAccountInvestments {
GetInvestments(
accountId: "456"
filters: {
status: [validated, signed]
}
resultsPerPage: 20
page: 1
) {
edges {
node {
id
rawAmount
initialAmount
investmentStatus {
code
label
}
signed
createdAt
effectiveDate
# ...Other Investment fields
}
}
totalCount
}
}
→ Type reference: Investment → Reference: GetInvestments
Related Reference
| Operation | Reference |
|---|---|
| Create an investment | CreateInvestment |
| Fetch a single investment | GetInvestment |
| List investments | GetInvestments |
| Submit form answers | AnswerInvestmentModalities |
| Upload signed documents | UploadSubscriptionDocuments |
| Validate a subscription (admin) | ValidateSubscription |
| Update investment amount | UpdateInvestmentAmount |
| Delete a draft investment | DeleteInvestment |