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. Must be set to X12_270_Request_005010X279A1.
ProcessingModeYesThe processing mode. Must be set to RealTime.
PayloadIDYesA unique identifier for the request. Must be a valid UUID.
TimeStampYesUTC time in ISO 8601 format, such as 2024-07-28T12:00:00Z.
SenderIDYesAn identifier for the transaction sender.
  • Can be up to 50 characters.
  • Set this to the value you plan to use in the eligibility check's ISA06 (Interchange Sender ID) element.
ReceiverIDYesAn identifier for the transaction receiver.
  • Can be up to 50 characters.
  • Set this to the value you plan to use in the eligibility check's ISA08 (Interchange Receiver ID) element.
CORERuleVersionYesThe CAQH CORE rule version. Must be set to 2.2.0.
PayloadYesThe X12 EDI 270 eligibility check wrapped in <![CDATA[ ... ]]>.

Response

The response is a SOAP message, and the structure is similar to the request. The Payload element typically contains the payer's X12 EDI 271 response. However, if you send a request that fails X12 EDI validation, it will contain a 999 Implementation Acknowledgment indicating the errors.

<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>2025-08-06T22:23:50Z</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.
  • X12_271_Response_005010X279A1 for requests that pass X12 EDI validation. A 271 can contain benefits information for the patient or AAA errors.
  • X12_999_Response_005010X231A1 for requests that fail X12 EDI validation.
  • CoreEnvelopeError when there's a Core-compliant error or Stedi couldn't parse the X12 EDI envelope.
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.
PayloadThe X12 EDI response.
  • 271 Eligibility Benefit Response for requests that pass X12 EDI validation. A 271 can contain benefits information for the patient or AAA errors.
  • 999 Implementation Acknowledgment when the request fails X12 EDI validation.
  • Empty when the request fails due to a CORE-compliant error or because Stedi couldn't parse the X12 EDI envelope.
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 when there is a SOAP fault. It includes a Code and Reason element that describe the error.

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.