Consumer-Owned Accounts (HSA) Quick Start
This guide covers everything you need to enroll members into Health Savings Accounts (HSA) — Lynx's member-owned account product.
What Makes HSA Different
- The member owns the account (real financial account in their name)
- KYC (identity verification) is required before the account can be opened
- SSN is required for KYC and IRS reporting
- In lieu of SSN, member can provide passport number
- Members can:
- Contribute their own funds
- Receive employer contributions
- Invest funds
- Account is portable (member keeps it if they leave employer)
- IRS contribution limits apply (Individual vs Family coverage)
Understand KYC Flow
HSA enrollment triggers identity verification. Members may:
- Be approved instantly
- Require document upload
- Be denied
Your integration should handle all three outcomes.
Required Fields
| Field | Type | Description |
|---|---|---|
| clientMemberId | string | Your unique identifier for this member |
| clientOrg.name | string | The Client Org to enroll into |
| firstName | string | Legal first name |
| lastName | string | Legal last name |
| ssn | string | Social Security Number (XXX-XX-XXXX or XXXXXXXXX) |
| dateOfBirth | string | Date of birth (YYYY-MM-DD) |
| addresses | array | At least one residential address (no PO boxes) |
| phones | array | At least one primary phone |
| emails | array | At least one primary email |
| healthPlanCoverageType | string | Individual or Family |
| memberProducts | array | Must include HSA product |
| memberCardPreferences.planName | string | From plan summary |
| memberCardPreferences.cardPackageName | string | From plan summary |
| idempotencyKey | string | Unique request identifier |
Enroll a Member
Submit enrollment request with required fields.
What Happens Next
-
Lynx validates request:
- Required fields
- Product configuration
- Duplicate SSN
-
Member created:
- Status:
NEW - KYC begins
- Status:
-
KYC runs:
- Submitted to banking partner
KYC Outcomes
| Outcome | Member Product Status | Action |
|---|---|---|
| Pass | Account_Active | Nothing — account opens |
| PendingReview | Account_Active | Nothing |
| Needs Documents | Awaiting Documents | Collect and upload documents |
| Fail | Denied | Notify member, retry if needed |
Monitor Enrollment Status
Webhooks
| Event | Meaning |
|---|---|
| lynx.enrollment.submitted | Enrollment received, KYC starting |
| lynx.enrollment.approved | KYC passed, account created |
| lynx.enrollment.awaitingDocuments | KYC needs documentation |
| lynx.enrollment.denied | KYC failed |
| lynx.card.issued | Card generated |
Handle KYC Fallout
When KYC requires documents:
{
"memberProduct": {
"status": "Awaiting Documents",
"verificationFailures": [
{
"type": "IDENTITY",
"message": "Unable to verify identity"
}
]
}
}Acceptable Documents
| Type | Acceptable Documents |
|---|---|
| IDENTITY | Driver’s License, State ID, Passport, Military ID, US Visa |
| ADDRESS | Driver’s License, Lease, Bank Statement (60 days), Utility Bill (60 days) |
| SSN | Social Security Card, W-2, 1099, Tax Return (within 2 years) |
After Enrollment
Once active:
- Display card details → Viewing Card Details with VGS
- Link external bank → Plaid integration
- Process money movement (contributions/reimbursements → Payment APIs
- Enable investments → Investments integration (coming soon)
Combined Enrollments (HSA + LPFSA example)
You can enroll both in a single request. HSA drives requirements (SSN, DOB, etc.).
{
"clientMemberId": "EMP-001",
"ssn": "111-11-1111",
"dateOfBirth": "1985-06-15",
"healthPlanCoverageType": "Family",
"memberProducts": [
{
"product": { "name": "HSA" },
"effectiveDate": "2026-01-01"
},
{
"product": { "name": "LPFSA" },
"effectiveDate": "2026-01-01"
}
],
"memberAccounts": [
{
"product": { "name": "LPFSA" },
"electionAmount": 2850.00
}
]
}
- HSA → goes through KYC
- LPFSA → auto-approved (no KYC)
See Plan-Owned Programs Quick Start for more details.
Updated 8 days ago
