Real-Time Eligibility Check SOAP

Submit real-time eligibility checks over SOAP using the CAQH CORE vC2.2.0 XML Schema

POST/2025-06-01/protocols/caqh-core

Real-time eligibility checks are ideal for in-person patient visits, telehealth appointments, and other scenarios where you need immediate information about a patient’s coverage. This endpoint is ideal when you must meet CAQH Core Connectivity Safe Harbor requirements or integrate with systems requiring CAQH CORE-compliant SOAP connectivity.

  1. Call this endpoint with a request in XML format. The XML must conform to the CAQH CORE vC2.2.0 XML Schema. The Payload element must contain a valid eligibility check in 270 X12 EDI format. We recommend reviewing the requirements for a basic eligibility request.
  2. Stedi validates your eligibility check and sends it to the payer.
  3. The endpoint returns a synchronous SOAP response in XML format. It contains the full 271 X12 EDI response from the payer containing the patient's eligibility and benefits information.

Visit Real-time eligibility checks for a full how-to guide and Troubleshooting for SOAP-specific errors and resolutions.

Request

The request payload must be XML that conforms to the CAQH CORE vC2.2.0 XML Schema. It consists of three main parts: the envelope, the header, and the body.

<soapenv:Envelope>
  <soapenv:Header>
    ...
  </soapenv:Header>
  <soapenv:Body>
      ...
  </soapenv:Body>
</soapenv:Envelope>

Envelope

The SOAP Envelope element wraps both the header and body. It defines the message structure according to the SOAP specification.

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">

Envelope must declare the following namespaces:

Namespace declarationRequiredDescription
xmlns:soapenvYesDeclares the XML namespace for the SOAP envelope. Must be set to http://www.w3.org/2003/05/soap-envelope.
xmlns:corYesDeclares the XML namespace for CAQH CORE rules. Must be set to http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd.

The Header element specifies the WS-Security namespace (wsse) and contains the required credentials for authentication.

<soapenv:Header>
  <wsse:Security soapenv:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <wsse:UsernameToken>
      <wsse:Username>STEDI-ACCOUNT-ID</wsse:Username>
      <wsse:Password>STEDI-API-KEY</wsse:Password>
    </wsse:UsernameToken>
  </wsse:Security>
</soapenv:Header>

Header must include the following elements:

ElementRequiredDescription
wsse:SecurityYesThe parent container for the security token. It includes:
  • The soapenv:mustUnderstand attribute, set to true.
  • The xmlns:wsse namespace declaration, set to http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
  • The xmlns:wsu namespace declaration, set to http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
wsse:UsernameYesSet this to your Stedi Account ID. You can find your account ID at the end of any Stedi portal URL. For example, in https://portal.stedi.com/app/healthcare/eligibility?account=1111-33333-55555, the account ID is 1111-33333-55555.
wsse:PasswordYesSet this to your API Key. You can create and manage API keys from the API Keys page in the Stedi portal.

Body

The Body element contains the request details, and it must conform to the CAQH CORE XML Schema vC2.2.0.

<soapenv:Body>
  <cor:COREEnvelopeRealTimeRequest>
    <PayloadType>X12_270_Request_005010X279A1</PayloadType>
    <ProcessingMode>RealTime</ProcessingMode>
    <PayloadID>YOUR-PAYLOAD-ID</PayloadID>
    <TimeStamp>2007-08-30T10:20:34.000Z</TimeStamp>
    <SenderID>SENDER-ID</SenderID>
    <ReceiverID>RECEIVER-ID</ReceiverID>
    <CORERuleVersion>2.2.0</CORERuleVersion>
    <Payload><![CDATA[ISA*00*          *00*          *ZZ*SENDER         *ZZ*RECEIVER       *231106*1406*^*00501*000000001*0*T*>~GS*HS*SENDERGS*RECEIVERGS*20231106*140631*000000001*X*005010X279A1~ST*270*1234*005010X279A1~BHT*0022*13*10001234*20240321*1319~HL*1**20*1~NM1*PR*2*ABCDE*****PI*11122~HL*2*1*21*1~NM1*1P*2*ACME HEALTH SERVICES*****SV*1999999984~HL*3*2*22*0~TRN*1*11122-12345*1234567890~NM1*IL*1*JANE*DOE****MI*123456789~DMG*D8*19000101~DTP*291*D8*20240108~EQ*MH~SE*13*1234~GE*1*000000001~IEA*1*000000001~]]></Payload>
  </cor:COREEnvelopeRealTimeRequest>
</soapenv:Body>

Body must include the following elements:

ElementRequiredDescription
PayloadTypeYesThe type of transaction you're sending. Must be set to X12_270_Request_005010X279A1.
ProcessingModeYesMust be set to RealTime.
PayloadIDYesA unique identifier for the request. Per the CORE specifications, this value should conform to ISO UUID standards with hexadecimal notation, generated using a combination of local timestamp (in milliseconds) as well as the hardware (MAC) address to ensure uniqueness. Stedi checks to ensure this is a valid UUID when you submit the request.
TimeStampYesUTC time in ISO 8601 format, such as 2024-07-28T12:00:00Z.
SenderIDYesAn identifier for the transaction sender. This can be up to 50 characters. We recommend using an Object Identifier (OID). You can obtain an OID from the HL7 OLID Registry or another trusted source. You could also submit a D-U-N-S Number if desired.
ReceiverIDYesAn identifier for the transaction receiver. This can be up to 50 characters. We recommend using an Object Identifier (OID). You can obtain an OID from the HL7 OLID Registry or another trusted source. You could also submit a D-U-N-S Number if desired.
CORERuleVersionYesThe CAQH CORE rule version. Must be 2.2.0.
PayloadYesThe X12 EDI 270 eligibility check wrapped in <![CDATA[ ... ]]>. This data must conform to 270 X12 EDI format. We recommend reviewing the requirements for a basic eligibility request.

Response

The response is a SOAP message in XML format. The response structure is similar to the request, with the Payload containing the payer's X12 EDI 271 response.

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
               xmlns:cor="http://www.caqh.org/SOAP/WSDL/CORERule2.2.0.xsd">
  <soapenv:Header/>
  <soapenv:Body>
    <cor:COREEnvelopeRealTimeResponse>
      <PayloadType>X12_271_Response_005010X279A1</PayloadType>
      <ProcessingMode>RealTime</ProcessingMode>
      <PayloadID>f81d4fae-7dec-11d0-a765-00a0c91e6b12</PayloadID>
      <TimeStamp>2024-07-28T12:01:22.000Z</TimeStamp>
      <SenderID>RECEIVER_ID</SenderID>
      <ReceiverID>STEDI</ReceiverID>
      <CORERuleVersion>2.2.0</CORERuleVersion>
      <Payload><![CDATA[ISA*00*          *00*          *ZZ*STEDI          *01*117151744      *111111*1234*^*00501*123456782*0*P*>~GS*HB*STEDI*117151744*20240326*111000*1*X*005010X279A1~ST*271*1001*005010X279A1~BHT*0022*11*01J2VZA127GH93JT74HJU*20240326*1514~HL*1**20*1~NM1*PR*2*ABCDE*****FI*111000123~PER*IC**TE*123456789*UR*website.company.com~HL*2*1*21*1~NM1*1P*2*ACME HEALTH SERVICES*****XX*1999999984~HL*3*2*22*0~NM1*IL*1*DOE*JANE*A***MI*123456789~REF*6P*123456789*ABCDE~REF*Q4*123456789~N3*1234 FIRST ST~N4*NEW YORK*WV*123451111~DMG*D8*19000101*F~INS*Y*18*001*25~DTP*356*D8*20220102~DTP*346*D8*20240101~DTP*347*D8*20241231~EB*1**30**Open Access Plus~MSG*Complete Care Management~EB*G*FAM*30***23*6000.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*FAM*30***23*500.00*****Y~MSG*Includes services provided by Client Specific Network~EB*G*IND*30***23*3000.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***23*250.00*****Y~MSG*Includes services provided by Client Specific Network~EB*C*FAM*30***23*15000.00*****N~EB*G*FAM*30***23*30000.00*****N~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*A*IND*30*****.10****Y~EB*C*IND*30***23*7500.00*****N~EB*G*IND*30***23*15000.00*****N~MSG*Deductible does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~EB*A*IND*30*****.50****N~EB*1**A7^BC^A8^A4^A5^A6^7^4^BB^22*********W~EB*C*IND*BC^A4^A6^4^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*22~EB*C*IND*A8****0.00****N*Y~MSG*Includes services provided by Client Specific Network~EB*C*IND*A4^A6^4^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*11~EB*C*IND*A4^A6^22****0.00****N*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*02~EB*B*IND*A4^A6^22***27*20.00****N*Y~III*ZZ*11~EB*A*IND*A4^A6^4^22*****.00***N*Y~III*ZZ*11~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Included For Specific Services~III*ZZ*02~EB*A*IND*A4^A6^22*****.00***N*Y~MSG*Included For Specific Services~III*ZZ*02~EB*A*IND*A4^A6^22*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*02~EB*A*IND*A4^A6^4^22*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*02~EB*B*IND*A4^A6^22***27*20.00****N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*A*IND*7*****.00***Y*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*11~EB*CB**7^BB********Y*Y~EB*C*IND*7****0.00****Y*Y~MSG*Includes services provided by Client Specific Network~III*ZZ*11~EB*A*IND*7*****.00***Y*Y~III*ZZ*11~EB*A*IND*4*****.00***N*Y~III*ZZ*22~EB*A*IND*4*****.00***N*Y~MSG*Services rendered thru Client Specific Network~III*ZZ*22~EB*C*IND*BB****0.00****Y*Y~MSG*Includes services provided by Client Specific Network~EB*1**MH~MSG* Provider is out of network based on NPI ID provided in request.~EB*G*FAM*30***29*5760.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*FAM*30***29*500.00*****Y~MSG*Includes services provided by Client Specific Network~EB*G*IND*30***29*2760.00*****Y~MSG*Includes services provided by Client Specific Network~MSG*Copay does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***29*250.00*****Y~MSG*Includes services provided by Client Specific Network~EB*C*FAM*30***29*15000.00*****N~EB*G*FAM*30***29*30000.00*****N~MSG*Coinsurance does apply to member's out-of-pocket maximum~MSG*Deductible does apply to member's out-of-pocket maximum~EB*C*IND*30***29*7500.00*****N~EB*G*IND*30***29*15000.00*****N~MSG*Deductible does apply to member's out-of-pocket maximum~MSG*Coinsurance does apply to member's out-of-pocket maximum~SE*119*1001~GE*1*1~IEA*1*123456782~]]></Payload>
      <ErrorCode>Success</ErrorCode>
      <ErrorMessage></ErrorMessage>
    </cor:COREEnvelopeRealTimeResponse>
  </soapenv:Body>
</soapenv:Envelope>

The response body includes the following elements:

ElementDescription
PayloadTypeThe type of the payload returned in the response. This is always X12_271_Response_005010X279A1.
ProcessingModeThe processing mode used for the request. This is always RealTime.
PayloadIDA unique identifier Stedi generated for the transaction. This won't be the same value you submitted as the PayloadID in the request.
TimeStampThe timestamp when the response was generated in ISO 8601 format.
SenderIDThe ID of the sender of the response. This is always the same as the ReceiverID in the request.
ReceiverIDThe ID of the receiver of the response. This is always the same as the SenderID in the request.
CORERuleVersionThe CAQH CORE rule version. This is always 2.2.0.
PayloadThis is the full X12 EDI 271 response. It contains the patient's benefits information.
ErrorCodeThe error code, if any, associated with the response. These errors typically indicate issues with the request body, such as missing or invalid elements. They can also indicate authentication issues and other processing errors. Learn more.
ErrorMessageA description of the error, if any.
FaultOnly included in the response when there is a SOAP fault. The Fault element includes a Code and Reason element that describe the error. Learn more.

HTTP status codes

Status CodeDescription
200 OKIndicates a successful request. Note that Stedi returns a 200 even when the payer returns AAA errors in the 271 response.
400 Bad RequestIndicates a SOAP fault, an error with the SOAP request body, or an X12 EDI validation error
401 UnauthorizedIndicates issues with the API key you provided
404 Not FoundIndicates an error with the endpoint URL you provided