NAV Navbar
shell csharp java php

Introduction

pVerify's Real-Time Exchange System facilitates the secure exchange of health care Eligibility and related transactions, supporting one-to-one real-time transactions. One-to-one real-time transactions require customers to post a request, via REST to a designated URL address. Once a request is received by the Service an immediate response is sent for each request posted. Note that first a token must be generated using Oauth2.

The production URL is https://api.pverify.com

For example, the token call is: https://api.pverify.com/Token

The EligibilityInquiry call is: https://api.pverify.com/API/EligibilityInquiry

For quick and easy testing, see the testing page

Postman Documentation

Click here to view the Postman API Collection for Production Call

Click here to view the Postman API Collection for Test Call

For a very quick and simple integration, consider using our EasyEligibility Endpoint

Available Endpoints

Endpoint HTTP Method Description
/Token POST Obtain authorization to pVerify REST API.
/API/EligibilityInquiry POST Facilitate the secure exchange of health care Eligibility and related transactions.
/API/GetEligibilityResponse/{id} GET Get Eligibility result by unique transaction id.
/API/GetPayers GET Get pVerify payer list.
/API/GetPendingInquiries GET Get inquiries that are still being processed by pVerify back office.
/API/EstimateCalculation POST Returns fee estimate from Medicare given Zip code, CPT code, and other info.
/API/EasyEligibility POST Returns the Eligibility Status of a requested provider in just one step.
/API/CancelTransaction POST Cancels a back office request.
/API/SameOrSimilarInquiry POST Runs Same or Similar inquiry endpoint.
/API/GetSameOrSimilarResponse GET Gets the transaction result from SorS later using unique request id.

Testing

Token Request

URL: 
https://api.pverify.com/Test/Token

Headers:
Content-Type: application/x-www-form-urlencoded

Body:
username=pverify_demo&password=pverify@949&grant_type=password

Token Response

{
    "access_token": "SwK_jgpPz028ievs06Uch7tcl...",
    "token_type": "bearer",
    "expires_in": 28799
}

Testing can be done in a HIPAA compliant manner by using the below endpoints with one of a small list of payers. This combination of endpoint and payer will give a response with same format as a normal patient, but in a HIPAA complaint manner for testing purposes.

We have test methods designed to test interfaces, it has ‘canned’ (unchanged) data that is HIPAA compliant and only a few payers work with it. See the testing section below regarding these payers and the test API.

Test URL: https://api.pverify.com/Test

*Please see our Postman collection for all of the Test API calls. *

The fields of the EligibilityInquiry Response object are described on this page as well as on this PDF.

Endpoint HTTP Method Description
/Test/Token POST Obtain authorization to pVerify REST API
/Test/API/EligibilityInquiry POST Facilitate the secure exchange of healthcare Eligibility and related transactions
/Test/API/GetEligibilityResponse/{id} GET Get Eligibility result by unique transaction id
/Test/API/GetPayers GET Get pVerify Payers list

user / password: pverify_demo / pverify@949

It is very important to realize that only this user/password will work in the test environment

For testing, one of the following payer Ids must be used (as they are the only ones with the canned HIPAA compliant test result).

Payer list:

a ) AETNA (pVerify® Payer-Id 00001)

b ) United Healthcare (pVerify® Payer-Id 00192)

c ) Medicare Part A & B (pVerify® Payer-Id 00007)

d ) Ohio Medicaid (pVerify® Payer-Id 00165)

e ) BCBS of Texas (pVerify® Payer-Id 00220)For examples, click the endpoint of interest on the table of contents (left) and view the example on the right.

For example an example of token calls and requests, see the right panel:

Backoffice Payers

An important concept to understand with pVerify eligibility endpoints is the concept of a “backoffice” payer. To support 99% of available payers we need to connect to some payers via non-electronic means. These payers will not work with a real-time API with a immediate response expected.

EDI Payer Workflow

1) Generate Token

2) Call EligibilityInquiry to submit request to our queue and get elgRequestID

Backoffice Payer Workflow

1) Generate Token

2) Call EligibilityInquiry to submit request to our queue and get elgRequestID

3) After a period of 24 hours, call GetEligibilityResponse using elgRequestID above.

We have two methods available for back-office queue management:

1) GetPendingInquiries – this shows a list of your inquiries that are still in Pending state

2) CancelTransaction – to set the state to Cancel and remove it from our queue.

Client Libraries and Sample Code

To simplify authorization and access to the pVerify API, we provide sample code in C# and libraries in Java. These libraries offer full access to the pVerify API with a minimum of code.

C# Sample Code Java Sample Code

Security and Authorization

pVerify requires client authentication and authorization prior to allowing the request being processed. Authentication is a means used to verify your identity as a legitimate trading partner to pVerify. Authorization refers to those actions you are permitted to perform once you are authenticated.

pVerify allows access to the Real-time Exchange System through the use of a username and password. These must be requested from pVerify and are sent to you through a secure email system. The username and password are used for the Token call, while the Token and username are used for subsequent calls. Please see the demo video for an example.

Token

Token Sample Call

var request = new RestRequest("Token", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddHeader("content-type", 
"application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", 
"username=" + XXX + "&password=" + XXX + "&grant_type=password", ParameterType.RequestBody);
IRestResponse response = Execute(request);

if (response.StatusCode == HttpStatusCode.OK){
    dynamic token = JsonConvert.DeserializeObject(response.Content);
    string tkn = token.access_token;
    int time = Convert.ToInt32(token.expires_in);
}
//Using OKHttp Client


import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


public class GetToken {

    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
    RequestBody body = RequestBody.create(mediaType, "username=XXX&password=XXX&grant_type=password");

public String run(String url) throws IOException{
        Request request = new Request.Builder().url(url)
      .post(body)
      .addHeader("content-type", "application/x-www-form-urlencoded")
      .addHeader("cache-control", "no-cache")
      .build();
        try(Response response = client.newCall(request).execute()){
            return response.body().string();
        }
    }





public static void main(String[] args) throws IOException {
        GetToken token = new GetToken();
        String response = token.run("https://api.pverify.com/Test/Token");
        System.out.println(response);
    }
    }
 "https://api.pverify.com/Test/Token",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "username=XXX&password=XXX&grant_type=password",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "content-type: application/x-www-form-urlencoded",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X POST -H "Content-Type: text/plain" 
--data "username=XXX&password=XXX&grant_type=password" 
https://api.pverify.com/Test/Token

The first step to using the system is a call to the Token endpoint at /Token. It will return a token when you use in the subsequent calls.

Token Authorization Request

Header Description
Method POST
URL https://api.pverify.com/Token
Content-Type application/x-www-form-urlencoded
URL Params None
Body Description
Data Params “username=” + username + “&password=” + password + “&grant_type=password”

The /Token response includes the following fields:

Field Type Description
access_token {string} Authorization token unique to you which is used to verify your authorization for subsequent calls.
token_type {string} this is the token type which will be included before the access token in your subsequent method calls.
expires_in {int} This is the amount of time that your token is valid for (in seconds).

Eligibility API Endpoints

EligibilityInquiry

EligibilityInquiry Sample Call

Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
string username = new S
request.AddHeader("authorization", "Bearer " +  token);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-User-Name", [username]);
request.AddHeader("content-type", method == Method.GET ?
 "application/x-www-form-urlencoded" : "application/json");

request.AddBody(data);
IRestResponse response =  Execute(request);
//Using OKHttp Client


import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class EligibilityInquiry {
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("");
    RequestBody body = RequestBody.create(mediaType, "{    \"payerCode\": \"00192\",\r\n    \"provider\": {\r\n        \"firstName\": \"\",\r\n        \"middleName\": \"\",\r\n        \"lastName\": \" last name vaue\",\r\n        \"npi\": \"1234567890\",\r\n    },\r\n    \"subscriber\": {\r\n        \"firstName\": \"\",\r\n        \"middleName\": \"\",\r\n        \"lastName\": \"\",\r\n        \"memberID\": \"913619424\",\r\n    },\r\n    \"dependent\": {\r\n        \"patient\": {\r\n            \"firstName\": \"\",\r\n            \"middleName\": \"\",\r\n            \"lastName\": \"\",\r\n            \"dob\": \"07/04/1985\",\r\n            \"gender\": \"\",\r\n        },\r\n        \"relationWithSubscriber\": \"\"\r\n    },\r\n    \"isSubscriberPatient\": \"False\",\r\n    \"doS_StartDate\": \"01/24/2017\",\r\n    \"doS_EndDate\": \"01/24/2017\",\r\n    \"serviceCodes\": [\r\n        \"30\"\r\n    ],\r\n\r\n    \"requestSource\": \"RestAPI\"\r\n    \"IsHMOPlan\": true\r\n}\r\n");

    public String run(String url, String token) throws IOException{
        Request request = new Request.Builder()
      .url(url)
      .post(body)
      .addHeader("content-type", "application/json")
      .addHeader("authorization", "Bearer " + token)
      .addHeader("client-user-name", "XXX")
      .addHeader("cache-control", "no-cache")
      .build();
        try(Response response = client.newCall(request).execute();){
            return response.body().string();
        }
    }

    public static void main(String[] args) throws IOException {
        EligibilityInquiry inquiry = new EligibilityInquiry();
        String response = inquiry.run("https://api.pverify.com/API/EligibilityInquiry", "rfhPfKNUD1niSd34...");
        System.out.println(response);
    }
}
 "https://api.pverify.com/API/EligibilityInquiry",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n      \"payerCode\": \"00007\",\r\n      \"payerName\": \"Medicare\",\r\n\r\n   \"provider\": {\r\n        \"firstName\": \"\",\r\n        \"middleName\": \"\",\r\n        \"lastName\": \" test name\",\r\n        \"npi\": \"0000000000\"\r\n    \r\n   },\r\n      \"subscriber\": {\r\n        \"firstName\": \"John\",\r\n        \"dob\": \"01/01/1950\",\r\n        \"lastName\": \"Doe\",\r\n        \"memberID\": \"913619424\"\r\n    },\r\n    \"dependent\": null,\r\n        \r\n    \"isSubscriberPatient\": \"True\",\r\n    \"doS_StartDate\": \"01/24/2017\",\r\n    \"doS_EndDate\": \"01/24/2017\",\r\n    \"serviceCodes\": [\r\n        \"30\"\r\n    ],\r\n        \"requestSource\": \"RestAPI\",\r\n        \"IsHMOPlan\": true\r\n}",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXX",
    "cache-control: no-cache",
    "client-user-name: XXX",
    "content-type: application/json",
    "password: XXX",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X POST \
  https://api.pverify.com/API/EligibilityInquiry
EligibilityInquiry \
  -H 'authorization: Bearer ya9On51ZiIMBv...' \
  -H 'Client-User-Name:XXX' \
  -H 'content-type: application/json' \
  -d '{
      "payerCode": "00007",
      "payerName": "Medicare",

   "provider": {
        "firstName": "",
        "middleName": "",
        "lastName": " test name",
        "npi": "0000000000"

   },
      "subscriber": {
        "firstName": "",
        "dob": "01/01/1950",
        "lastName": "",
        "memberID": "1234567890"
    },
    "dependent": null,

    "isSubscriberPatient": "True",
    "doS_StartDate": "01/24/2017",
    "doS_EndDate": "01/24/2017",
    "serviceCodes": [
        "30"
    ],
        "requestSource": "RestAPI",
        "IsHMOPlan": true
}'

The EligibilityInquiry endpoint is the main method used get an eligibility report for a specific subscriber / dependent. This requires customers to post a request, via REST to a designated URL address. Once a request is received by the service an immediate response is sent for each request posted. To use this or any other method, you must first generate a token via the Token endpoint (see above Token method).

Payers return many formats for the eligibility report, which we parse to put into a JSON object format. Critical to the successful parsing of this information is the concept of our pVerify exclusive payer and client specific parsing logic, stored in NetworkSections in the response. See below for more information.

An example of a successful authorization response can be found in the code to the right. Please note you MUST use the pVerify payerCode. We also recommend passing the payer name.

Also note the body of the EligibilityInquiry is populated differently depending on if it is a subscriber query or a dependent query. See examples to the right.

EligibilityInquiry Request

Type Description
URL https://api.pverify.com/API/EligibilityInquiry
Method POST
Headers Description
Authorization: Token from Step 1 Above (if you are using Postman be sure to put Token Type ‘Bearer’ before the token.)
Client-User-Name: Username from step one
Content-Type: application/json
Body Description
Data Params See below and examples to the right

EligibilityInquiry Request Object

See subscriber and dependent examples to the right

EligibilityInquiry Request Fields

The EligibilityInquiry request includes the following fields:

Property Name Data Type Required Description
PayerCode String Yes pVerify Payer Code(ie Aetna 00001)
PayerName String No Payer Name
Provider.FirstName String No Provider First Name
Provider.LastName String Yes Provider Last Name
Provider.NPI String Yes 10-Digit NPI Value
Provider.PIN String No PIN
Provider.Taxonomy String No Taxonomy
Subscriber.FirstName String Conditional First Name of subscriber required for self inquiry
Subscriber.LastName String Conditional Last Name of subscriber required for self inquiry
Subscriber.MemberId String Yes Member Id required for both type inquiries(self,dependent)
Subscriber.DOB String Conditional Required for self-inquiry for better matching result. (Expected format: MM/dd/YYYY ie 01/01/2000)
Subscriber.SSN String No SSN of Subscriber
isSubscriberPatient String Yes True for self and False for Dependent Query
doS_StartDate String Yes Date of service start date (Expected format: MM/dd/YYYY ie 01/01/2000)
doS_EndDate String Yes Date of service end date (Expected format: MM/dd/YYYY ie 01/01/2000)
serviceCodes String Array Yes Services codes to run inquiry. If no service codes are passed then service code 30 will be assigned.
requestSource String Yes the request Source for ex: RestAPI
Dependent Object Conditional Required for dependent inquiry
includeTextResponse Boolean No Indicates whether to return the full text of the eligibility response
referenceId String Yes Patient MRN or account Number
location String Yes Location is the practice location. Note by setting this, you will lock the patient to one location, so that users that login in via our portal who are not authorized to see that location will not see the patient.

EligibilityInquiry Response Fields

The Eligibility response includes the following fields:

Name Type Description
elgRequestID int Identification of Eligibility Request
status String The eligibility status (active or inactive)
PayerName String Name of company satisfying the claim
payerCode String pVerify Payer Code
VerificationType String Specifies whether the patient verification was a Subscriber Verification or a Dependent Verification
isPayerBackOffice boolean False - Non-EDI payer. True - EDI Payer
verificationStatus String Status of the verification - Processed, pending, etc - See Table below
verificationMessage String Message from Backoffice
dos String Date of Service (Expected format: MM/dd/YYYY ie 01/01/2000)
Plan String Denotes the health care plan that the individual has
ExceptionNotes String Notes concerning exceptions to the above fields
AdditionalInformation String Any further information
ediErrorMessage String Error message from clearinghouse
OtherMessage String Processing message - ie Allowed, insufficient Funds
reportURL String URL for the full eligibility report (via pVerify portal)
doB_R String Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000)
eligibilityPeriod Object Eligibility dates
eligibilityPeriod.effectiveFromDate String Date the coverage is effective from
eligibilityPeriod.expiredOnDate String Date coverage expired
demographicInfo Object Demographics
demographicInfo.subscriber Object Subscriber demographics
demographicInfo.subscriber.address1 String Subscriber Address1
demographicInfo.subscriber.address2 String Subscriber Address2
demographicInfo.subscriber.city String Subscriber City
demographicInfo.subscriber.state String Subscriber state
demographicInfo.subscriber.zip String Subscriber zip code
demographicInfo.subscriber.doB_R String Subscriber Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000)
demographicInfo.subscriber.firstname String Subscriber first name
demographicInfo.subscriber.lastname_R String Subscriber last name
demographicInfo.subscriber.gender_R String Subscriber gender
demographicInfo.subscriber. identification Object Has member ID, group #, group name
demographicInfo.subscriber. identification.code String ie: "JOHN"
demographicInfo.subscriber. identification.type String ie: "FirstName"
demographicInfo.dependent Object Dependent Demographics (See subscriber for fields common to both)
relationship String Dependent relationship to client
networkSections Object Contains copay, deductible, etc. Based on custom result field settings (per payer)
networkSections.identifier String ie: "Deductible"
networkSections.label String ie: "Deductible"
networkSections.inNetworkParameters Object In network details = Deductible, outofPocket, Copay, Coins
networkSections.inNetworkParameters.key String ie: "Annual" (Annual Deductible)
networkSections.inNetworkParameters.value String ie: "600.00"
healthBenefitPlanCoverageServiceType Object From eligibility response from clearinghouse, will contain string data with copay, etc.
healthBenefitPlanCoverageServiceType. serviceTypeName String ie: "Health Benefit Plan Coverage"
healthBenefitPlanCoverageServiceType. serviceTypeSections Array List of service type info
healthBenefitPlanCoverageServiceType. serviceTypeSections.label String ie: "In Plan-Network Status"
healthBenefitPlanCoverageServiceType. serviceTypeSections.serviceParameters Object Service Parameters
healthBenefitPlanCoverageServiceType. serviceTypeSections.serviceParameters.key String Description of field ie Family Calendar Year Deductible
healthBenefitPlanCoverageServiceType. serviceTypeSections.serviceParameters.value String Value of field (note most payers are passing info via message, below) ie 1800.00
healthBenefitPlanCoverageServiceType. serviceTypeSections.serviceParameters.message String Description of value ie ("MED DENT,MAXIMUM SAVINGS")
healthBenefitPlanCoverageServiceType. serviceTypeSections.serviceParameters.otherInfo Array More details about the key - in key/value/message/otherInfo
serviceTypes Object Full list of returned service types from clearinghouse
serviceTypeName String ie Chiropractic
serviceTypeSection Object data regarding service type coverage in key/value/message/otherInfo
isHMOPlan boolean True of plan type is known to be HMO

EligibilityInquiry returns verificationStatus which is the status of the inquiry (not the status of the patient’s eligibility, which is the Status field) according to the table below:

Status Text Meaning
Processed We received a valid response from the clearinghouse
Rejected The transaction is rejected due to bad data (ie: missing memberId)
Pending+ The transaction is for back office payer and has been queued
Canceled The transaction has been canceled via API endpoint

+: Status Code 15 ‘Pending’ is returned when the payer is non-EDI -- pVerify uses manual process (phone/web-login) to get results or in some cases uses screen scraping technology to fetch the eligibility and benefits for such payers -- the delay in getting the results can be anywhere from 1 min. to 12 hours based on payer and agreed terms. These ‘Delayed Payers’ have prefix of either BO or PL…you can either automatically refresh results using the Unique ID every few hours or have a ‘Get Pending Results’ button on your eligibility screen.

Parsing the Key Eligibility Fields As the response object is complex, below is a guide to where the key eligibility fields are.

Demographics This is in demographicInfo.subscriber. For example, the first name of the subscriber is demographicInfo.subscriber.firstname

Copay/Coinsurance: The copay and coinsurance depends on the service type. For physician office visits, it may be in network section (see below for more information), and will be in the physician office visit area.

Network Selections JSON Example


{
    "identifier": "Specialist",
    "label": "Specialist",
    "inNetworkParameters": [
        {
            "key": "Co-Ins",
            "value": " 0",
            "message": null,
            "otherInfo": null
        },
        {
            "key": "Co-Pay",    
            "value": " 75.00",
            "message": null,
            "otherInfo": null
        }
    ],
    "outNetworkParameters": null
}

1) Network Sections: look for identifier == “Specialist” – the key is “Co-Pay” and the value returns the copay.

See the right panel for an example.

Service Types Example

 "serviceTypeName": "Professional (Physician) Visit - Office",
            "serviceTypeSections": [
                {
                    "label": "In Plan-Network Status",
                        {                   
                            "key": "Family Co-Payment ",                        
                            "value": "$25.00",                      
                            "message": [                        
                                "MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS",                            
                                "PRIMARY CARE VISIT OR EVALUATION IN OFFICE,COPAY NOT INCLUDED IN OOP",                            
                                "MAXIMUM SAVINGS,PATIENT'S PRIMARY CARE PHYSICIAN",                           
                                "GYN VISIT WHEN PERFORMED IN AN OFFICE,COPAY NOT INCLUDED IN OOP"                        
                            ],

2) In serviceTypes – look for “serviceTypeName”: “Professional (Physician) Visit – Office” label “In Plan-Network Status” serverParameters key: “Family Co-Payment” value “$75.00” And look at the message field to determine if specialist or not.

Similarly co-insurance is in “key”: “Family Co-Insurance ”

See the right panel for an example:

OOP Example

    "healthBenefitPlanCoverageServiceType": {
        "serviceTypeName": "Health Benefit Plan Coverage",
        "serviceTypeSections": [
            "label": "In Plan-Network Status",
            "serviceParameters": [
                {
                    "key": "Family Calendar Year Deductible ",                   
                    "value": "$1800.00",

Out of Pocket (OOP) and Deductible This is in network sections as well as healthBenefitPlanCoverageServiceType

See the right panel for an example:

Network Sections Example

 "networkSections": [
        {
            "identifier": "Deductible",
            "label": "Deductible",           
            "inNetworkParameters": [           
                {                
                    "key": "Annual",                    
                    "value": " 600.00",                    
                    "message": null,                    
                    "otherInfo": null
                },              
                {                
                    "key": "Remaining",                    
                    "value": " 600.00",                    
                    "message": null,                    
                    "otherInfo": null                
                }               
            ],          
            "outNetworkParameters": null        
        },       
        {        
            "identifier": "OutOfPocket",        
            "label": "Out-Of-Pocket",           
            "inNetworkParameters": [           
                {               
                    "key": "Maximum",                   
                    "value": " 2000.00",                    
                    "message": null,                    
                    "otherInfo": null                
                },              
                {                    
                    "key": "Remaining",                    
                    "value": " 2000.00",                    
                    "message": null,                   
                    "otherInfo": null               
                }
            ],                     
            "outNetworkParameters": null       
        },      
        {        
            "identifier": "Specialist",          
            "label": "Specialist",            
            "inNetworkParameters": [           
                {                  
                    "key": "Co-Ins",                   
                    "value": " 0",                   
                    "message": null,                   
                    "otherInfo": null              
                },              
                {                   
                    "key": "Co-Pay",                  
                    "value": " 75.00",                 
                    "message": null,                 
                    "otherInfo": null             
                }           
            ],                      
            "outNetworkParameters": null       
        }   
    ],

Network Sections pVerify uses a customized approach to attempt to return the key information in a easily identifiable format. This is used by use in our Dashboard, and can be consumed by our API customers as well. For this to work, we must map per payer the custom result fields, so it is not guaranteed that we will correctly parse the eligiblity data, or have any data. So view this as a best attempt at a value add.

There are four network sections and the example is below. Note it is possible for this object to be null if nothing was set up for that payer as discussed above.

You can parse any of the four sections (“Primary Care”, “Specialist”, “Deductible”, “OutOfPocket”) they all have the same object structure. Note in this case there is no “Primary Care” as this is designed for a specialist clinic.

Sample Eligibility Inquiry Response


 Example:
Code : 200
{
    "ElgRequestID": 584569207,
    "EDIErrorMessage": null,
    "VerificationStatus": "Processed",
    "VerificationMessage": null,
    "IsPayerBackOffice": "FALSE",
    "Status": "Active",
    "PayerName": "AETNA INC",
    "VerificationType": "Subscriber Verification",
    "DOS": "12/14/2017 - 12/14/2017",
    "Plan": "POS",
    "ExceptionNotes": "",
    "AdditionalInformation": "AETNA CHOICE POS II5000.004391.54",
    "OtherMessage": null,
    "ReportURL": "https://www.pverify.com/premium/elg_view.aspx?id=5WIxderty8X96vwFSW%2fg%3d%3d",
    "EligibilityPeriod": {
        "Label": null,
        "EffectiveFromDate": "01/01/2017",
        "ExpiredOnDate": ""
    },
    "DemographicInfo": {
        "Subscriber": {
            "Address1": "addresss 1",
            "Address2": "",
            "City": "ASTORIA",
            "CommunicationNumber": null,
            "Date": null,
            "DOB_R": "04/13/1982",
            "Firstname": "First Name",
            "Gender_R": "",
            "Identification": [
                {
                    "Code": " last Name",
                    "Type": "Lastname_R ",
                    "Name": null
                },
                {
                    "Code": " First name",
                    "Type": "Firstname ",
                    "Name": null
                },
                {
                    "Code": " Group Name",
                    "Type": "Group Name ",
                    "Name": null
                },
                {
                    "Code": " 12/14/2017",
                    "Type": "Service ",
                    "Name": null
                },
                {
                    "Code": "W1234567990",
                    "Type": "Member ID",
                    "Name": null
                }
            ],
            "Lastname_R": "Last Name",
            "Middlename": "A",
            "State": "NY",
            "Suffix": null,
            "Zip": "11105"
        },
        "Dependent": null
    },
    "NetworkSections": [
        {
            "Identifier": "Deductible",
            "Label": "Deductible",
            "InNetworkParameters": [
                {
                    "Key": "Annual",
                    "Value": "400.00",
                    "Message": null,
                    "OtherInfo": null
                },
                {
                    "Key": "Remaining",
                    "Value": "0.00",
                    "Message": null,
                    "OtherInfo": null
                }
            ],
            "OutNetworkParameters": [
                {
                    "Key": "Annual",
                    "Value": "800.00",
                    "Message": null,
                    "OtherInfo": null
                },
                {
                    "Key": "Remaining",
                    "Value": "400.00",
                    "Message": null,
                    "OtherInfo": null
                }
            ]
        }
    ],
    "HealthBenefitPlanCoverageServiceType": {
        "ServiceTypeName": "Health Benefit Plan Coverage",
        "ServiceTypeSections": [
            {
                "Label": "",
                "ServiceParameters": [
                    {
                        "Key": " Employee Only  Primary Care Provider POS  ",
                        "Value": null,
                        "Message": [],
                        "OtherInfo": null
                    },
                    {
                        "Key": "Employee Only    Active Coverage   POS   AETNA CHOICE POS II ",
                        "Value": null,
                        "Message": null,
                        "OtherInfo": null
                    },
                    {
                        "Key": " Employee Only Lifetime   Unlimited       ",
                        "Value": null,
                        "Message": null,
                        "OtherInfo": null
                    }
                ]
            },
            {
                "Label": "In Plan-Network Status",
                "ServiceParameters": [
                    {
                        "Key": "Individual Calendar Year Deductible   \n ",
                        "Value": "$400",
                        "Message": [
                            "  MED DENT,ALL OTHER IN-NETWORK PROVIDERS,DED INCLUDED IN OOP,DURABLE MEDICAL EQUIPMENT,OCCUPATIONAL THERAPY BY PHYSICIAN IN OFFICE,OCCUPATIONAL THERAPY BY PHYSICIAN,OCCUPATIONAL THERAPY BY NON PHYSICIAN,FACILITY PHYSICAL THERAPY\n ",
                            "  PHYSICAL THERAPY BY PHYSICIAN IN OFFICE,PHYSICAL THERAPY BY PHYSICIAN,PHYSICAL THERAPY BY NON PHYSICIAN\n"
                        ],
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual Remaining   Deductible       \n",
                        "Value": "$0",
                        "Message": null,
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual  Out of Pocket   \n ",
                        "Value": "$5000",
                        "Message": [
                            "  ALL OTHER IN-NETWORK PROVIDERS\n"
                        ],
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual Remaining   Out of Pocket       \n",
                        "Value": "$4391.54",
                        "Message": null,
                        "OtherInfo": null
                    }
                ]
            },
            {
                "Label": "Out of Plan-Network Status",
                "ServiceParameters": [
                    {
                        "Key": "Individual Calendar Year Deductible   \n ",
                        "Value": "$800",
                        "Message": [
                            "  MED DENT,DED INCLUDED IN OOP,DURABLE MEDICAL EQUIPMENT,OCCUPATIONAL THERAPY BY PHYSICIAN IN OFFICE,OCCUPATIONAL THERAPY BY PHYSICIAN,OCCUPATIONAL THERAPY BY NON PHYSICIAN,FACILITY PHYSICAL THERAPY,PHYSICAL THERAPY BY PHYSICIAN IN OFFICE\n ",
                            "  PHYSICAL THERAPY BY PHYSICIAN,PHYSICAL THERAPY BY NON PHYSICIAN\n"
                        ],
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual Remaining Deductible   \n ",
                        "Value": "$400",
                        "Message": [
                            "  MED DENT\n"
                        ],
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual    Out of Pocket       \n",
                        "Value": "$10000",
                        "Message": null,
                        "OtherInfo": null
                    },
                    {
                        "Key": "Individual Remaining   Out of Pocket       \n",
                        "Value": "$9391.54",
                        "Message": null,
                        "OtherInfo": null
                    }
                ]
            },
            {
                "Label": "Applies to In & Out Plan-Network Status",
                "ServiceParameters": []
            }
        ]
    },
    "ServicesTypes": [
        {
            "ServiceTypeName": "Others",
            "ServiceTypeSections": [
                {
                    "Label": "",
                    "ServiceParameters": [
                        {
                            "Key": "  Other Source of Data  ",
                            "Value": null,
                            "Message": null,
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "[Payer]",
                    "ServiceParameters": [
                        {
                            "Key": "   Name            ",
                            "Value": "   AETNA ",
                            "Message": null,
                            "OtherInfo": null
                        },
                        {
                            "Key": "   Address         ",
                            "Value": " some value",
                            "Message": null,
                            "OtherInfo": null
                        },
                        {
                            "Key": "City-State-Zip  ",
                            "Value": " EL PASO, TX, 79998",
                            "Message": null,
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "In Plan-Network Status",
                    "ServiceParameters": []
                },
                {
                    "Label": "Out of Plan-Network Status",
                    "ServiceParameters": []
                },
                {
                    "Label": "Applies to In & Out Plan-Network Status",
                    "ServiceParameters": []
                }
            ]
        },
        {
            "ServiceTypeName": "Durable Medical Equipment Purchase",
            "ServiceTypeSections": [
                {
                    "Label": "",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Active Coverage      AETNA CHOICE POS II ",
                            "Value": null,
                            "Message": null,
                            "OtherInfo": null
                        },
                        {
                            "Key": "Employee Only  Limitations   ",
                            "Value": null,
                            "Message": [
                                " *  PLAN INCLUDES NAP"
                            ],
                            "OtherInfo": null
                        },
                        {
                            "Key": "Employee Only  Limitations   ",
                            "Value": null,
                            "Message": [
                                " *  PLAN INCLUDES NAP"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "In Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "0%",
                            "Message": [
                                "  ALL OTHER IN-NETWORK PROVIDERS\n"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "Out of Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "20%",
                            "Message": [
                                "  COINS APPLIES TO OUT OF POCKET\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                },
                {
                    "Label": "Applies to In & Out Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Co-Payment       \n",
                            "Value": "$0",
                            "Message": null,
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "ServiceTypeName": "Occupational Therapy",
            "ServiceTypeSections": [
                {
                    "Label": "",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Active Coverage      AETNA CHOICE POS II ",
                            "Value": null,
                            "Message": null,
                            "OtherInfo": null
                        },
                        {
                            "Key": "Employee Only  Limitations   ",
                            "Value": null,
                            "Message": [
                                " *  PLAN INCLUDES NAP"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "In Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "0%",
                            "Message": [
                                "  ALL OTHER IN-NETWORK PROVIDERS\n"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "Out of Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "20%",
                            "Message": [
                                "  COINS APPLIES TO OUT OF POCKET\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                },
                {
                    "Label": "Applies to In & Out Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Co-Payment       \n",
                            "Value": "$0",
                            "Message": null,
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        },
                        {
                            "Key": "Individual Years Limitations   Visits\n ",
                            "Value": "60",
                            "Message": [
                                "  SHRT TRM REHAB,OCCUPATIONAL THERAPY BY PHYSICIAN,OCCUPATIONAL THERAPY BY NON PHYSICIAN\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Quantity qualifier",
                                    "Value": "Visits",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        },
                        {
                            "Key": "Individual Remaining Limitations   Visits\n ",
                            "Value": "42",
                            "Message": [
                                "  SHRT TRM REHAB\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Quantity qualifier",
                                    "Value": "Visits",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "ServiceTypeName": "Physical Therapy",
            "ServiceTypeSections": [
                {
                    "Label": "",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Active Coverage      AETNA CHOICE POS II ",
                            "Value": null,
                            "Message": null,
                            "OtherInfo": null
                        },
                        {
                            "Key": "Employee Only  Limitations   ",
                            "Value": null,
                            "Message": [
                                " *  PLAN INCLUDES NAP"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "In Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "0%",
                            "Message": [
                                "  ALL OTHER IN-NETWORK PROVIDERS\n"
                            ],
                            "OtherInfo": null
                        }
                    ]
                },
                {
                    "Label": "Out of Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only  Co-Insurance   \n ",
                            "Value": "20%",
                            "Message": [
                                "  COINS APPLIES TO OUT OF POCKET\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                },
                {
                    "Label": "Applies to In & Out Plan-Network Status",
                    "ServiceParameters": [
                        {
                            "Key": "Employee Only    Co-Payment       \n",
                            "Value": "$0",
                            "Message": null,
                            "OtherInfo": [
                                {
                                    "Key": "Authorization/Certification Required",
                                    "Value": "Yes",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        },
                        {
                            "Key": "Individual Years Limitations   Visits\n ",
                            "Value": "60",
                            "Message": [
                                "  SHRT TRM REHAB,PHYSICAL THERAPY BY PHYSICIAN,PHYSICAL THERAPY BY NON PHYSICIAN\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Quantity qualifier",
                                    "Value": "Visits",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        },
                        {
                            "Key": "Individual Remaining Limitations   Visits\n ",
                            "Value": "42",
                            "Message": [
                                "  SHRT TRM REHAB\n"
                            ],
                            "OtherInfo": [
                                {
                                    "Key": "Quantity qualifier",
                                    "Value": "Visits",
                                    "Message": null,
                                    "OtherInfo": null
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "CustomFields": null,
    "ExtensionProperties": {
        "PayerCode": "00001",
        "PayerID": 0,
        "ResultReport": null,
        "VerifiedOn": null,
        "VerifiedBy": null
    }
}


GetEligibilityResponse

GetEligibilityResponse Sample Call

Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
string username = new S
request.AddHeader("authorization", "Bearer " +  token);
request.AddHeader("Client-User-Name", username);
request.AddHeader("content-type", method == Method.GET ?
 "application/x-www-form-urlencoded" : "application/json");
IRestResponse response =  Execute(request);
//Using OKHttp Client


import java.io.IOException;



import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class GetEligibility {

OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

public String run(String url, String urlCode, String token ) throws IOException{
Request request = new Request.Builder()
  .url(url.concat(urlCode))
  .get()
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Bearer " + token)
  .addHeader("client-user-name", "XXX")
  .addHeader("cache-control", "no-cache")
  .build();

    try(Response response = client.newCall(request).execute()){
        return response.body().string();
    }

}


public static void main(String[] args) throws IOException {
    GetEligibility eligibility = new GetEligibility();
    String response = eligibility.run("https://api.pverify.com/API/GetEligibilityResponse/", "2428", "rfhPfKNUD1niSd34T...");
    System.out.println(response);
}
}
  "https://api.pverify.com/API/GetEligibilityResponse/2428",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXX",
    "content-type: application/json",
    "grant_type: password",
    "password: XXX",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X GET \
  https://api.pverify.com/API/GetEligibilityResponse/2428 \
  -H 'authorization: Bearer XXX' \
  -H 'Client-User-Name:XXX' \

Get Eligibility Response Sample Response (For full response see EligibilityInquiry)

{
  {
      "payerCode": "00007",
      "payerName": "Medicare", 

      "provider": {
        "firstName": "",
        "middleName": "",
        "lastName": " test name",
        "npi": "0000000000"
   },

      "subscriber": { 
        "firstName": "",    
        "dob": "01/01/1950",    
        "lastName": "", 
        "memberID": "1234567890"
    },
    "dependent": null, 
    "isSubscriberPatient": "True",
    "doS_StartDate": "01/24/2017",
    "doS_EndDate": "01/24/2017",
    "serviceCodes": [
        "30"
    ],
        "requestSource": "RestAPI"
        "IsHMOPlan": true,
        "IncludeTextResponse": true,
        "referenceId": "1234",       
        "Location": "Nowhere"
}

This GET method is similar to the Eligibility Inquiry except that it is a GET call with the transaction ID as a parameter. This call allows you to get the eligibility verification result by a unique transaction ID. It is designed for use with non-EDI (back office) payers which require human intervention and are thus time delayed in the response.

GetEligibilityResponse Request

Key Value
URL https://api.pverify.com/API/GetEligibilityResponse/{id}
Method GET
Headers Description
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username

A successful GetEligibilityResponse call will have the same format as the Eligibility Inquiry response (above). In the case of backoffice payer, many sections will be null – including Demographic Info and HealthBenefitPlanCoverageServiceType. The important data returned (copay, coins, etc) is typically in the NetworkSections object, and IsPayerBackOffice is always true. In the case of electronic payers the response object (format and data) is identical to that of EligibilityInquiry.

GetPayers

GetPayers Sample Call

Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
request.AddHeader("authorization", "Bearer " +  token);
request.AddHeader("Client-User-Name", username);
request.AddHeader("content-type", method == Method.GET ?
 "application/x-www-form-urlencoded" : "application/json");
IRestResponse response =  Execute(request);
//Using OKHttp Client

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


public class GetPayers {
    OkHttpClient client = new OkHttpClient();
    MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");


public String run(String url, String token) throws IOException {
    Request request = new Request.Builder()
      .url(url)
      .get()
      .addHeader("content-type", "application/json")
      .addHeader("authorization", "Bearer " + token)
      .addHeader("client-user-name", "XXX")
      .addHeader("cache-control", "no-cache")
      .build();
    try(Response response = client.newCall(request).execute()){
        return response.body().string();
    }

}
    public static void main(String[] args) throws IOException {
        GetPayers payers = new GetPayers();
        String response = payers.run("https://api.pverify.com/API/GetPayers", "<token>");
        System.out.println(response);
    }
}
  "https://api.pverify.com/API/GetPayers",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXX",
    "content-type: application/json",
    "grant_type: password",
    "password: XXX",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X GET \
  https://api.pverify.com/API/GetPayers \
  -H 'authorization: Bearer ya9On51ZiIMBvf3pDB_F3oMxjfFkX8t9vfSn' \
  -H 'Client-User-Name:XXX' \

Get Payers Sample Response


[
  {
  "PayerName": "AARP (A United HealthCare Insurance Company)",  
  "PayerCode": "00283"  
  },
  {
  "PayerName": "Absolute Total Care",
  "PayerCode": "00344"  
  },
  {
  "PayerName": "ACCESS IPA",  
  "PayerCode": "BO00018"  
  },
  {
  "PayerName": "Access Medicare",
  "PayerCode": "000903"
  }, (etc)
]

Returns the list of current pVerify payers (pVerify payer code & pVerify Payer Name). Note backoffice (non-EDI) payers are denoted with a payer code prefix of BO. For example BO00018

GetPayers Request

Key Value
URL https://api.pverify.com/API/GetPayers
Method GET
Headers Description
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username
Content-Type application/json

GetPendingInquiries

GetPendingInquiries Sample Call: https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018

var client = new RestClient("https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Client-User-Name", "XXX");
request.AddHeader("Authorization", "Bearer XXX");
IRestResponse response = client.Execute(request);
//Using OKHttp Client

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


public class GetPendingInquiries {
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
    private String pending;
    private StringToJsonPending json = new StringToJsonPending();


public void setJson(String url, String token) throws IOException {
    Request request = new Request.Builder()
              .url(url)
              .get()
              .addHeader("content-type", "application/x-www-form-urlencoded")
              .addHeader("authorization", "Bearer " + token)
              .addHeader("client-user-name", "XXX")
              .addHeader("cache-control", "no-cache")
              .build();
    try(Response response = client.newCall(request).execute()){
        pending = response.body().string();
        json.convert(pending);


    }

}
}
   "https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXX",
    "content-type: application/json",
    "grant_type: password",
    "password: XXX",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X GET \
  'https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018' \
  -H 'authorization: Bearer XXX' \
  -H 'cache-control: no-cache' \
  -H 'client-user-name: XXX' \

Get Pending Inquiries Sample Response

[
    {
        "Status": "Pending",
        "TransactionId": 2356,
        "MemberId": "25xxxxxxxxxxx",
        "PatientFirstName": "Sxxxxxxxx",
        "PatientLastName": "Axxxxxxxxxxx",
        "PatientDOB": null,
        "ProviderLastName": null,
        "ProviderNPI": null,
        "IsDependentVerification": false,
        "DOS_StartDate": "2018-01-01T00:00:00"
    },
    {
        "Status": "Pending",
        "TransactionId": 2358,
        "MemberId": "27xxxxxxxxxxx",
        "PatientFirstName": "Sxxxxxxxx",
        "PatientLastName": "Axxxxxxxxxxx",
        "PatientDOB": null,
        "ProviderLastName": null,
        "ProviderNPI": null,
        "IsDependentVerification": false,
        "DOS_StartDate": "2018-01-01T00:00:00"
    },

]

This endpoint will retrieve a list of pending transactions. It is intended to show which back office eligibility transactions are not complete yet, given the DOS as an input.

GetPendingInquiries Request

Key Value
URL https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018
Method GET
Headers Description
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username
URL Parameters Date of Service (format is MM-DD-YYYY)

Estimate Calculation

EstimateCalculation Sample Call: https://api.pverify.com/api/EstimateCalculation

var client = new RestClient("https://api.pverify.com/API/CancelTransaction");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-User-Name", "[name]");
request.AddHeader("Authorization", "Bearer XXX");
request.AddParameter("undefined", "{\r\n\"transactionId\":12345455\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client

package estimateCalculation;

import java.io.IOException;


import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;

public class EstimateCalculation {
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\r\n \"zipCode\": \"27713\",\r\n    \"cptCodes\":[\"10061\",\"0191T\", \"33300\"],\r\n    \"coPay\":\"20\",\r\n    \"coinsPercentage\":\"30\",\r\n    \"deductibleRemaining\":\"40\",\r\n    \"outofPocketRemaining\": \"\",\r\n    \"isCopayIncludeInDeductible\":false,\r\n    \"isSecondryStatusActive\":false\r\n}");

    private String estimate;
    private StringToJsonEstimate json = new StringToJsonEstimate();


public void setJson(String url, String token) throws IOException {
    Request request = new Request.Builder()
              .url(url)
              .post(body)
              .addHeader("authorization", "Bearer " + token)
              .addHeader("content-type", "application/json")

              .addHeader("client-user-name", "XXX") // Test credentials unavailable for EstimateCalculation
              .build();
    try(Response response = client.newCall(request).execute()){
        System.out.println(response.toString());
        estimate = response.body().string();
        json.convert(estimate);


    }   
}


public StringToJsonEstimate getJson() {
    return json;

}
}

"https://api.pverify.com/api/EstimateCalculation",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n \"zipCode\": \"27713\",\r\n    \"cptCodes\":[\"10061\",\"0191T\", \"33300\"],\r\n    \"coPay\":\"20\",\r\n    \"coinsPercentage\":\"30\",\r\n    \"deductibleRemaining\":\"40\",\r\n    \"outofPocketRemaining\": \"\",\r\n    \"isCopayIncludeInDeductible\":false,\r\n    \"isSecondryStatusActive\":false\r\n}",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXXX",
    "content-type: application/json",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X POST \
  https://api.pverify.com/api/EstimateCalculation \
  -H 'authorization: Bearer XXX' \
  -H 'client-user-name: XXX' \
  -H 'content-type: application/json' \
  -d '{
 "zipCode": "27713",
    "cptCodes":["10061","0191T", "33300"],
    "coPay":"20",
    "coinsPercentage":"30",
    "deductibleRemaining":"40",
    "outofPocketRemaining": "",
    "isCopayIncludeInDeductible":false,
    "isSecondryStatusActive":false
}'

Estimate Calculation Sample Response


{
    "patientResponsibility": "$809.41",
    "copay": "$20",
    "coInsPercentage": "30.00%",
    "coInsAmount": "$769.41",
    "estimatedAllowable": "$2,604.70",
    "deductibleRemaining": "$40",
    "outOfPocketRemaining": "",
    "amountPayable": "$809.41",
    "selectedCPTs": [
        {
            "procedure": "10061-Drainage of skin abscess",
            "allowedAmount": "$200.58",
            "unit": 1
        },
        {
            "procedure": "0191T-Insert ant segment drain int",
            "allowedAmount": "$0.00",
            "unit": 1
        },
        {
            "procedure": "33300-Repair of heart wound",
            "allowedAmount": "$2,404.12",
            "unit": 1
        }
    ],
    "zipCode": "27713",
    "apiResponseCode": 0,
    "apiResponseMessage": "Calculated Successfully."
}

This POST call will get an estimated price from CMS (Medicare) non-facility price index. In order for you to use this, we must add the estimator service (which is free) to your account. Additionally, for the Zip code, use 0 for national pricing, and you can send an array of CPT codes per the Postman example. Please note, due to the nature of the EstimateCalculation call, no test credentials are available.

EstimateCalculation Request

Key Value
URL https://api.pverify.com/api/EstimateCalculation
Method POST
Headers Description
Client-User-Name Your pVerify username
Content-Type application/json
Body Description
Data Parameters See fields to the right

EstimateCalculation Fields

Field Type Description
ZipCode String Zip code of your location. Use 0 for national pricing.
cptCodes String Array of CPT codes needed for estimate. If there is a modifier include it as a dash. For example, 93024-TC would be the cardiac drug stress test technical component.
coPay String Dollar amount of patient copay.
coinsPercentage String In percent, coinsurance
deductibleRemaining String Dollar amount of deductible remaining
outofPocketRemaining String Out of pocket remaining- if this is blank we will not include this in the calculation.
isCopayIncludeInDeductible Boolean Add copay to coinsurance or not.
isSecondaryStatusActive Boolean If patient has secondary insurance- if this is true then patient responsibility is zero.

EstimateCalculation Response

Field Description
patientResponsibility The amount the patient owes.
copay Patient copay.
coInsPercentage Coinsurance percentage.
coInsAmount Coinsurance Amount.
estimatedAllowable THe sum of the charges (note: not all charges are approved by CMS)
deductibleRemainging Amount of deductible remaining.+
outOfPocketRemaining Amount remaining for out of pocket.++

+The deductible must be met before insurance applies. For example, if the deductible remaining is 1000, then the patient will have to pay out of pocket $1000 for next procedure as long as the procedure amount > $1000. ++This is typically a high number. Once it reaches zero, the patient responsibility is zero. It is designed for catastrophic coverage ie: major surgery or chemotherapy.

EasyEligibility

EasyEligibility Sample Call: https://api.pverify.com/api/EasyEligibility

var client = new RestClient("https://api.pverify.com/api/EasyEligibility");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-Password", "[password]");
request.AddHeader("Client-User-Name", "[username]");
request.AddParameter("undefined", "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"[name]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"[dob]\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"[name]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"12/26/1976\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}");
Request request = new Request.Builder()
  .url("https://api.pverify.com/api/EasyEligibility")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("client-user-name", "XXX")
  .addHeader("client-password", "XXX")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

 "https://api.pverify.com/api/EasyEligibility",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"[name]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"12/26/1976\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXXX",
    "password: XXXX",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl --location --request POST "https://api.pverify.com/api/EasyEligibility" \
  --header "Client-User-Name: [name]" \
  --header "Client-Password: [password]" \
  --header "Content-Type: application/json" \
  --data "{
    \"payerCode\": \"00001\",
    \"provider_lastname\":\"[lastname]\", 
    \"provider_npi\": \"[npi]\",
     \"memberID\": \"[ID]\",
     \"patient_DOB\":\"[DOB]\",

     \"date_Of_Service\": \"08/08/2018\",
     \"serviceCodes\":\"30\"

}"

Easy Eligibility Sample Response

{
    "transactionStatus": "Processed",
    "transactionMessage": "",
    "ediErrorMessage": null,
    "eligibilityStatus": "Active",
    "eligibilityResult": "[textual eligibility report]",
   "referenceId": null,
    "location": "[location]"
}

This POST call will return the Eligibility Status of a requested provider. The EasyEligibility endpoint is designed to facilitate easy access to Eligibility Information in just one step.

Key Value
URL api.pverify.com/api/EasyEligibility
Method POST
Header Description
Client-User-Name Your pVerify username
Client-Password Your pVerify password
Body See the data parameters to the right

EasyEligibility Fields

Field Type Description
PayerCode String pVerify payer code
Provider_LastName String Provider Last Name
Provider_npi String NPI number of provider
MemberID String Payer Member ID
patient_DOB String Patient date of birth (Expected format: MM/dd/YYYY ie 01/01/2000)
date_Of_Service String Date of Service (Expected format: MM/dd/YYYY ie 01/01/2000)
serviceCodes String pVerify service code

EasyEligibility Response

Field Type Description
transactionStatus String Status of transaction
transactionMessage String Additional information regarding transaction
ediErrorMessage String Error message
EligibilityStatus String Status of eligibility
EligibilityResult String Final information regarding eligibility
referenceId String Patient MRN or account Number
location String Location is the practice location. Note by setting this, you will lock the patient to one location, so that users that login in via our portal who are not authorized to see that location will not see the patient.

CancelTransaction

Cancel Transaction Sample Call: https://api.pverify.com/api/CancelTransaction

var client = new RestClient("https://api.pverify.com/api/EasyEligibility");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-User-Name", "XXX");
request.AddParameter("undefined", "{\r\n    \"payerCode\": \"[code]\",\r\n    \"provider_lastname\":\"[lastname]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[ID]\",\r\n     \"patient_DOB\":\"[DOB]\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client

import java.io.IOException;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;


public class CancelTransaction {
    OkHttpClient client = new OkHttpClient();

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\r\n\t\"transactionId\":15049658\r\n}\r\n");
    private String cancel;
    private StringToJsonCancel json = new StringToJsonCancel();


public void setJson(String url, String token) throws IOException {
    Request request = new Request.Builder()
              .url(url)
              .post(body)
              .addHeader("content-type", "application/json")
              .addHeader("authorization", "Bearer " + token)
              .addHeader("client-user-name", "pverify_demo")
              .addHeader("cache-control", "no-cache")
              .build();
    try(Response response = client.newCall(request).execute()){
        cancel = response.body().string();
        json.convert(cancel);


    }

}
}
  "https://api.pverify.com/API/CancelTransaction",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n\t\"transactionId\":15049658\r\n}\r\n",
  CURLOPT_HTTPHEADER => array(
    "authorization: Bearer XXXX",
    "cache-control: no-cache",
    "client-user-name: XXX",
    "content-type: application/json",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl -X POST \
  https://api.pverify.com/API/CancelTransaction \
  -H 'authorization: Bearer eTPLo2g3Ejr6adjYu...' \
  -H 'cache-control: no-cache' \
  -H 'client-user-name: XXX' \
  -H 'content-type: application/json' \
  -d '{
    "transactionId":15049658
}'

This POST call will cancel a transaction. It is intended for use with back office transactions, to cancel a transaction that is not able to be completed in time for the patient’s visit.

CancelTransaction Request

Key Value
URL https://api.pverify.com/API/CancelTransaction
Method POST
Headers Description
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username
Body Description
Data Parameters { "transactionId": 12345455 }

Same Or Similar API Endpoints

pVerify provides the ability to get DME Medicare Same/Similar checks. Due to its asynchronous nature, for same/similar checks you will need to either use a two method approach or use a callback url.

1. Two method approach.

This workflow is:

1) Get Token via Token call,

2) Call SameOrSimilarInquiry and pass the token along with demographic information.

3) Call GetSameOrSimilarResponse/{requestId} later to get the results and pass the token.

Note : Same Token can be used in subsequent inquiries.

2. Callback approach

1) Get Token via Token call,

2) Call SameOrSimilarInquiry and pass the token along with demographic information, and the callback url. We will then POST the result object (object is same as GetSameOrSimilarResponse) to that endpoint. The endpoint must be listening for POST calls.

The JSON Viewer URL

Credentials To use these calls, you will need to set up an account and be given a username & password. Please contact the pVerify team for this information.

Run Same or Similar Inquiry

Same or Similar Inquiry Data Parameters


{
    "memberId": "xxx",
    "patientFirstName": "xxx",
    "patientLastName": "xxx",
    "patientDOB": "01/01/1900",
    "patientStateCode": "NJ",
    "hcpcsCodes": "L3960",

    "dosStart": "03/19/2019",
    "dosEnd": "03/19/2019",
    "requestSource": "API",
    "location": "location Name"
    "callBackUrl": "http://mysite.com:9007/"
}
Key Value
URL https://api.pverify.com/API/SameOrSimilarInquiry
Method POST
Headers Description
Content-Type application/json
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username
Body Description
Data Parameters See Right Panel

SameOrSimilarInquiry Sample Call

var client = new RestClient("https://api.pverify.com/API/SameOrSimilarInquiry");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer XXX");
request.AddHeader("Client-User-Name", "XXX");
IRestResponse response = client.Execute(request);
//Using OKHttp Client

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
Request request = new Request.Builder()
  .url("https://api.pverify.com/API/SameOrSimilarInquiry")
  .addHeader("Client-User-Name", "XXX")
  .addHeader("Authorization", "Bearer XXX")
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.pverify.com/API/SameOrSimilarInquiry",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer XXX",
    "Client-User-Name: XXX",
    "Content-Type: application/json",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl --request POST \
  --url https://api.pverify.com/API/SameOrSimilarInquiry \
  --header 'Authorization: Bearer XXX' \
  --header 'Client-User-Name: XXX' \
  --header 'Content-Type: application/json' \
  --header 'cache-control: no-cache' \

SameOrSimilarInquiry Response


{
    "requestId": 135938,
    "isDataError": false,
    "errorMessage": null,
    "claims": null,
    "message": null,
    "status": "Pending",
    "apiResponseCode": 3,
    "apiResponseMessage": "Inquiry has been received and assigned Request Id is 135938.\r\nExpected Response Time : 1 mins.\r\nPlease search for the results using Request Id in the search page after the expected response time is over. "
}

Same or Similar Request Object Fields

Field Description Example
MemberID Medicare ID 1234
patientFirstName Patient First Name John
patientLastName Patient Last Name Doe
patientDOB Patient DOB in MM/DD/YYYY format 01/01/2000
patientStateCode Patient State NJ
hcpcsCodes HCPCS list L3960, L3961
dosStart Date of service in MM/DD/YYYY format 04/01/2019
dosEnd Date of service in MM/DD/YYYY format 04/01/2019
requestSource "API", API
location Your location New York
callBackUrl Place to send POST URL for result object http://10.0.0.1:9007/

Same or Similar Response Object

Field Description Example
requestId Request ID - use this in GetSameOrSimilarResponse 1234
isDataError Is Error false
errorMessage Error Message null
claims For future use null
message For future use null
status pVerify Status (Pending) Pending
apiResponseCode pVerify API response code null
apiResponseMessage pVerify message Inquiry has been received and assigned Request Id is 206154.

Response JSON Processing Steps

Step 1: Check the value of the API Response Code property. If the API Response Code is 3 (Pending) then the request is pending and the Request ID can be extracted.

Step 2: Save the data

Note: The Same or Similar API always returns API response code as 3 (pending)

Get Same or Similar Response Using Unique Request ID

GetSameOrSimilarResponse Sample Call

var client = new RestClient("https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer XXX");
request.AddHeader("Client-User-Name", "XXX");
request.AddParameter("undefined", "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"XXX\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"DOB\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"[name]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"[dob]\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}");
Request request = new Request.Builder()
  .url("https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}")
  .get(body)
  .addHeader("Client-User-Name", "XXX")
  .addHeader("Authorization", "Bearer XXX")
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "{\r\n    \"payerCode\": \"00001\",\r\n    \"provider_lastname\":\"[id]\", \r\n    \"provider_npi\": \"[npi]\",\r\n     \"memberID\": \"[id]\",\r\n     \"patient_DOB\":\"[DOB]\",\r\n    \r\n     \"date_Of_Service\": \"08/08/2018\",\r\n     \"serviceCodes\":\"30\"\r\n    \r\n}",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer XXX",
    "Client-User-Name: XXX",
    "Content-Type: application/json",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl --request GET \
  --url 'https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}' \
  --header 'Authorization: Bearer XXX' \
  --header 'Client-User-Name: XXX' \
  --header 'Content-Type: application/json' \
  --header 'cache-control: no-cache' \
  --data '{\r\n    "payerCode": "00001",\r\n    "provider_lastname":"[name]", \r\n    "provider_npi": "[npi]",\r\n     "memberID": "[id]",\r\n     "patient_DOB":"[DOB]",\r\n    \r\n     "date_Of_Service": "08/08/2018",\r\n     "serviceCodes":"30"\r\n    \r\n}'

GetSameOrSimilarResponse Sample Response

{
    "RequestId": 135938,
    "Processed": true,
    "IsDataError": false,
    "ErrorMessage": null,
    "ClaimsCount": 13,
    "Claims": [
        {
            "Id": 0,
            "HCPCS": "L3916 RTKX",
            "DOSStart": "01/10/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "LANDMARK MEDICAL LLC",
            "Phone": "727-240-4132",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 4,
            "CategoryName": "Wrist Brace"
        },
        {
            "Id": 0,
            "HCPCS": "L3170 LTKX",
            "DOSStart": "01/07/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ALPHAMED LLC",
            "Phone": "954-753-7576",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 11,
            "CategoryName": "Foot Orthotics(Repositioning) "
        },
        {
            "Id": 0,
            "HCPCS": "L2397 RTKX",
            "DOSStart": "01/07/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "INDIAN SHORES BRACING INC",
            "Phone": "727-330-7507",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 10,
            "CategoryName": "Others"
        },
        {
            "Id": 0,
            "HCPCS": "L2397 LTKX",
            "DOSStart": "01/07/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "INDIAN SHORES BRACING INC",
            "Phone": "727-330-7507",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 10,
            "CategoryName": "Others"
        },
        {
            "Id": 0,
            "HCPCS": "L1971 LTKX",
            "DOSStart": "01/07/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ALPHAMED LLC",
            "Phone": "954-753-7576",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 6,
            "CategoryName": "Ankle/Knee/Foot Brace"
        },
        {
            "Id": 0,
            "HCPCS": "L3916 LTRTKX",
            "DOSStart": "01/02/2019",
            "DOSEnd": null,
            "Unit": "2",
            "SupplierName": "HEALTHTREE, LLC",
            "Phone": "954-990-5359",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 4,
            "CategoryName": "Wrist Brace"
        },
        {
            "Id": 0,
            "HCPCS": "L2397 KXRT",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 10,
            "CategoryName": "Others"
        },
        {
            "Id": 0,
            "HCPCS": "L2397 KXLT",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 10,
            "CategoryName": "Others"
        },
        {
            "Id": 0,
            "HCPCS": "L1851 KXRT",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 1,
            "CategoryName": "Knee Braces"
        },
        {
            "Id": 0,
            "HCPCS": "L1851 KXLT",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 1,
            "CategoryName": "Knee Braces"
        },
        {
            "Id": 0,
            "HCPCS": "L0650",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 2,
            "CategoryName": "Back Braces"
        },
        {
            "Id": 0,
            "HCPCS": "L3960 LTKX",
            "DOSStart": "01/10/2019",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "LANDMARK MEDICAL LLC",
            "Phone": "727-240-4132",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 3,
            "CategoryName": "Shoulder Brace"
        },
        {
            "Id": 0,
            "HCPCS": "L3960 KXRT",
            "DOSStart": "12/28/2018",
            "DOSEnd": null,
            "Unit": "1",
            "SupplierName": "ADMIRAL MEDICAL SUPPLY INC.",
            "Phone": "317-296-7730",
            "Status": "Allowed",
            "Message": null,
            "SameOrSimilarRequestId": 135938,
            "CreatedOn": "0001-01-01T00:00:00",
            "CategoryId": 3,
            "CategoryName": "Shoulder Brace"
        }
    ],
    "Message": null,
    "Status": "Processed",
    "APIResponseCode": 0,
    "APIResponseMessage": "Processed"
}

This call is used to get the transaction result later using a unique request ID.

Note: We purge this data after 90 days

Key Value
URL https://api.pverify.com/API/GetSameOrSimilarResponse/125
Method GET
Headers Description
Content-Type application/json
Authorization Authorization token from above preceded by the String "Bearer"
Client-User-Name Your pVerify username

Notes 1. Always check for apiResponseCode property value before processing 2. If APIResponseCode is zero then look for ErrorMessage and Claims to process response

A successful GetSameOrSimilarResponse will have the same format as the SameOrSimilarInquiry response.

Response Object for GetSameOrSimilarResponse

Field Description Example
RequestId Request ID 132342
Processed Processed Status (true if complete) true
isDataError Is Error false
ErrorMessage Error Message null
ClaimsCount Number of Claims 13
Claims.id Claim Id 0
Claims.HCPCs HCPCS code L3196 RTKX
Claims.DOSStart DOS 01/10/2019
Claims.DOSEnd DOS null
Claims.Unit Units 1
Claims.SupplierName DME supplier name LANDMARK MEDICAL
Claims.Phone DME Phone 727-240-4132
Claims.Status CMS claim status Allowed
Claims.Message CMS claim message null
Claims.SameOrSimilarRequestId Request ID 13593
Claims.CreatedOn Create DTTM 0001-01-01T00:00:00
Claims.CategoryId Category ID 4
Claims.CategoryName Category name Wrist Brace

API Response Codes

APIResponseCode Description
0 Processed
1 Rejected
2 NoFunds (Insufficient Account Balance)
3 Pending (Pending need to get response later)
4 InvalidRequest (Required Data Missing)
5 InvalidFormat (data fields / data format is wrong)
6 LocationError (Location is not configured)

Field Descriptions

Same or Similar Requests

Property Name Data Type Usage Description
MemberId String Required Patient's member ID (HICN/MBI).
PatientFirstName String Required Patient First Name.
PatientLastName String Required Patient Last Name.
PatientDOB String Required Patient DOB (Expected format: MM/dd/YYYY ie 01/01/2000).
PatientStateCode String Required Patient State Code ex: AL.
HCPCSCodes String Required HCPCS -L codes only. Multiple codes can be sent by separating with a comma (,).
DOSStart String Optional Date of service start date (Expected format: MM/dd/YYYY ie 01/01/2000). Default value is 5 years before date to current date.
DOSEnd String Optional Date of service end date (Expected format: MM/dd/YYYY ie 01/01/2000). Default value is current date (Today's date).
Location String Optional Location name and the default is client user's location or client's location.
RequestSource String Optional The request source (ie: API).
callBackUrl String Optional Allows one to submit the POST Body to a URL when the S/S process is complete.

Same or Similar Response Details

Object Types in Response



public class ResponseBase
    {   
        public int APIResponseCode { get; set; }        
        public string APIResponseMessage { get; set; }      
    }   
public  class SameOrSimilarResponse :ResponseBase
    {           
        public long RequestId { get; set; }             
        public bool IsDataError { get; set; }              
        public string ErrorMessage { get; set; }                
        public List<Claim> Claims { get; set; }             
        public string Message { get; set; }            
        public string Status { get; set; }      
    }   
public class Claim
   {    
       public string DOSEnd { get; set; }            
       public string DOSStart { get; set; }         
       public string HCPCS { get; set; }             
       public string Message { get; set; }           
       public string Phone { get; set; }            
       public string Status { get; set; }           
       public string SupplierName { get; set; }         
       public string Unit { get; set; }
    }   
Property Name Data Type Description
RequestId long Same or Similar Request ID.
apiResponseCode int API transaction response code. Please see apiResponseCodes section.
apiResponseMessage String API transaction response message.
isDataError boolean True - when invalid patient details (Invalid HICN/MBI or Invalid DOB); False - for all valid requests.
Claims List Contains claim status info.
Message String Contains messages other than error messages (No claims found).
Status String Status of transaction.
Claim.HCPCS String Contains HCPCS -L code.
Claim.Status String Contains Claim & Code status –Allowed ,Denied or No Claims. For Invalid data request it is Error.
Claim.DOSStart String Claim & Code Date of service start date. It is empty for Error or for No Claims. (Expected format: MM/dd/YYYY ie 01/01/2000)
Claim.DOSEnd String Claim & Code Date of service end date. It is empty for Jurisdiction A and D inquiries. It is empty for Error or for No Claims. (Expected format: MM/dd/YYYY ie 01/01/2000)
Claim.Unit String No of units.
Claim.SupplierName String Contains supplier name for all allowed or denied requests. Empty for no claims & error.
Claim.phone String Contains supplier phone number for all allowed or denied. Empty for no claims & error.
Claim.Message String Contains notes or error message. Ex: No claims found. Or invalid HICN or DOB

Claim Status API Endpoints

pVerify has several RESTful APIs to give Claim Status information, given subscriber or dependent demographics. It would be a two step work flow.

ClaimStatus payer work flow

1) Generate Token

2) Call ClaimStatusInquiry to submit a request to our queue to get the Claim Status

In order to run a Claim Status call, it is first necessary to generate a token using the authorization call

ClaimStatusInquiry

ClaimStatusInquiry Request Object for Self

{
    "payerCode": "00001",   
    "providerLastName": "last name ",
    "providerNPI": "1234xxxxxxx",  
    "payerClaimNumber": "Axxx23243xxxxxxxx",
    "chargeAmount": 50,
    "serviceStartDate": "MM/dd/yyyy",
    "serviceEndDate": " MM/dd/yyyy ",
    "subscriber": {
        "lastName": "last name XXXXXX",
        "dob": "MM/dd/yyyy",        
        "memberID": "AxCXXXXXXXXXXXXXXX"       
    },
    "isPatientDependent": false
}

ClaimStatusInquiry Request Object for Dependents

{
    "payerCode": "00001",   
    "providerLastName": "last name ",
    "providerNPI": "1234xxxxxxx",  
    "payerClaimNumber": "Axxx23243xxxxxxxx",
    "chargeAmount": 50,
    "serviceStartDate": "MM/dd/yyyy",
    "serviceEndDate": " MM/dd/yyyy ",
    "subscriber": {
        "lastName": "last name XXXXXX",
        "memberID": "AxCXXXXXXXXXXXXXXX"       
    },
    "isPatientDependent": true,
   "dependent":{
        "lastName": "last name XXXXXX",

        "dob": "MM/dd/yyyy",        
}
}

ClaimStatusInquiry Sample Call

var client = new RestClient("https://api.pverify.com/API/ClaimStatusInquiry/");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer XXX");
request.AddHeader("Client-User-Name", "XXX");
request.AddParameter("undefined", "{\r\n    \"payerCode\": \"00001\",   \r\n    \"providerLastName\": \"last name \",\r\n    \"providerNPI\": \"1234xxxxxxx\",  \r\n    \"payerClaimNumber\": \"Axxx23243xxxxxxxx\",\r\n    \"chargeAmount\": 50,\r\n    \"serviceStartDate\": \"MM/dd/yyyy\",\r\n    \"serviceEndDate\": \" MM/dd/yyyy \",\r\n    \"subscriber\": {\r\n        \"lastName\": \"last name XXXXXX\",\r\n        \"dob\": \"MM/dd/yyyy\",        \r\n        \"memberID\": \"AxCXXXXXXXXXXXXXXX\"       \r\n    },\r\n    \"isPatientDependent\": false\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n    \"payerCode\": \"00001\",   \r\n    \"providerLastName\": \"last name \",\r\n    \"providerNPI\": \"1234xxxxxxx\",  \r\n    \"payerClaimNumber\": \"Axxx23243xxxxxxxx\",\r\n    \"chargeAmount\": 50,\r\n    \"serviceStartDate\": \"MM/dd/yyyy\",\r\n    \"serviceEndDate\": \" MM/dd/yyyy \",\r\n    \"subscriber\": {\r\n        \"lastName\": \"last name XXXXXX\",\r\n        \"dob\": \"MM/dd/yyyy\",        \r\n        \"memberID\": \"AxCXXXXXXXXXXXXXXX\"       \r\n    },\r\n    \"isPatientDependent\": false\r\n}");
Request request = new Request.Builder()
  .url("https://api.pverify.com/API/ClaimStatusInquiry/")
  .post(body)
  .addHeader("Client-User-Name", "XXX")
  .addHeader("Authorization", "Bearer XXX")
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.pverify.com/API/ClaimStatusInquiry/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n    \"payerCode\": \"00001\",   \r\n    \"providerLastName\": \"last name \",\r\n    \"providerNPI\": \"1234xxxxxxx\",  \r\n    \"payerClaimNumber\": \"Axxx23243xxxxxxxx\",\r\n    \"chargeAmount\": 50,\r\n    \"serviceStartDate\": \"MM/dd/yyyy\",\r\n    \"serviceEndDate\": \" MM/dd/yyyy \",\r\n    \"subscriber\": {\r\n        \"lastName\": \"last name XXXXXX\",\r\n        \"dob\": \"MM/dd/yyyy\",        \r\n        \"memberID\": \"AxCXXXXXXXXXXXXXXX\"       \r\n    },\r\n    \"isPatientDependent\": false\r\n}",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer XXX",
    "Client-User-Name: XXX",
    "Content-Type: application/json",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl --request POST \
  --url https://api.pverify.com/API/ClaimStatusInquiry/ \
  --header 'Authorization: Bearer XXX' \
  --header 'Client-User-Name: XXX' \
  --header 'Content-Type: application/json' \
  --header 'cache-control: no-cache' \
  --data '{\r\n    "payerCode": "00001",   \r\n    "providerLastName": "last name ",\r\n    "providerNPI": "1234xxxxxxx",  \r\n    "payerClaimNumber": "Axxx23243xxxxxxxx",\r\n    "chargeAmount": 50,\r\n    "serviceStartDate": "MM/dd/yyyy",\r\n    "serviceEndDate": " MM/dd/yyyy ",\r\n    "subscriber": {\r\n        "lastName": "last name XXXXXX",\r\n        "dob": "MM/dd/yyyy",        \r\n        "memberID": "AxCXXXXXXXXXXXXXXX"       \r\n    },\r\n    "isPatientDependent": false\r\n}'

ClaimStatusInquiry Sample Response

{
    "requestId": 52921,
    "payerClaimNo": "180719E3184902",
    "categoryCode": "F2",
    "category": "Finalized/Denial-The claim/line has been denied.",
    "claimStatusReasonCode": "21",
    "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
    "payer": {
        "info": {
            "type": "Payer",
            "name": "AETNA",
            "qualifier": "Payor Identification",
            "id": "AETNA",
            "firstName": null,
            "middleName": null
        },
        "contactInfo": {
            "name": "AETNA",
            "qualifier": "Telephone",
            "number": "8006240756"
        }
    },
    "providerInfo": {
        "type": "Provider",
        "name": null,
        "qualifier": "National Provider Identifier",
        "id": "1972535052",
        "firstName": null,
        "middleName": null
    },
    "subscriber": {
        "type": "Subscriber",
        "name": "[name]",
        "qualifier": "Member Identification Number",
        "id": "[id]",
        "firstName": null,
        "middleName": null
    },
    "dependent": null,
    "claimStatuses": [
        {
            "otherIndentificationInfo": [
                {
                    "qualifier": "Payer's Claim Number",
                    "id": "[id]",
                    "description": null
                },
                {
                    "qualifier": "Billing Type",
                    "id": "111",
                    "description": null
                },
                {
                    "qualifier": "Patient Account Number",
                    "id": "2118191073500",
                    "description": null
                }
            ],
            "statusInfo": {
                "statuses": [
                    {
                        "categoryCode": "F2",
                        "category": "Finalized/Denial-The claim/line has been denied.",
                        "statusCode": "21",
                        "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                        "type": null
                    },
                    {
                        "categoryCode": "F2",
                        "category": "Finalized/Denial-The claim/line has been denied.",
                        "statusCode": "279",
                        "claimStatus": "Claim/service must be itemized",
                        "type": null
                    }
                ],
                "effectiveDate": "03/20/2019",
                "chrageAmount": 17235.1,
                "paymentAmount": 0,
                "adjudicationFinalizedDate": "07/20/2018",
                "remittanceDate": "07/26/2018",
                "checkNumber": "160723180001679"
            },
            "serviceLines": [
                {
                    "lineItemInfo": {
                        "procedureCode": "111",
                        "lineCharge": 8740,
                        "linePayment": 0,
                        "unit": 4
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "260",
                        "lineCharge": 559,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "450",
                        "lineCharge": 2188,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "250",
                        "lineCharge": 2069.05,
                        "linePayment": 0,
                        "unit": 147
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "258",
                        "lineCharge": 193.05,
                        "linePayment": 0,
                        "unit": 3
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "300",
                        "lineCharge": 15,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "301",
                        "lineCharge": 535,
                        "linePayment": 0,
                        "unit": 11
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "305",
                        "lineCharge": 168,
                        "linePayment": 0,
                        "unit": 6
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "306",
                        "lineCharge": 2126,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "307",
                        "lineCharge": 12,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "402",
                        "lineCharge": 630,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "21",
                                "claimStatus": "Missing or invalid information. Note: At least one other status code is required to identify the missing or invalid information.",
                                "type": null
                            },
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "279",
                                "claimStatus": "Claim/service must be itemized",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/11/2018 - 07/15/2018"
                        }
                    ]
                }
            ],
            "dates": [
                {
                    "qualifier": "Service",
                    "value": "07/11/2018 - 07/15/2018"
                }
            ]
        },
        {
            "otherIndentificationInfo": [
                {
                    "qualifier": "Payor;s Claim Number",
                    "id": "180719E3184901",
                    "description": null
                },
                {
                    "qualifier": "Billing Type",
                    "id": "111",
                    "description": null
                },
                {
                    "qualifier": "Patient Account Number",
                    "id": "2118191073500",
                    "description": null
                }
            ],
            "statusInfo": {
                "statuses": [
                    {
                        "categoryCode": "F2",
                        "category": "Finalized/Denial-The claim/line has been denied.",
                        "statusCode": "1",
                        "claimStatus": "For more detailed information, see remittance advice.",
                        "type": null
                    }
                ],
                "effectiveDate": "03/20/2019",
                "chrageAmount": 17235.1,
                "paymentAmount": 0,
                "adjudicationFinalizedDate": "07/20/2018",
                "remittanceDate": null,
                "checkNumber": null
            },
            "serviceLines": [
                {
                    "lineItemInfo": {
                        "procedureCode": "111",
                        "lineCharge": 8740,
                        "linePayment": 0,
                        "unit": 4
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/14/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "260",
                        "lineCharge": 559,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "450",
                        "lineCharge": 2188,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "250",
                        "lineCharge": 2069.05,
                        "linePayment": 0,
                        "unit": 147
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "258",
                        "lineCharge": 193.05,
                        "linePayment": 0,
                        "unit": 3
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "300",
                        "lineCharge": 15,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "301",
                        "lineCharge": 535,
                        "linePayment": 0,
                        "unit": 11
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "305",
                        "lineCharge": 168,
                        "linePayment": 0,
                        "unit": 6
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "306",
                        "lineCharge": 2126,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "307",
                        "lineCharge": 12,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                },
                {
                    "lineItemInfo": {
                        "procedureCode": "402",
                        "lineCharge": 630,
                        "linePayment": 0,
                        "unit": 1
                    },
                    "statusInfo": {
                        "statuses": [
                            {
                                "categoryCode": "F2",
                                "category": "Finalized/Denial-The claim/line has been denied.",
                                "statusCode": "1",
                                "claimStatus": "For more detailed information, see remittance advice.",
                                "type": null
                            }
                        ],
                        "effectiveDate": "03/20/2019"
                    },
                    "otherIndentificationInfo": [],
                    "dates": [
                        {
                            "qualifier": "Service",
                            "value": "07/10/2018 - 07/15/2018"
                        }
                    ]
                }
            ],
            "dates": [
                {
                    "qualifier": "Service",
                    "value": "07/10/2018 - 07/15/2018"
                }
            ]
        }
    ],
    "fileControlNumber": null,
    "apiResponseCode": 0,
    "apiResponseMessage": "Processed"
}

The ClaimStatusInquiry is the second step of the workflow for obtaining Claim status Information through pVerify. As demonstrated below, the ClaimStatusInquiry call takes in subscriber or dependent demographic information, along with the authorization token, and returns the claim status among other information. To use this or any other method, you must first generate a token via the Token endpoint (see above Token method).

Field Description
URL /API/ClaimStatusInquiry/
Method POST
Headers Description
Content-Type application/json
Authorization Bearer XXX
Client-User-Name username provided by pVerify
Body See right

Note: The ClaimStatusInquiry for dependents is the same for self. However, it uses different data parameters.

ClaimStatusInquiry Request Fields for Self

The ClaimStatusInquiry request for self includes the following fields:

Property Name Data Type Required Description
PayerCode String Yes pVerify payer Code (i.e. Aetna 00001)
providerLastName String No Provider Last Name
provider.NPI String Yes 10-digit NPI value
claimTrackingNumber String Yes Claim tracking number
ChargeAmount String Yes Charge Amount
servicesStartDate String Yes Start date of service (Expected format: MM/dd/YYYY ie 01/01/2000)
serviceEndDate String Yes End date of service (Expected format: MM/dd/YYYY ie 01/01/2000)
Subscriber Object Yes Subscriber demographic information
Subscriber.lastName String Yes Subscriber last name
Subscriber.dob String Yes Subscriber Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000)
Subscriber.memberID String Yes Member ID of subscriber
isPatientDependent boolean No Determines if the patient is dependent

ClaimStatusInquiry Request Fields for Dependents

The ClaimStatusInquiry request for dependents includes the following fields.

Property Name Data Type Required Description
PayerCode String Yes pVerify payer Code (i.e. Aetna 00001)
providerLastName String No Provider Last Name
provider.NPI String Yes 10-digit NPI value
payerClaimNumber String Yes Claim tracking number
ChargeAmount String Yes Charge Amount
servicesStartDate String Yes Start date of service (Expected format: MM/dd/YYYY ie 01/01/2000)
serviceEndDate String Yes End date of service (Expected format: MM/dd/YYYY ie 01/01/2000)
Subscriber Object Yes Subscriber demographic information
Subscriber.lastName String Yes Subscriber last name
Subscriber.dob String Yes Subscriber Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000)
Subscriber.memberID String Yes Member ID of subscriber
isPatientDependent boolean No Determines if the patient is dependent
Dependent Object Yes Dependent demographic information
Dependent.lastName String Yes Dependent last name
Dependent.dob String No Dependent Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000)

ClaimStatusInquiry Response Fields

The ClaimStatusInquiry response includes the following fields

Property Name Data Type Description
RequestID Long Claim Status Request ID
apiResponseCode int API transaction response code. Please see apiResponseCode table
apiResponseMessage String API transaction response message
payerClaimNo String Payer Claim Number (if returned in EDI 277)
categoryCode String Category code of claim status
category String Category of claim status
claimStatusReasonCode String Claim Status Code
claimStatus String Claim status text
payer Payer Contains payer info
providerInfo Info Contains provider info
subscriber Info Contains Subscriber info
dependent Info Contains dependent info
ClaimStatuses List Contains Claim Status Info
ClaimStatuses.serviceLine List Contains Claim Service line item info, ie: Code specific info

The API Response Codes and there description are shown below.

APIResponseCode Description
0 Processed
1 Rejected
2 NoFunds (insufficient account balance)
3 InvalidRequest (Required data missing)
4 InvalidFormat (data format or data fields are wrong)
5 InvalidPayer (Payer does not support Claim Status electronically / inactive)
6 LocationError (Location is not configured)

GetClaimStatusResponse

GetClaimStatusResponse Sample Call

var client = new RestClient("https://api.pverify.com/API/GetClaimStatusResponse/{requestId}");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer XXX");
request.AddHeader("Client-User-Name", "XXX");
IRestResponse response = client.Execute(request);
//Using OKHttp Client

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.pverify.com/API/GetClaimStatusResponse/{requestId}")
  .get()
  .addHeader("Client-User-Name", "XXX")
  .addHeader("Authorization", "Bearer XXX")
  .addHeader("Content-Type", "application/json")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.pverify.com/API/GetClaimStatusResponse/{requestId}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "",
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer XXX",
    "Client-User-Name: XXX",
    "Content-Type: application/json",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
curl --request GET \
  --url 'https://api.pverify.com/API/GetClaimStatusResponse/{requestId}' \
  --header 'Authorization: Bearer XXX' \
  --header 'Client-User-Name: XXX' \
  --header 'Content-Type: application/json' \
  --header 'cache-control: no-cache'

This GET method is used to obtain the transaction result later using a unique request ID. Note: the data is deleted after 90 days.

Field Description
URL /API/GetClaimStatusResponse/{requestId}
Method GET
Headers Description
Authorization Bearer XXX
Client-User-Name Username provided through pVerify
Content-Type application/json
URL Parameters Unique id
Data Parameters None

A successful GetClaimStatusResponse call will have the same format as the ClaimStatusInquiry response (above).

Tables

Payer Table

pVerify Payer Code List Click Here to Download pVerify Payer Codes Excel Sheet

Pass Thru Fee List This list shows pricing for payers that send us an additional fee per processing. If you are using this payer for your API inquiry the fee will be your contracted rate plus the fee on this list.

Payer Name PV Payer Code Actual Pass Through Fee
BCBS of Michigan (Thru Blue Exchange) 00039 0.06
Connecticut Medicaid 00073 0.045
Florida Medicaid 00098 0.03
Georgia Medicaid 00100 0.05
Kansas Medicaid 00128 0.02
Oklahoma Medicaid 00166 0.02
Mississippi Medicaid 00144 0.053
Tennessee Medicaid (TennCare) 00185 0.04
BCBS of Michigan (Institutional) 00464 0.06
Tricare East 00975 0.05
PacificSource Administrators 00977 0.05
BCBS of Michigan (Thru Blue Exchange) 00039 0.06

Click Here to Download the pVerify Pass thru free Excel Sheet

Service Code Table

This is the pVerify service type code list, please use the service type code (first column) in your eligibility queries. Common eligibility information is in service type code 30, Health Benefit Plan Coverage

Click Here to Download the pVerify Service Codes Excel Sheet (Service codes are located on the second page of the sheet).