Sandbox Mock Scenarios
Sandbox Mock Scenarios
Use this guide to test Sandbox mock responses for Real-Time Eligibility.
This page is intentionally about Sandbox-only fake data, not production behavior. The Sandbox returns canned responses for these mock scenarios. Do not send or use PHI in the Sandbox environment.
Important Sandbox Rules
- All Sandbox mock responses use fake data for developer code-path testing.
- Do not treat these responses as actual payer responses or payer-specific expectations.
- Mock responses can contain strange or divergent data. Names, dates, payer names, benefit details, eligibility outcomes, and linked Coverage Discovery results may not all line up the way real payer data would.
- The
x-optum-rcmelig-mock-scenariosheader must be an exact, case-sensitive string match. - Use this header only in Sandbox. If the header is sent to Production, the request is rejected with
403 Permission Denied. - Mock header scenario support requires the relevant Sandbox configuration to be completed before testing.
- The selected mock scenario controls the canned outcome.
Coverage Discovery Rules
Rows marked Yes in Coverage Discovery Link Header* can produce linked Coverage Discovery mock responses. Those linked responses appear only when Coverage Discovery is enabled for the product in Sandbox and the related mock-response configuration has been completed before testing.
Coverage Discovery responses are asynchronous. Expect any linked mock result through the configured async response path for the product, not in the initial real-time eligibility HTTP response.
With the standard Sandbox Coverage Discovery configuration, a single real-time mock scenario can return multiple linked Coverage Discovery record ids. Some linked CD record ids return success with eligible coverage. Linked CD record ids that do not have a configured mock response will most likely return failure with a transaction status of processing_error, ineligible, or another non-eligible status. The exact set depends on the product's Sandbox Coverage Discovery configuration.
The Request Data Needed column lists special request data required for the linked Coverage Discovery mock path. Blank means there is no known extra request-data requirement beyond using the exact scenario header and otherwise valid Sandbox request data.
Shared Header
Use the same mock scenario header for JSON and X12 real-time eligibility requests.
x-optum-rcmelig-mock-scenarios: <scenario-value>
In Sandbox, this header is required for the scenario rows in this guide.
JSON Real-Time
For normalized JSON real-time requests on POST /rcm/eligibility/v1, use the standard Sandbox request model and one of the JSON scenario header values below.
You can also use the standard IMN Sandbox mock scenarios for the JSON endpoint. When using those IMN mock scenarios, do not send x-optum-rcmelig-mock-scenarios; use the IMN-supported request values instead. Do not combine the IMN mock path with the header-based scenarios in this guide.
JSON Sandbox real-time requests can also use the Medical Network-supported values and tradingPartnerServiceId values documented here:
For the JSON endpoint, the payer id shown in the table is sent as tradingPartnerServiceId in the request. These Sandbox routing values are IMN payer ids. To review additional supported payers, use the Optum Customer Connect payer list.
JSON Scenario Headers
| Scenario Header Value | tradingPartnerServiceId | Outcome | Coverage Discovery Link Header* | Request Data Needed | Linked Coverage Discovery Mock Result | Notes* |
|---|---|---|---|---|---|---|
BCBS-TX-SB900-ELIGIBLE-HMO-DEPENDENT-SPOUSE-RTE-CANONICAL | SB900 | eligible spouse | Yes | Linked CD record id success with eligible Aetna Medicare Advantage HMO coverage. | Initial response is BCBS Texas HMO-style eligible content. | |
BCBS-TX-SB900-INELIGIBLE-DEPENDENT-CHILD-RTE-CANONICAL | SB900 | ineligible dependent child | Yes | Address state must be TX. | Linked CD record id success with eligible Texas Medicaid child coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Initial response is ineligible for BCBS Texas; linked responses can show whether other coverage is found. |
BCBS-TX-SB900-REJECTED-INVALID-PROVIDER-NPI-AAA43-RTE-CANONICAL | SB900 | rejected / invalid provider NPI | No | Use to test provider validation handling. | ||
UNSUPPORTEDPAYER-UNAMN-REJECTED-INVALID-PAYER-AAA79-RTE-CANONICAL | UNAMN | invalid payer / AAA79 rejection | No | Use to test unsupported-payer rejection handling. | ||
MEDICARE-CMSMED-ELIGIBLE-RTE-CANONICAL | CMSMED | eligible self | No | Medicare-style canned response. | ||
MEDICARE-CMSMED-PATIENT-NOT-FOUND-RTE-CANONICAL | CMSMED | patient not found | Yes | Birth date must be older than 65. | Linked CD record ids success with eligible Medicare HMO coverage and eligible Aetna HMO coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Use to test patient-unknown handling with linked Coverage Discovery results. |
AETNA-60054-ELIGIBLE-QMB-RTE-CANONICAL | 60054 | eligible self | Yes | Single linked CD record id success for the Medicare path. | Qualified Medicare Beneficiary (QMB) canned response. | |
CIGNA-CIGNA-ELIGIBLE-RTE-CANONICAL | CIGNA | eligible self | No | Commercial eligible case. | ||
TXMEDICAID-SKTX0-ELIGIBLE-RTE-CANONICAL | SKTX0 | eligible self | No | Medicaid-style canned response. | ||
AETNABETTERHEALTH-IL-26337-PENDING-DEPENDENT-SPOUSE-RTE-CANONICAL | 26337 | pending spouse | No | Use to test pending outcome handling. | ||
CIGNA-CIGNA-REJECTED-DEPENDENT-DUPLICATE-SUBSCRIBER-ID-AAA76-RTE-CANONICAL | CIGNA | duplicate subscriber / AAA76 rejection | No | Subscriber-level reject in normalized response. | ||
AETNA-60054-REJECTED-DEPENDENT-CHILD-SUBSCRIBER-NOT-FOUND-AAA75-RTE-CANONICAL | 60054 | subscriber not found / AAA75 rejection | No | Use to test child reject-path handling. | ||
AETNA-60054-PAYER-UNAVAILABLE-DEPENDENT-CHILD-AAA42-RTE-CANONICAL | 60054 | payer unavailable / AAA42 | No | Use to test temporary payer failure behavior. | ||
BCBS-VA-SB923-PAYER-UNAVAILABLE-DEPENDENT-SPOUSE-RTE-CANONICAL | SB923 | payer unavailable spouse | No | Spouse-specific temporary failure case. | ||
MEDICARE-XMEDX-ELIGIBLE-RTE-CANONICAL | XMEDX | eligible self | No | Additional Medicare-style eligible case. | ||
WELLCARE-WLLCR-CONDITIONAL-RTE-CANONICAL | WLLCR | conditional self | No | Use to test conditional result handling. | ||
BCBS-NJ-22099-INELIGIBLE-RTE-CANONICAL | 22099 | ineligible self | Yes | Linked CD record id success with eligible Cigna commercial coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Initial response is ineligible for BCBS NJ; linked responses can show whether other coverage is found. |
- Coverage Discovery link behavior and linked-response notes apply only when Coverage Discovery is enabled for the product in Sandbox.
X12 Real-Time
For X12 real-time requests on POST /rcm/eligibility/v1/real-time/x12, use one of the X12 scenario header values below.
The payer id in the request must align to the scenario. Send the payer id in the X12 NM1*PR*2 segment's PI element:
NM1*PR*2*<PAYER NAME>*****PI*<IMN PAYER ID>~
Example:
NM1*PR*2*TEXAS BLUE CROSS BLUE SHIELD*****PI*SB900~
Most submitted member and demographic details do not drive the returned subscriber, patient, or benefit content. The response remains canned. The payer id still must match the selected scenario.
X12 Scenario Headers
| Scenario Header Value | Send PI* Value | Outcome | Coverage Discovery Link Header* | Request Data Needed | Linked Coverage Discovery Mock Result | Notes* |
|---|---|---|---|---|---|---|
BCBS-TX-SB900-ELIGIBLE-HMO-DEPENDENT-SPOUSE-RTE-X12 | SB900 | eligible spouse | Yes | Linked CD record id success with eligible Aetna Medicare Advantage HMO coverage. | Initial response is BCBS Texas HMO-style eligible content. | |
BCBS-TX-SB900-INELIGIBLE-DEPENDENT-CHILD-RTE-X12 | SB900 | ineligible dependent child | Yes | Address state must be TX. | Linked CD record id success with eligible Texas Medicaid child coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Initial response is ineligible for BCBS Texas; linked responses can show whether other coverage is found. |
BCBS-TX-SB900-REJECTED-INVALID-PROVIDER-NPI-AAA43-RTE-X12 | SB900 | rejected / invalid provider NPI | No | Use to test provider validation handling. | ||
UNSUPPORTEDPAYER-UNAMN-REJECTED-INVALID-PAYER-AAA79-RTE-X12 | UNAMN | invalid payer / AAA79 rejection | No | Use to test unsupported-payer rejection handling. | ||
MEDICARE-CMSMED-ELIGIBLE-RTE-X12 | CMSMED | eligible self | No | Medicare-style canned response. | ||
MEDICARE-CMSMED-PATIENT-NOT-FOUND-RTE-X12 | CMSMED | patient not found | Yes | Birth date must be older than 65. | Linked CD record ids success with eligible Medicare HMO coverage and eligible Aetna HMO coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Use to test patient-unknown handling with linked Coverage Discovery results. |
AETNA-60054-ELIGIBLE-QMB-RTE-X12 | 60054 | eligible self | Yes | Single linked CD record id success for the Medicare path. | Qualified Medicare Beneficiary (QMB) canned response. | |
CIGNA-CIGNA-ELIGIBLE-RTE-X12 | CIGNA | eligible self | No | Commercial eligible case. | ||
TXMEDICAID-SKTX0-ELIGIBLE-RTE-X12 | SKTX0 | eligible self | No | Medicaid-style canned response. | ||
AETNABETTERHEALTH-IL-26337-PENDING-DEPENDENT-SPOUSE-RTE-X12 | 26337 | pending spouse | No | Use to test pending outcome handling. | ||
CIGNA-CIGNA-REJECTED-DEPENDENT-DUPLICATE-SUBSCRIBER-ID-AAA76-RTE-X12 | CIGNA | duplicate subscriber / AAA76 rejection | No | Subscriber-level reject in normalized response. | ||
AETNA-60054-REJECTED-DEPENDENT-CHILD-SUBSCRIBER-NOT-FOUND-AAA75-RTE-X12 | 60054 | subscriber not found / AAA75 rejection | No | Use to test child reject-path handling. | ||
AETNA-60054-PAYER-UNAVAILABLE-DEPENDENT-CHILD-AAA42-RTE-X12 | 60054 | payer unavailable / AAA42 | No | Use to test temporary payer failure behavior. | ||
BCBS-VA-SB923-PAYER-UNAVAILABLE-DEPENDENT-SPOUSE-RTE-X12 | SB923 | payer unavailable spouse | No | Spouse-specific temporary failure case. | ||
MEDICARE-XMEDX-ELIGIBLE-RTE-X12 | XMEDX | eligible self | No | Additional Medicare-style eligible case. | ||
WELLCARE-WLLCR-CONDITIONAL-RTE-X12 | WLLCR | conditional self | No | Use to test conditional result handling. | ||
BCBS-NJ-22099-INELIGIBLE-RTE-X12 | 22099 | ineligible self | Yes | Linked CD record id success with eligible Cigna commercial coverage; additional linked CD record ids without configured mocks may return failure with processing_error, ineligible, or another non-eligible transaction status. | Initial response is ineligible for BCBS NJ; linked responses can show whether other coverage is found. |
- Coverage Discovery link behavior and linked-response notes apply only when Coverage Discovery is enabled for the product in Sandbox.
Expected Member Story
Dependent and spouse scenarios return a fixed fake subscriber/patient story:
- Spouse scenarios return subscriber
JANEONE DOEONEand spouse/patientJOHNTWO DOEONE. - Dependent child scenarios return subscriber
JANEONE DOEONEand child/patientJOHNTWO DOEONE. - Self scenarios using
JANEONEreturn genderF. - Self scenarios using
JOHNONEreturn genderM.
These returned names, DOBs, and genders are canned fake data. They do not come from the request payload.
X12 Request Example
ISA*00* *01*SomePwd *ZZ*TPG00000 *ZZ*IMNDIRECT *260101*1201*^*00501*900000001*0*T*:~
GS*HS*SUBMITTER*RECEIVER*20260101*1201*900000001*X*005010X279A1~
ST*270*900000001*005010X279A1~
BHT*0022*13*123456789*20260101*120101~
HL*1**20*1~
NM1*PR*2*WELLCARE HEALTH PLANS*****PI*WLLCR~
HL*2*1*21*1~
NM1*1P*2*EXAMPLE PROVIDER*****XX*1760854442~
HL*3*2*22*0~
NM1*IL*1*ANYLAST*ANYFIRST****MI*ANYMEMBERID~
DMG*D8*19900101*F~
DTP*291*D8*20260101~
EQ*30~
SE*12*900000001~
GE*1*900000001~
IEA*1*900000001~
Send the X12 string in the JSON body:
{
"x12": "ISA*00*...~IEA*1*900000001~"
}
Updated 4 days ago