Organisation Use Cases

Organisations let you model merchants for payment acceptance and group customers when more complex permissions are needed. Examples include onboarding a business as a merchant, managing shared wallets where multiple users transact, or linking a minor customer to a guardian for KYC compliance.


Register a New Organisation

Prerequisites:

  • Valid bearer token
  • KYB documents ready to upload (company registration certificate, ID documents of directors)

Step 1 — Create the Organisation

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "name": "Dlamini Trading (Pty) Ltd",
  "tradingName": "Dlamini Traders",
  "email": "[email protected]",
  "phone1": "27115551234",
  "companyNumber": "2021123456",
  "taxNumber": "9876543210",
  "industrialSector": "Retail",
  "industrialClassification": "General Merchandise",
  "categoryCode": 5999,
  "type": "BUSINESS",
  "externalUniqueId": "org-dlamini-001"
}

Response (201 Created):

{
  "organisationId": 88142,
  "tenantId": 42,
  "name": "Dlamini Trading (Pty) Ltd",
  "tradingName": "Dlamini Traders",
  "email": "[email protected]",
  "phone1": "27115551234",
  "companyNumber": "2021123456",
  "taxNumber": "9876543210",
  "status": "ACTIVE",
  "externalUniqueId": "org-dlamini-001",
  "created": "2026-05-19T10:00:00.000Z"
}

Store the organisationId — it is required for all subsequent calls.

Step 2 — Add Address Details

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/addresses
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "line1": "45 Commerce Street",
  "line2": "Newtown",
  "city": "Johannesburg",
  "state": "Gauteng",
  "postalCode": "2001",
  "country": "ZAF",
  "addressType": "REGISTERED"
}

Response (201 Created): Returns the address object with a system-assigned addressId.

Step 3 — Upload KYB Documents

Upload company registration and director identity documents as base64-encoded content.

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/documents
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "documentType": "COMPANY_REGISTRATION",
  "fileName": "cipc_cert.pdf",
  "contentType": "application/pdf",
  "content": "base64EncodedPdfHere..."
}
POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/documents
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "documentType": "NATIONAL_IDENTITY",
  "fileName": "director_id.jpg",
  "contentType": "image/jpeg",
  "content": "base64EncodedImageHere..."
}

Step 4 — Add Customer Positions to the Organisation

Customers become members of an organisation by being assigned a position. Different positions can have different permissions (e.g. OWNER, DIRECTOR, MEMBER).

Prerequisite: The customer must already exist — see Customer Use Cases.

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/positions
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "customerId": 4829104,
  "position": "OWNER"
}

Response (201 Created):

{
  "positionId": 77021,
  "organisationId": 88142,
  "customerId": 4829104,
  "position": "OWNER",
  "status": "ACTIVE",
  "created": "2026-05-19T10:05:00.000Z"
}

Step 5 — Run KYB (Ratify)

Once the profile, address, and documents are uploaded, trigger the KYB pipeline.

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/ratify
Authorization: Bearer {jwt}
Content-Type: application/json

{}

Response (200 OK):

{
  "ratifyResultId": 98280,
  "organisationId": 88142,
  "status": "COMPLETED",
  "kycStatus": "PASSED",
  "riskScore": 12,
  "results": [
    { "processor": "OcrCheck", "status": "PASSED" },
    { "processor": "SdnCheck", "status": "PASSED" },
    { "processor": "RelyComplyCheck", "status": "PASSED" }
  ],
  "created": "2026-05-19T10:10:00.000Z"
}

See Ratify Use Cases for full details on the KYB processor pipeline.

Step 6 — Create an Organisation Wallet

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/wallets
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "walletTypeId": 7825,
  "status": "ACTIVE",
  "name": "Dlamini Trading Merchant Wallet",
  "currency": "ZAR",
  "externalUniqueId": "wallet-dlamini-001"
}

Response (201 Created):

{
  "walletId": 2081002,
  "organisationId": 88142,
  "tenantId": 42,
  "walletTypeId": 7825,
  "name": "Dlamini Trading Merchant Wallet",
  "currency": "ZAR",
  "status": "ACTIVE",
  "currentBalance": 0,
  "availableBalance": 0,
  "walletFriendlyId": "M741XPQR",
  "externalUniqueId": "wallet-dlamini-001",
  "created": "2026-05-19T10:15:00.000Z"
}

To link a specific customer (cardholder) to the wallet at creation time, include customerId in the request body. That customer must have a position in the organisation.


Register a Customer Under an Organisation

Customers within an organisation follow the same KYC onboarding flow as standalone customers, then are added to the organisation via a position assignment.

  1. Complete the standard customer registration (Steps 1–4 of Customer Use Cases)
  2. Add the customer as a position holder in the organisation (Step 4 above)
  3. Create a wallet under the organisation linked to the customer:
POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/wallets
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "walletTypeId": 7825,
  "status": "ACTIVE",
  "name": "Member Wallet",
  "currency": "ZAR",
  "customerId": 4829104,
  "externalUniqueId": "wallet-member-sipho-001"
}

View Organisation Wallets

GET /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/wallets
Authorization: Bearer {jwt}

Returns all wallets belonging to the organisation.


Update Organisation Information

PUT /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "organisationId": 88142,
  "email": "[email protected]",
  "phone1": "27115559999",
  "version": 1
}

Update Organisation KYB

If KYB fails or documents need to be refreshed, update the relevant profile fields and documents, then re-trigger ratify.

Step 1 — Update documents

PUT /eclipse-conductor/rest/v1/tenants/{tenantId}/documents/{documentId}
Authorization: Bearer {jwt}
Content-Type: application/json

{
  "documentId": 20441,
  "documentType": "COMPANY_REGISTRATION",
  "fileName": "cipc_cert_updated.pdf",
  "contentType": "application/pdf",
  "content": "base64EncodedUpdatedPdfHere..."
}

Step 2 — Re-run KYB

POST /eclipse-conductor/rest/v1/tenants/{tenantId}/organisations/{organisationId}/ratify
Authorization: Bearer {jwt}
Content-Type: application/json

{}

Permissions Required

PermissionDescription
Organisation.CREATE.AllowedCreate organisations
Organisation.READ.AllowedView organisations
Organisation.UPDATE.AllowedUpdate organisation profile
OrganisationPosition.CREATE.AllowedAdd members to an organisation
Ratify.CREATE.AllowedRun KYB
Wallet.CREATE.AllowedCreate organisation wallets