curl --request POST \
--url https://api.next.orenda.finance/v1/access-management/invite/customer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "ada.lovelace@example.com",
"firstName": "Ada",
"lastName": "Lovelace",
"dob": "1985-12-10",
"nationality": "GB",
"phone": "+447700900123",
"address": {
"addressLine1": "12 Analytical Way",
"addressLine2": "Floor 2",
"city": "London",
"state": "Greater London",
"country": "GBR",
"postalCode": "EC1A 1BB"
},
"isPrepaidCardCustomer": true,
"accountId": "8f1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"confirmation": {
"method": "passkey",
"passkeySession": "AYABeJ...custom-auth-session",
"assertion": "{\"id\":\"q1n...\",\"response\":{\"signature\":\"MEUCI...\"}}"
}
}
'{
"success": true,
"data": {
"message": "Customer invitation processed successfully"
}
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}Invite a sub-user or corporate manager
Invites a sub-user or a corporate manager under the signed-in customer’s account. Set exactly one of isPrepaidCardCustomer / isCardOnly / isSpouse / isChild (the sub-roles are mutually exclusive), or isCorporateManager on its own. Zero flags, or more than one, returns 400. Consumers cannot invite a plain customer.
Sub-user (funding account): a sub-user is onboarded as a pseudo account funded from one of your own accounts, named by accountId, which is therefore required. It is validated before the user is created (must be one of your accounts, ACTIVE, and not a pseudo account); failures return 400 — Invalid request body when accountId is missing, or VALIDATION_ERROR when the account is not found / inactive / pseudo / not yours.
Corporate manager: a natural person who operates your corporate. They complete their own individual KYC and get no account and no card of their own; once onboarding completes they act on your corporate’s accounts and cards, and cards they order are issued against your corporate with their own name embossed. accountId is not used — a manager is not funded from a parent account.
Only a corporate may invite a manager: the corporate is taken from your own application, never from the request body. If your application is not a company the request returns 400. This also means a manager cannot invite another manager.
Inherited fields: depending on the program’s onboarding role config, the invitee’s address and phone may be inherited from your application instead of the request body.
Step-up authentication: include a confirmation object — either { method: "passkey", passkeySession, assertion } or { method: "totp", totp, accessToken } (where accessToken is the Cognito access_token, not the id_token bearer). Missing confirmation → 422 SCA_MISSING; an incomplete pair → 400; an unsupported method (e.g. pin) → 422 SCA_INVALID_METHOD. For TOTP, the access token must belong to you, else 401.
curl --request POST \
--url https://api.next.orenda.finance/v1/access-management/invite/customer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "ada.lovelace@example.com",
"firstName": "Ada",
"lastName": "Lovelace",
"dob": "1985-12-10",
"nationality": "GB",
"phone": "+447700900123",
"address": {
"addressLine1": "12 Analytical Way",
"addressLine2": "Floor 2",
"city": "London",
"state": "Greater London",
"country": "GBR",
"postalCode": "EC1A 1BB"
},
"isPrepaidCardCustomer": true,
"accountId": "8f1a2b3c-4d5e-4f6a-8b7c-9d0e1f2a3b4c",
"confirmation": {
"method": "passkey",
"passkeySession": "AYABeJ...custom-auth-session",
"assertion": "{\"id\":\"q1n...\",\"response\":{\"signature\":\"MEUCI...\"}}"
}
}
'{
"success": true,
"data": {
"message": "Customer invitation processed successfully"
}
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}{
"success": false,
"code": "<string>",
"message": "<string>"
}Authorizations
The user's id_token from authentication — the ID token, not the access_token. The program and environment come from the token.
Body
Sent by a signed-in customer. Exactly one application flag must be true — either a sub-role (isPrepaidCardCustomer / isCardOnly / isSpouse / isChild, mutually exclusive) or isCorporateManager. Consumers can only invite sub-role members or a corporate manager, never a plain customer.
accountId is required for a sub-role invite (it is the funding parent, and must be one of the inviter's own accounts — ACTIVE, not a pseudo account) and unused for a corporate manager, which is not parent-funded.
isCompany is not accepted alongside either: a sub-role invitee and a corporate manager are both always natural persons.
Must include a confirmation step-up object (passkey or TOTP).
Discriminated step-up (SCA) credential. passkey and totp are accepted on this endpoint (a pin confirmation is rejected with 422 SCA_INVALID_METHOD).
- Passkey
- TOTP
Show child attributes
Show child attributes
Date of birth, YYYY-MM-DD.
Alpha-2 country code, e.g. GB.
E.164-style number.
Show child attributes
Show child attributes
Funding parent account the invitee draws against. Required for a sub-role invite; must be one of the inviter's own accounts, ACTIVE, and not a pseudo account. Not used for isCorporateManager — a manager is not funded from a parent account.
Invite a corporate manager: a natural person who operates your corporate. Requires that your own application is a company. Mutually exclusive with every sub-role flag, and with isCompany. Does not use accountId.