Skip to main content

Onboard a new customer

End-to-end: from looking up the IDs you need, through creating an invitation, sending it to the customer, and verifying the invitation is in flight.

All steps require a JWT — get one from the homepage first.

1. Find a risk group ID

Creating an invitation requires a riskGroupId — pick one your bank already has configured.

query findRiskGroups {
riskGroups(first: 50) {
nodes {
id
name
}
}
}

Copy the id of the risk classification that fits the prospective customer.

2. (Optional) Find a branch office ID

If your bank scopes customers to branch offices, look one up. Skip this if you onboard centrally.

query findBranchOffices {
branchOffices(first: 50) {
nodes {
id
name
}
}
}

3. Create the invitation

Now create the invitation in a draft state. The customer is not notified yet — that happens in step 5.

mutation createOrganizationInvitation($input: CreateOrganizationInvitationInput!) {
createOrganizationInvitation(input: $input) {
organizationInvitation {
id
organizationName
externalId
}
}
}

Save the returned organizationInvitation.id — you'll need it for the next steps.

4. (Optional) Adjust the invitation before sending

Mistake in the contact email? Wrong VAT number? Update the draft before sending.

mutation updateInvitationInformation($input: UpdateOrganizationInvitationInformationInput!) {
updateOrganizationInvitationInformation(input: $input) {
organizationInvitation {
id
organizationName
vatNumber
}
}
}

Only the fields you provide are changed — leave the rest as null.

5. Send it

startInvitationFlow sends the invitation email and starts onboarding. The response includes your remaining invitation quota for the month and week.

mutation sendInvitation($input: StartInvitationFlowInput!) {
startInvitationFlow(input: $input) {
organizationInvitation {
id
}
invitationsLeft {
invitationsLeftThisMonth
invitationsLeftThisWeek
}
}
}

If you hit No more invitations left this month/week, you've exceeded your bank's configured cap — wait or contact Unioo to raise the limit. The mutation may also return GraphQL errors describing missing required information on the invitation itself, without throwing — always check the errors field.

Once the customer accepts the invitation, the resulting record moves from organizationInvitations to organizations — see Querying organizations.