Skip to main content
Version: v2

IIAS Payments

IIAS (Inventory Information Approval System) Payments refer to transactions made using a healthcare payment card (such as a Flexible Spending Account or Health Savings Account card) at merchants equipped with IIAS. The IIAS system automatically verifies and approves eligible healthcare-related purchases in real-time, ensuring compliance with IRS regulations.

Quick Reference
  • IIAS Payments: Used for healthcare cards (FSA, HSA) at IIAS-enabled merchants.

  • API Endpoints:

    • POST v2/sessions โ€” Initiate a session with IIAS payment details
    • POST v2/payments โ€” Initiate a payment with IIAS payment details
  • API Scopes: user, merchant

  • Supported Payment Method: CARD

  • CCG IIAS Processing: CCG does not have any information on whether the processed cards are healthcare cards (FSA or HSA) or not. CCG simply receives the IIAS data provided by the merchant, validates it using Stripe rules, splits the IIAS Info across payment allocations using Distribution Formula and passes the IIAS information to Stripe.

IIAS Fieldsโ€‹

FieldRequired?Description
qualified_amountMandatoryTotal IRS-eligible HSA/FSA amount for the transaction.
prescription_amountOptional (recommended)Portion used specifically for prescription medication.
vision_amountOptionalPortion used for vision-related purchases (vision merchants only).

IIAS Amount Distribution Across Split Paymentsโ€‹

When merchants initiate split payments using multiple payment methods, they provide a single IIAS specification at the transaction level, rather than breaking it down by payment method. CCG automatically distributes the IIAS amounts proportionally across each payment allocation based on its relative share of the total transaction amount.

Distribution Formulaโ€‹

For equal split payments (both payment methods eligible for IIAS), CCG calculates IIAS amounts proportionally using the following abbreviations:

  • QA = Qualified Amount
  • PA = Prescription Amount
  • VA = Vision Amount

Step 1: Calculate Total Amount and Split Ratio

totalAmount = paymentAllocation1_amount + paymentAllocation2_amount
splitRatio = paymentAllocation1_amount รท totalAmount

Step 2: Prorate IIAS Amounts for First Allocation

paymentAllocation1_QA = round(QA * splitRatio)
paymentAllocation1_PA = round(PA * splitRatio)

if totalAmount = QA + VA:
paymentAllocation1_VA = paymentAllocation1_amount - QA
else:
paymentAllocation1_VA = round(VA * splitRatio)

Step 3: Calculate Remaining Amounts for Second Allocation

paymentAllocation2_QA = QA - paymentAllocation1_QA
paymentAllocation2_PA = PA - paymentAllocation1_PA
paymentAllocation2_VA = VA - paymentAllocation1_VA
tip

The IIAS distribution calculation in the Convenient Checkout API ensures that qualified, prescription, and vision amounts are always properly aggregated across multiple payments. This guarantees:

  1. Qualified Amount Accuracy: Total qualified amount is the sum of all individual paymentAllocation's qualified amounts
  2. Prescription Amount Accuracy: Total prescription amount is the sum of all individual paymentAllocation's prescription amounts
  3. Vision Amount Accuracy: Total vision amount is the sum of all individual paymentAllocation's vision amounts

IIAS Applicability Matrixโ€‹

ScenarioIIAS ApplicableCCG Computes IIAS
Split payment: CARD + CARDYesYes
Split payment: CARD + ACHNot supportedNot supported
Split payment: ACH + ACHNot supportedNot supported
Single payment: CARDYesNo. IIAS is applied as is
Single payment: ACHNANA

Rules Enforced by Payment Processorโ€‹

IIAS payments must satisfy these constraints:

  • Combined qualified and vision amounts cannot exceed the payment amount:

    qualifiedAmount + visionAmount โ‰ค amount
  • Prescription amount cannot exceed the qualified amount:

    prescriptionAmount โ‰ค qualifiedAmount
Rule Violations

If either constraint is violated, the payment processor rejects the transaction with a validation error. Refer to Payment Details Object Error Codes for specific error responses and resolution steps.

Example IIAS computationโ€‹

Example 1: Equal Distribution of Payment Allocations
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 300; paymentAllocation2_amount = 300
// merchant provided IIAS info
qualifiedAmount = 400, prescriptionAmount = 100, visionAmount = 200

// compute total amount
totalAmount = 300 + 300 = 600

// compute splitRatio
splitRatio = 300 / 600 = 0.5

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(400 * 0.5) = 200
paymentAllocation1_PA = round(100 * 0.5) = 50
paymentAllocation1_VA = round(200 * 0.5) = 100

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 400 - 200 = 200
paymentAllocation2_PA = 100 - 50 = 50
paymentAllocation2_VA = 200 - 100 = 100
Example 2: Equal Distribution of qualifiedAmount & visionAmount
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 471; paymentAllocation2_amount = 529
// merchant provided IIAS info
qualifiedAmount = 500, prescriptionAmount = 400, visionAmount = 500

// compute total amount
totalAmount = 471 + 529 = 1000

// compute splitRatio
splitRatio = 471 / 1000 = 0.471

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(500 * 0.471) = 236
paymentAllocation1_PA = round(400 * 0.471) = 188
paymentAllocation1_VA = 471 - 236 = 235

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 500 - 236 = 264
paymentAllocation2_PA = 400 - 188 = 212
paymentAllocation2_VA = 500 - 235 = 265
Example 3: Without Vision Amount
```js
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 330; paymentAllocation2_amount = 400
// merchant provided IIAS info
qualifiedAmount = 550, prescriptionAmount = 321, visionAmount = 0

// compute total amount
totalAmount = 330 + 400 = 730

// compute splitRatio
splitRatio = 330 / 730 = 0.45205479

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(550 * 0.45205479) = 249
paymentAllocation1_PA = round(321 * 0.45205479) = 145
paymentAllocation1_VA = round(0 * 0.45205479) = 0

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 550 - 249 = 301
paymentAllocation2_PA = 321 - 145 = 176
paymentAllocation2_VA = 0 - 0 = 0
Example 4: Big Ratio Difference
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 119; paymentAllocation2_amount = 3
// merchant provided IIAS info
qualifiedAmount = 111, prescriptionAmount = 87, visionAmount = 11

// compute total amount
totalAmount = 119 + 3 = 122

// compute splitRatio
splitRatio = 119 / 122 = 0.97540984

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(111 * 0.97540984) = 108
paymentAllocation1_PA = round(87 * 0.97540984) = 85
paymentAllocation1_VA = round(11 * 0.97540984) = 11

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 111 - 108 = 3
paymentAllocation2_PA = 87 - 85 = 2
paymentAllocation2_VA = 11 - 11 = 0
Example 5: Both Round Up Overflow By +1
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 50; paymentAllocation2_amount = 50
// merchant provided IIAS info
qualifiedAmount = 51, prescriptionAmount = 30, visionAmount = 49

// compute total amount
totalAmount = 50 + 50 = 100

// compute splitRatio
splitRatio = 50 / 100 = 0.5

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(51 * 0.5) = 26
paymentAllocation1_PA = round(30 * 0.5) = 15
paymentAllocation1_VA = round(49 * 0.5) = 25

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 51 - 26 = 25
paymentAllocation2_PA = 30 - 15 = 15
paymentAllocation2_VA = 49 - 25 = 24
Example 6: Very Small Amount
// merchant/user provided paymentAllocation amount(s)
paymentAllocation1_amount = 1; paymentAllocation2_amount = 1
// merchant provided IIAS info
qualifiedAmount = 1, prescriptionAmount = 0, visionAmount = 1

// compute total amount
totalAmount = 1 + 1 = 2

// compute splitRatio
splitRatio = 1 / 2 = 0.5

// compute IIAS for paymentAllocation1
paymentAllocation1_QA = round(1 * 0.5) = 1
paymentAllocation1_PA = round(0 * 0.5) = 0
paymentAllocation1_VA = round(1 * 0.5) = 1

// compute IIAS for paymentAllocation2
paymentAllocation2_QA = 1 - 1 = 0
paymentAllocation2_PA = 0 - 0 = 0
paymentAllocation2_VA = 1 - 1 = 0

Payment Request with IIAS Detailsโ€‹

To initiate an IIAS payment, include the paymentDetails object with the appropriate healthcare and IIAS fields in your API request. Request can be made through either Sessions API or Create Payments API for user and merchant scopes.

Sample Requestโ€‹

Sample Payload for Split Payment with IIAS Through Sessions API (User Scope)
{
"customer": {
"hsid": "b0b3c48d-4cf6-404a-a554-e14640a51c5b"
},
"payment": [
{
"merchantTransactionId": "849fb3f7-517d-4a75-ab1f-3367615e9556",
"amount": 800000,
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 3000,
"qualifiedAmountDetails": {
"prescriptionAmount": 1000
}
},
"visionAmount": 2000
}
}
}
]
}
Sample Payload for Split Payment (Single Card) with IIAS Through Create Payments API (Merchant Scope)
{
"amount": 100,
"merchantTransactionId": "string",
"description": "string",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 50,
"qualifiedAmountDetails": {
"prescriptionAmount": 30
}
},
"visionAmount": 49
}
},
"customer": {
"hsid": "da31da38-f997-4079-8cce-c749b4067ecb",
"metadata": {
"property1": "string",
"property2": "string"
}
},
"paymentAllocations": [
{
"paymentMethodId": "b6df8625-cd25-4123-b345-638aa7b5d011",
"amount": 100
}
]
}
Sample Payload for Split Payment (Card + Card) with IIAS Through Create Payments API (Merchant Scope)
{
"amount": 100,
"merchantTransactionId": "string",
"description": "string",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 50,
"qualifiedAmountDetails": {
"prescriptionAmount": 30
}
},
"visionAmount": 49
}
},
"customer": {
"hsid": "da31da38-f997-4079-8cce-c749b4067ecb",
"metadata": {
"property1": "string",
"property2": "string"
}
},
"paymentAllocations": [
{
"paymentMethodId": "b6df8625-cd25-4123-b345-638aa7b5d011",
"amount": 50
},
{
"paymentMethodId": "b6df8625-cd25-4123-b345-638aa7b5d012",
"amount": 50
}
]
}

Payment Response for IIAS Paymentsโ€‹

For split payments, the API response includes IIAS details at two levels:

  • Top-level paymentDetails: Contains the original IIAS amounts provided by the merchant
  • paymentAllocations[].paymentDetails: Contains the distributed IIAS amounts calculated for each payment allocation

This structure allows you to verify that the merchant's IIAS specification was properly distributed across multiple payment methods.

Sample Single Card Payment Response with IIAS Details
{
"url": "/v2/payments/a2222db7-5c10-4e78-bed6-72b2c6b222a8",
"data": {
"id": "a2222db7-5c10-4e78-bed6-72b2c6b222a8",
"amount": 1000,
"description": "V2 PaymentDetails Split Tender",
"merchantTransactionId": "b4259207-b52e-4e53-a2a7-1f6d9cadb1234",
"status": "COMPLETED",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 400,
"qualifiedAmountDetails": {
"prescriptionAmount": 100
}
},
"visionAmount": 400
}
},
"paymentAllocations": [
{
"id": "73e4a9c0-0d9b-2222-b1f4-d789c050a53c",
"amount": 1000,
"status": "COMPLETED",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 400,
"qualifiedAmountDetails": {
"prescriptionAmount": 100
}
},
"visionAmount": 400
}
}
}
]
}
}
Sample Split Payment (Card + Card) Response with IIAS Details
{
"url": "/v2/payments/a2222db7-5c10-4e78-bed6-72b2c6b222a8",
"data": {
"id": "a2222db7-5c10-4e78-bed6-72b2c6b222a8",
"amount": 2000,
"description": "V2 PaymentDetails Split Tender",
"merchantTransactionId": "b4259207-b52e-4e53-a2a7-1f6d9cadb1234",
"status": "COMPLETED",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 777,
"qualifiedAmountDetails": {
"prescriptionAmount": 33
}
},
"visionAmount": 113
}
},
"paymentAllocations": [
{
"id": "73e4a9c0-0d9b-2222-b1f4-d789c050a53c",
"amount": 1000,
"status": "COMPLETED",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 389,
"qualifiedAmountDetails": {
"prescriptionAmount": 17
}
},
"visionAmount": 57
}
}
},
{
"id": "66e41111-cc68-423f-939f-efbff36e1111",
"amount": 1000,
"status": "COMPLETED",
"paymentDetails": {
"healthcare": {
"iias": {
"qualifiedAmount": 388,
"qualifiedAmountDetails": {
"prescriptionAmount": 16
}
},
"visionAmount": 56
}
}
}
]
}
}