Client Org Management Quick Start

This guide is for TPAs, benefits platforms, and multi-tenant integrators who need to programmatically create and manage Client Organizations.

If Lynx manages your single Client Org, skip this guide.


Who This Guide Is For

Use this guide if you are:

  • A TPA administering FSA, HRA, or HSA for multiple employer groups
  • An ICHRA platform onboarding employers
  • A benefits aggregator white-labeling Lynx
  • Any platform creating Client Orgs dynamically via API

How the Hierarchy Works

ROOT Client Org (Your TPA)
    ├── Employer A
    ├── Employer B
    ├── Employer C
    │       └── Division C1
    └── Employer D

Key Rules

RuleDetail
Parent requiredMust reference parentName
Products must exist on parentNo new products at child level
Parent must be ActiveRequired before creating children
Max 9 levelsTree depth limit
Program inheritanceChild inherits card program
Token scopeRoot token used for all operations

Prerequisites

Before calling the API:

  • Parent Client Org is Active
  • API credentials available
  • Products already configured
  • Business details collected (EIN, contacts, address)

Create a Child Client Org

Endpoint

POST https://sandbox.lynx-fh.co/enrollments/client

Request Body

{
  "data": {
    "clientOrg": {
      "client": { "name": "YOUR_CLIENT_TENANT" },
      "name": "ACME_CORP_2026",
      "displayName": "Acme Corporation",
      "parentName": "YOUR_PARENT_CLIENT_ORG",
      "ein": "123456789",
      "einType": "Corporation",
      "stateIncorporated": "MA",
      "type": "Employer",
      "websiteUrl": "https://acme.example.com",
      "businessYears": "15",
      "addresses": [{
        "line1": "123 Main Street",
        "line2": "Suite 400",
        "city": "Boston",
        "stateProvince": "MA",
        "postalCode": "02101",
        "country": "US",
        "primaryIndicator": true
      }],
      "emails": [{
        "emailAddress": "[email protected]",
        "primaryIndicator": true
      }],
      "phones": [{
        "phoneNumber": "6175551234",
        "countryCode": "1",
        "primaryIndicator": true
      }],
      "clientOrgProducts": [
        { "product": { "name": "FSA" } },
        { "product": { "name": "LPFSA" } }
      ],
      "clientOrgContacts": [{
        "firstName": "Jane",
        "lastName": "Smith",
        "title": "Benefits Administrator",
        "type": "Administrator",
        "relationshipType": "Primary",
        "primaryIndicator": true,
        "dateOfBirth": "1985-03-15",
        "addresses": [{
          "line1": "123 Main Street",
          "city": "Boston",
          "stateProvince": "MA",
          "postalCode": "02101",
          "country": "US",
          "primaryIndicator": true
        }],
        "emails": [{
          "emailAddress": "[email protected]",
          "primaryIndicator": true
        }],
        "phones": [{
          "phoneNumber": "6175551234",
          "countryCode": "1",
          "primaryIndicator": true
        }]
      }]
    }
  },
  "idempotency": {
    "idempotencyKey": "acme-corp-2026-enrollment-001"
  }
}

Required Fields

FieldDescription
client.nameTenant name
nameUnique client org ID
parentNameParent org
einEmployer ID
addressesAt least one primary
emailsAt least one primary
phonesAt least one primary
clientOrgProductsAt least one product
clientOrgContactsAt least one contact
idempotencyKeyUnique request ID

Optional Fields

FieldDescriptionDefault
displayNameFriendly nameSame as name
einTypeCorp/LLC/etc
stateIncorporatedState code
typeOrg type
websiteUrlWebsite
businessYearsYears active
newCardPackageIndicatorCustom card designfalse
allowEnrollmentIndicatorAllow enrollmenttrue
kybRequiredIndicatorKYB requiredInherited

Response

{
  "data": "ACME_CORP_2026"
}

Card Program Options

Option 1: Inherit (Default)

  • Same BIN
  • Same card package
  • Same purses

Option 2: Explicit Create

{
  "data": {
    "clientOrg": {},
    "cardProgram": {
      "createCardProgram": true
    }
  }
}

Option 3: No Card Program

{
  "data": {
    "clientOrg": {},
    "cardProgram": {
      "createCardProgram": false
    }
  }
}

Status Lifecycle

StatusMeaningNext Step
NewCreatedWait
PendingReviewKYB pending
App_ApprovedReadyActivation
ActiveReadyEnroll members

Check Status

GET https://sandbox.lynx-fh.co/clientorg/{clientOrgName}

Get Plan Summary

GET https://sandbox.lynx-fh.co/clientorg/{clientOrgName}/plan/summary

Best Practices

Naming Convention

{TENANT}_{EMPLOYER_ID}_{YEAR}

Example:

ACME_TPA_EMPLOYER_12345_2026

Token Management

  • Use root org token
  • Applies across hierarchy
  • No child credentials needed

Testing

  • Create test org
  • Enroll test member
  • Validate card issuance

Webhooks

EventMeaning
lynx.clientOrgCreatedCreated
lynx.clientOrgActiveActive
lynx.clientOrgProductAddedProduct added

Example: ICHRA Platform Flow

  1. Lynx provisions root org
  2. Create child org via API
  3. Wait for Active
  4. Get plan summary
  5. Enroll members
  6. Issue virtual cards

Example: TPA Flow

  1. Lynx provisions root org
  2. Create employer org
  3. Configure plan
  4. Enroll members
  5. Issue cards
  6. Process claims