Integration Handbook
Use the PMJAY integration handbook to plan roles, milestones, JWE protocol work, API sequences, and claim lifecycle requirements.
This page distils the large PMJAY handbook for HMIS teams. It keeps the process, roles, milestones, sequences, and mandatory requirements. It omits most payload tables.
Use the latest specification
The handbook references NRCeS FHIR R4 and NHCX protocol rules. Always compare with the latest NHA and NRCeS releases.
Reader roles
| Role | Use this page for |
|---|---|
| Product owner | Understand how PMJAY work changes inside a hospital. |
| Operations team | Run payer lookup, policy lookup, callbacks, and query work. |
| Engineering team | Build JWE, FHIR bundles, callbacks, parsers, and storage. |
| QA team | Test each workflow ID, callback, and error family. |
Business outcome
The HMIS must identify the payer, confirm a linked policy, and prepare cashless admission data. It must fetch InsurancePlan rules before benefit selection. It must submit preauthorisation, claim, reprocess, and payment acknowledgement transactions. It must receive payer callbacks asynchronously.
End-to-end lifecycle
flowchart TD
A[Payer discovery] --> B[Policy discovery]
B --> C[InsurancePlan fetch]
C --> D[Coverage eligibility]
D --> E[Biometric authentication]
E --> F[Preauthorisation]
F --> G{Payer decision}
G -->|Approved| H[Treatment and discharge]
G -->|Query| I[Query response]
I --> F
G -->|Rejected| J[Close or reprocess]
H --> K[Claim submission]
K --> L{Claim decision}
L -->|Approved| M[Payment notice]
L -->|Query| N[Claim query response]
N --> K
L -->|Rejected or partial| O[Reprocess if valid]
M --> P[Payment acknowledgement]
Cashless admission sequence
Discover the payer
Search NHCX payer participants and select the PMJAY payer for the case.
Discover policies
Call policy discovery with ABHA, member ID, or mobile number.
Resolve identifiers
Store payer ID, member ID, product ID, product name, and policy number.
Fetch plan rules
Call InsurancePlan for the selected payer, provider, and policy.
Verify eligibility
Call CoverageEligibility with the correct purpose for the clinical step.
Submit preauthorisation
Build a FHIR Claim bundle with Claim.use set to preauthorization.
Submit claim
Reuse the preauth data and set Claim.use to claim.
Track payment
Persist the UTR from PaymentReconciliation.paymentIdentifier.value.
Protocol requirements
All NHCX transaction payloads use JWE Compact Serialization.
Encrypt the FHIR Bundle before submission.
Decrypt each callback with the provider private key.
Return HTTP 202 within 30 seconds for each callback.
{
"alg": "RSA-OAEP-256",
"enc": "A256GCM",
"x-hcx-sender_code": "1000004446@hcx",
"x-hcx-recipient_code": "1518@hcx",
"x-hcx-api_call_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"x-hcx-request_id": "f0e1d2c3-b4a5-6978-0fed-cba987654321",
"x-hcx-correlation_id": "11223344-5566-7788-99aa-bbccddeeff00",
"x-hcx-workflow_id": "12",
"x-hcx-timestamp": "2026-03-19T11:46:34+05:30",
"x-hcx-status": "request.initiated",
"x-hcx-ben-abha-id": "91711234567890"
}| Requirement | Value |
|---|---|
| JWE algorithm | RSA-OAEP-256 |
| Content encryption | A256GCM |
| Bundle type | collection |
| Timestamp offset | +05:30 |
| Certificate cache | 24 hours |
| Callback result | HTTP 202 within 30 seconds |
Authentication and gateway
Request an NHCX token with client credentials.
Refresh the token before 1200 seconds.
Fetch the payer certificate before encryption.
Try X.509 import first.
Use SPKI as a fallback for short keys.
| Environment | Base URL |
|---|---|
| Sandbox | https://apisbx.abdm.gov.in/pmjay/sbxhcx |
| Production | https://apis.abdm.gov.in/pmjay/hcx |
Workflow IDs
| Provider action | Workflow ID |
|---|---|
| New preauthorisation | 12 |
| Preauthorisation resubmission | 121 |
| Preauthorisation cancellation | 122 |
| Preauthorisation query response | 19 |
| Enhancement request | 13 |
| Final claim | 15 |
| Claim resubmission | 16 |
| Claim query response | 151 |
| Payment acknowledgement | 17 |
| Reprocess request | 18 |
| Payer callback | Workflow ID |
|---|---|
| Preauthorisation approved | 21 |
| Preauthorisation rejected | 23 |
| Preauthorisation queried | 24 |
| Claim approved | 26 |
| Claim queried | 27 |
| Claim in process | 28 |
| Reprocess approved | 252 |
| Reprocess rejected | 253 |
| Reprocess queried | 254 |
| Payment initiated | 30 |
| Payment processed | 31 |
| Payment settled | 33 |
Core API sequences
InsurancePlan
Send a FHIR Task with code poll.
Include policyNumber, providerId, or both.
Receive an InsurancePlan bundle through /insuranceplan/on_request.
Store InsurancePlan, Organization, and Questionnaire entries.
CoverageEligibility
Send a CoverageEligibilityRequest with purpose validation, benefits, or auth-requirements.
Include Patient, Organization, Coverage, and PractitionerRole references.
Include items for auth-requirements.
Read inforce, benefit amounts, exclusions, and authorization support codes.
Preauthorisation
Send a Claim bundle with Claim.use preauthorization.
Include patient identity, coverage, provider, insurer, diagnosis, procedure, care team, items, and supporting information.
Use workflow ID 12 for a new request.
Use workflow ID 19 for a query response.
Use /task/submit with code cancel for cancellation.
Claim
Send a Claim bundle with Claim.use claim.
Reuse approved preauth data when possible.
Replace estimates with final bill amounts.
Add discharge summary, operative notes, diagnostics, and final bills.
PMJAY merges discharge and claim into one claim flow.
Reprocess
Use a Task resource with code reprocess.
Link it to the original claim number.
Add the reason code, evidence, and supporting documents.
Parse the nested ClaimResponse from the Task callback.
Payment
Receive a Task bundle with PaymentNotice and PaymentReconciliation.
Store the net amount, TDS amount, payment date, and UTR.
Acknowledge the notice with a Task output code paymentack.
Parser rules
| Callback pattern | HMIS action |
|---|---|
outcome=complete and reason approved | Mark approved and track settlement. |
outcome=partial and reason approved | Store reduced benefit and read processNote. |
outcome=partial and reason queried | Collect data and submit a query response. |
outcome=complete and reason cancelled | Mark rejected or cancelled. |
Do not treat outcome=complete as approval by itself.
Always check the adjudication reason code.
Supporting information codes
| Code | Use |
|---|---|
ADDD | Admission date and discharge date. |
EDT | Encounter date and time. |
DIS | Discharge summary. |
DIA | Diagnostic report. |
CD | Clinical document. |
INF | Additional claim information. |
POI | Proof of identity. |
POA | Proof of address. |
DOB | Proof of date of birth. |
Error families
| Family | Typical cause |
|---|---|
PAYR-14xx | InsurancePlan policy, renewal, or hospital authorization errors. |
PAYR-11xx | CoverageEligibility purpose, payer, beneficiary, or item errors. |
PAYR-12xx | Preauthorisation amount, package, document, token, or workflow errors. |
PAYR-13xx | Claim, discharge, LAMA, DAMA, and final document errors. |
NHCX-10xx | Gateway registration, duplicate, status, or protocol errors. |
PAYR-10xx | Bridge, FHIR validation, encryption, and payload errors. |
Communication lifecycle caveat
The handbook documents a Communication Request lifecycle. The PMJAY FRD says PMJAY claim queries do not use the Communication API. Use the preauth or claim query workflow for PMJAY claim queries. Use Communication Request only when the payer confirms a separate notification use case.
Sources
- pmjay-integration-handbook.md (NHCX sandbox portal)
