Skip to main content

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.
Before you start

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:

  1. An Account
  2. An Operation ID — the SecurityOperationInvestment opened by the issuer for the subscription round
note

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.

info

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:

ArgumentRequired?Description
operationIdThe Security Operation Investment ID
accountIdThe Investor account
amountGross subscription amount (in the platform's base currency unit)
taxationTypeTax wrapper: pea, assurance_vie, compte_titre, etc.
securityFeePatternIdOverrides the default fee pattern
consultancyFeesPercentageAdvisor consultancy fee (%)
withEmailSends 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

warning

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

OperationReference
Create an investmentCreateInvestment
Fetch a single investmentGetInvestment
List investmentsGetInvestments
Submit form answersAnswerInvestmentModalities
Upload signed documentsUploadSubscriptionDocuments
Validate a subscription (admin)ValidateSubscription
Update investment amountUpdateInvestmentAmount
Delete a draft investmentDeleteInvestment