Skip to main content

Concepts

General Concepts

ConceptDescription
CustomerPlease contact Zuub Support for your customer credentials
OrganizationAn organization represents a logical grouping of Clinics
ClinicA clinic represents a real-world location where patients receive treatments. Data created for a particular clinic, such as payer credentials, is scoped to that clinic and inaccessible to other clinics.

Insurance Verification Concepts

Asynchronous Insurance Verification using Stored Credentials

When making asynchronous insurance verification requests using stored portal credentials (via clinicId and portalId with empty credentials array), the system validates the configuration before processing the request. Validation failures return a 422 error immediately.

Validation Checks

The following validations occur in order:

CheckError ConditionResolution
Parameters PresentMissing portalId or clinicId when credentials array is emptyProvide both clinicId and portalId in the request, or include inline credentials
Payer Network LookupPayer ID not found in networkVerify the payer ID exists using List Payer Network
Asynchronous SupportPayer does not support asynchronous insurance verificationCheck payer's feature map for insuranceVerificationAsynchronous support
Portal RequirementsPortal ID does not meet payer requirements, or portal requires no authenticationVerify portal is listed in payer's asynchronous requirements and requires authentication using List Payer Network
Credentials ExistNo credentials stored for the clinic/portal combinationCreate credentials using Create Payer Portal Credentials
Login Method MatchStored credentials' login method doesn't match portal requirementsUpdate credentials with correct login method (Native or SSO)
MFA Email RequiredPortal requires TwoFactorEmail but stored credentials missing MFA emailUpdate credentials to include MFA email address
MFA Phone RequiredPortal requires TwoFactorSms but stored credentials missing MFA phoneUpdate credentials to include MFA phone number

Important Notes

  • Validation occurs before processing: These checks happen during request validation, not during verification execution
  • Early failure detection: Configuration issues are caught immediately rather than during background processing
  • Authentication requirement: Only portals that require authentication (not authenticationMethods: None) can use stored credentials
  • Portal-specific requirements: Each portal may have different login method and MFA requirements based on the payer configuration

Multi-Factor Authentication (MFA)

Some payer portals require configuration of MFA for enhanced security.

Use the List Payer Network endpoint to discover which authentication methods each portal supports.

SMS-Based MFA

Verification codes sent via text message to a configured phone number

Email-Based MFA

Verification codes sent via email to a configured email address

TOTP (Time-Based One-Time Passwords) MFA

TOTP, more commonly known as "authenticator app" MFA, is an authentication method that generates time-sensitive verification codes. When a payer portal requires TOTP authentication:

  • Automatic Configuration: Zuub automatically configures TOTP for portals that require authenticator app-based MFA. No manual setup is required through the API.

Procedure Codes

The procedureCodes field controls which dental procedure codes are included in the insurance verification response.

  • Empty array ([]): Returns results for the standard procedure codes listed below.
  • Codes provided: Returns results for the standard procedure codes plus the additional codes specified in the request.

Standard Procedure Codes

D0120 D0210 D0220 D0272 D0274 D0330 D0367 D0431 D1110 D1120 D1206 D1208 D1351 D1510 D2390 D2393 D2630 D2643 D2740 D2750 D2790 D2929 D2930 D2932 D2933 D2934 D2950 D3120 D3220 D3230 D4341 D4355 D4381 D4910 D5110 D5670 D5751 D6010 D6240 D7140 D7210 D7230 D7240 D7953 D8010 D9222 D9223 D9230 D9248 D9310

Mismatches

Mismatches report on comparisons of certain insurance verification values between what was sent on the request and what was found on the result. The values that get compared are defined below and included in the response for both synchronous and asynchronous insurance verification requests.

path MismatchPath (string)
Possible values: [
/dependent/dateOfBirth,
/dependent/firstName,
/dependent/id,
/dependent/lastName,
/plan/group/id,
/subscriber/dateOfBirth,
/subscriber/firstName,
/subscriber/id,
/subscriber/lastName]

If the value is the same (case-insensitive) on both request and result for a path, no mismatch will be reported for the value. In any other case, a mismatch type will be reported for the value, which will match one of the following scenarios:

typedescription
BothPresentThe value was found on both request and result, but the values do not match.
RequestMissingThe value was found in the result, but not in the request; this cannot happen for subscriber values, as these are required in the request.
ResultMissingThe value was found in the request, but not in the result.

Retries

When an asynchronous insurance verification (IV) request fails due to a transient error, the retry system engages, using exponential backoff up to eight (8) attempts, increasing the time between retries up to a maximum of six hours. This system accounts for issues like payer portal outages and maintenance downtime. Rather than developing a retry system, check for updates using the same correlation ID and report errors to Zuub if requests are failing.

Each attempt will send a response to the webhook, regardless of the IV status being Succeeded or Failed. Each response will include retryStatus to indicate whether the IV request will be retried.

Transformers

The Zuub API normalizes data retrieved from third-party sources (e.g., a payer website or an API). We return a TransformerResult for many fields, which represents the result of a normalization attempt. As such, it may be one of three potential cases:

"Missing" Case

While expected, data could not be found. The JSON result is always the same:

{
"missing": true
}

"Transformed" Case

Data was found and transformed (normalized). For example, an ISO8601 result would be returned as follows:

{
"final": "2025-01-01T00:00:00.000Z",
"missing": false,
"transformed": true,
"original": ["Jan 1, 2025"]
}

where the original array contains the raw source data.

"Found but not Transformed" Case

Data was found but could not be transformed, or the system could not make sense of the data

{
"missing": false,
"transformed": false,
"original": ["some data"]
}

API Concepts

PATCH Requests

PATCH requests are used to update existing resources. The request body should contain only the properties that need to be updated. Any properties not included in the request body will remain unchanged.

For optional properties, a DELETE token can be passed in place of the value to delete the property. For example:

{
"propertyName": {
"token": "DELETE"
}
}

Webhook

Asynchronous insurance verification makes a webhook call upon completion, sending the verification result. A webhook URL is required and must be configured.

If you need a quick webhook solution, check out ngrok or Webhook Relay.