Adjudication Complete Event
The adjudication_complete event is sent when a claim adjudication has finished processing. This is the primary webhook event for receiving adjudication results in real time.
Payload
The eventPayload contains the full claim data — the same structure returned by GET /v1/claims?id={claim_id} — including the original claim fields, parsed evidence, and adjudication results.
{
"eventId": "evt_adj_001",
"eventType": "adjudication_complete",
"eventPayload": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"claim_number": "CLM-2025-00042",
"claim_amount": 15000,
"service_start_date": "2025-03-10",
"service_end_date": "2025-03-10",
"submission_date": "2025-03-15",
"provider": "Lakewood Family Dentistry",
"employer": "Acme Corp",
"description": "Routine dental cleaning and X-rays",
"expense_category": "Dental",
"expense_type": "Preventive Care",
"plan_name": "Acme 2025 Medical FSA",
"plan_type": "medical_fsa",
"plan_year_start": "2025-01-01",
"plan_year_end": "2025-12-31",
"final_submission_date": "2026-03-31",
"final_service_date": "2025-12-31",
"adjudication_results": {
"silver_recommendation": "approve",
"valid_service_date": true,
"valid_total_amount": true,
"out_of_pocket_total": 15000,
"suggested_service_date_start": null,
"suggested_service_date_end": null,
"deny_code": null,
"deny_text": null,
"suggested_provider_name": null
},
"receipts": [
{
"merchant": "Lakewood Family Dentistry",
"purchased_at": "2025-03-10",
"total_eligible_amount": 15000,
"items": [
{
"title": "Dental Cleaning",
"sku": "D1110",
"sku_type": "CDT",
"line_item_price": 10000,
"claimable_amount": 10000,
"eligible": true
},
{
"title": "Dental X-Rays (Bitewing)",
"sku": "D0274",
"sku_type": "CDT",
"line_item_price": 5000,
"claimable_amount": 5000,
"eligible": true
}
]
}
],
"medical_invoices": [],
"dependent_care_invoices": [],
"statement_of_accounts": []
}
}
Amounts are in cents
All monetary values are integers representing cents. For example, 15000 represents $150.00.
Field Reference
Top-Level Fields
| Field | Type | Description |
|---|---|---|
eventId | string | Unique event identifier — use for idempotency |
eventType | string | Always "adjudication_complete" for this event |
eventPayload | object | Full claim data including adjudication results |
Adjudication Results
The adjudication_results object within eventPayload contains:
| Field | Type | Description |
|---|---|---|
silver_recommendation | string | Silver's recommendation (see below) |
valid_service_date | boolean | Whether the claimed service dates are within the plan year |
valid_total_amount | boolean | Whether the claimed amount matches the evidence |
out_of_pocket_total | integer | Total out-of-pocket amount from evidence (in cents) |
suggested_service_date_start | string | Corrected start date if evidence suggests a different date |
suggested_service_date_end | string | Corrected end date if evidence suggests a different date |
deny_code | string | Machine-readable denial reason code (null if not denied) |
deny_text | string | Human-readable denial explanation (null if not denied) |
suggested_provider_name | string | Provider name from evidence if it differs from the submitted name |
Recommendation Values
| Value | Description |
|---|---|
approve | The claim is recommended for approval. The evidence supports the claim. |
deny | The claim is recommended for denial. The evidence does not support the claim. |
needs_review | The claim requires manual review. The automated system could not make a confident determination. |
not_needed | Adjudication is not needed for this claim type. |
request_more_information | Additional information or evidence is needed before a determination can be made. |
Parsed Evidence
The eventPayload includes parsed evidence in four arrays:
| Field | Description |
|---|---|
receipts | Purchase receipts with merchant, line items, and eligibility per item |
medical_invoices | Medical invoices/EOBs with service-level charges, insurance payments, and patient responsibility |
dependent_care_invoices | Dependent care invoices with charges, payments, and DCFSA eligibility |
statement_of_accounts | Provider account statements with ledger entries |
Handling the Event
def handle_adjudication_complete(event_payload):
recommendation = event_payload["adjudication_results"]["silver_recommendation"]
claim_number = event_payload["claim_number"]
if recommendation == "approve":
# Process approval — initiate reimbursement
amount_cents = event_payload["adjudication_results"]["out_of_pocket_total"]
process_approval(claim_number, amount_cents)
elif recommendation == "deny":
# Handle denial — notify relevant parties
deny_reason = event_payload["adjudication_results"]["deny_text"]
process_denial(claim_number, deny_reason)
elif recommendation == "needs_review":
# Queue for manual review
queue_for_review(claim_number, event_payload)
elif recommendation == "request_more_information":
# Request additional evidence from the participant
request_more_info(claim_number, event_payload)