Skip to main content
Use this guide to test your integration with the Silna Benefits Check API in our QA environment. By setting specific member numbers on a patient plan, you can control exactly what the benefits check returns (for example, different insurance types, authorization requirements, referral requirements, visit limits, and rejection scenarios) without hitting real payors. In order to see authorization requirements, referral requirements, and visit limits, you also need to be using a benefits check template with these features enabled. Please reach out to your Silna contact for assistance if you need your template updated.
Note that this currently only works with our Aetna (018f7dfa-3e85-7f38-a0fe-71a9bf6a64c2) Payor in QA with codes 11 (Commercial), 16 (Inactive coverage) and 17 (Commercial, copay only). Other codes and payors are a work in progress!

How It Works

In our QA environment, every benefits check request is intercepted and returns a synthetic response based on the patient’s member number. No real payor calls are made. This lets you:
  • Test your integration against realistic benefit data for a Commercial plan
  • Simulate authorization requirements, referral requirements, and visit limits
  • Simulate a patient whose coverage is inactive (an INELIGIBLE benefits check)
The workflow is the same as production:
  1. Create a patient plan with a specially formatted member number
  2. Create a benefits check to trigger the check
  3. Get the benefits check to retrieve results
  4. Poll until status is COMPLETE

Member Number Format

The member number has three parts:
Examples:

Quick Start

Step 1 — Create a patient plan with a test member number

Set the member number on the patient plan to control what the benefits check returns. For a basic Commercial plan test:

Step 2: Trigger a benefits check

Use the Create Benefits Check API:
Response (201):

Step 3: Retrieve the results

Use the Get Benefits Check V2 API with the returned ID. Poll until status is COMPLETE. The benefits check typically processes within a few seconds.

Insurance Type Codes

The last two characters of the member number select the insurance type and plan data returned.

Fields returned

Code 11 populates these top-level response fields:
  • eligibility_status → ELIGIBLE
  • plan_start_date → 2025-01-01
  • plan_end_date → 2025-12-31
  • plan_type → Open Access MC
  • insurance_type → COMMERCIAL
And these specialty-level fields (inside specialty_fields): IN = in-network, OON = out-of-network

Reference number

Every simulated payor response includes a payor trace number, returned in the top-level reference field. It is a unique value in the format QA followed by 10 digits, for example "reference": "QA9321969724".

Requirement Flags

Include these keywords anywhere in the middle of the member number (between the A prefix and the two-digit insurance code) to toggle specific requirements. You can combine multiple flags in a single member number.

How flags appear in the V2 response

AUTH_REQ populates authorization_requirements:
REF_REQ populates referral_requirements:
VISIT_REQ populates visit_limits:
With visits_used available as a separate field on the response.

Combining flags

Flags can be combined freely. For example, AAUTH_REQREF_REQVISIT_REQ11 enables all three on a Commercial plan.

Testing with Procedure Groups

If your Create Benefits Check request includes procedure_group_ids, every copay and coinsurance value must apply to the CPT codes in those procedure groups. Code 11 returns both a copay and a coinsurance for the whole service type, so it can’t be attributed to your procedure groups and the benefits check will not complete automatically. Use insurance code 17 instead. It returns the same Commercial plan with a $0 copay and no coinsurance, and that copay applies to every CPT code in your procedure groups. Member Number: ATEST00000017
In the V2 response, copay_fields contains the $0 copay with your procedure groups’ CPT codes in modifier.treatment_codes, and coinsurance_fields is empty:
Because code 17 returns no coinsurance, your benefits check template must not require the coinsurance field. If it does, the benefits check will not complete automatically. Contact your Silna representative to update your QA template.

Ineligible Benefits Checks

Use insurance code 16 to simulate a patient whose coverage is no longer active. The payor response contains an inactive coverage segment and no active coverage, so the benefits check completes as INELIGIBLE. Member Number: A_INACTIVE_16 Ineligible benefits checks return the eligibility fields only; plan and specialty details such as specialty_fields, plan_type and insurance_type are not populated.
Requirement flags have no effect with code 16, because an inactive plan returns no benefits.

Out-of-Network Benefits Checks

network_status is not determined by the member number. Silna determines it from the contracts configured for your organization: a benefits check is IN_NETWORK when one of your contracts covers the payor, the plan and the patient’s service location, and OUT_OF_NETWORK when none does. Contracts apply to specific service locations, and a new service location is not added to your existing contracts. To test an out-of-network result in QA, create a service location that is not contracted with Aetna and run the benefits check for a patient at that location:
  1. Create a service location with Create Service Location. Use your provider’s provider_id from Get Providers and a provider_group_id from Get Provider Groups.
  1. Create a patient with provider_service_location_id set to the new service location’s id.
  2. Add an Aetna patient plan with an eligible member number, such as ATEST00000011, and create the benefits check.
The benefits check returns "network_status": "OUT_OF_NETWORK", and cost-share fields use the plan’s out-of-network values. For code 11, that is 40% coinsurance instead of the in-network 10%. You can also set network_status_override to OUT_OF_NETWORK on the Create Benefits Check request to see how your integration handles an out-of-network result.

Complete Example Responses

All examples below show V2 responses from Get Benefits Check V2.

Commercial plan with all requirement flags

Member Number: AAUTH_REQREF_REQVISIT_REQ11

Commercial plan with no flags

Member Number: ATEST00000011

Member Number Cheat Sheet

Copy-paste these member numbers for common test scenarios:

Eligible — Commercial (code 11)

Eligible — Commercial with procedure groups (code 17)

Ineligible — Inactive coverage (code 16)