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
We now have NuGet packages for .NET coding. Download from Visual Studio today from NuGet - pVerify.Apis
Click here to download the NuGet demo project from GitHub.
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
Authentication
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Authentication | /Token | POST | Obtain authorization to pVerify REST API. |
Eligibility
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
1 Step "Easy" Methods | |||
Eligibility | /API/EasyEligibility | POST | Returns the Eligibility Status of a requested provider in just one step (no Token needed). |
Eligibility | /API/EasyEligibilitySummary | POST | Returns the Eligibility Summary of a request in just one step (no Token needed). |
Our 2nd Generation Methods | |||
Eligibility | /API/EligibilitySummary | POST | We recommend this for most businesses, and will work for 95% of payers. This will populate all eligibility data into discrete data objects for easy consumption, including different Medicare objects, payer change object, copays for different service types (ex: labs, specialist, chiro) |
Eligibility | /API/GetEligibility/{key}/{id} | GET | Use Transaction ID from EligibilityInquiry or EligibilitySummary to get any single field, for example Status. |
Our 1st Generation Methods | |||
Eligibility | /API/EligibilityInquiry | POST | Returns Status, Plan Info, Payer Change and other Eligibility Information for major payers. |
Eligibility | /API/GetEligibilityResponse/{id} | GET | Get Eligibility result by unique transaction id. |
Our Backoffice Workflow | |||
Eligibility | /API/EligibilitySummary | POST | We can accommodate non EDI payers by first submitting information via POST, then retrieving after 24 hours via GET. |
Eligibility | /API/GetEligibilitySummary | GET | Returns Response from Eligibility Summary. |
Eligibility | /API/CancelTransaction | POST | Cancels a back office request. |
Eligibility | /API/GetPendingInquiries | GET | Get inquiries that are still being processed by pVerify back office. |
Estimates
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Eligibility | /API/EstimateCalculation | POST | Returns fee estimate from Medicare given Zip code, CPT code, and other info. |
Same or Similar
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Same or Similar | /API/SameOrSimilarInquiry | POST | Runs Same or Similar inquiry endpoint. |
Same or Similar | /API/GetSameOrSimilarResponse | GET | Gets the transaction result from SorS later using unique request id. |
Skilled Nursing Facility
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Skilled Nursing Facility | /API/SNFInquiry | POST | Skilled Nursing Facility Inquiry |
Skilled Nursing Facility | /API/GETSNFResponse | GET | Returns SNF Response from SNFInquiry |
Claim Status
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Claim Status | /API/ClaimStatusInquiry | POST | Obtain claim status information using subscriber demographic information |
Claim Status | /API/GetClaimStatusResponse | GET | Used to obtain claim status transaction result later. |
CGX
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
CGX | /API/CGXInquiry | POST | Run CGX Inquiry. |
CGX | /WidgetSetup | POST | create widget |
CMN
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
CMN | /API/CMNInquiry | POST | Runs CMN inquiry endpoint. |
CMN | /API/GetCMNResponse | GET | Gets the transaction result from CMN later using unique request id. |
Payers
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Payers | /API/GetAllPayers | GET | Get pVerify payer list. |
Payers | /API/GetPayerStatus | GET | Gets payer status. |
Help - Which endpoint/fields do I need?
At pVerify we know that Patient Eligibility is confusing and you may not be an expert in the field, as we are. We have identified some common scenarios and uses cases for you so you can readily get the needed information. Please see our guidance here.
For more information, consider taking a look at the following pages:
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 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.
Service | Endpoint | HTTP Method | Description |
---|---|---|---|
Authentication | /Test/Token | POST | Obtain authorization to pVerify REST API |
Eligibility | /Test/API/EligibilityInquiry | POST | Facilitate the secure exchange of healthcare Eligibility and related transactions |
Eligibility | /Test/API/EligibilitySummary | POST | We recommend this for most businesses, and will work for 95% of payers. This will populate all eligibility data into discrete data objects for easy consumption, including different Medicare objects, payer change object, copays for different service types (ex: labs, specialist, chiro) |
Eligibility | /Test/API/GetEligibilitySummary/{id} | GET | Returns Response from Eligibility Summary. |
Eligibility | /Test/API/GetEligibilityResponse/{id} | GET | Get Eligibility result by unique transaction id |
Same or Similar | /Test/API/SameOrSimilarInquiry | POST | Runs Same or Similar inquiry endpoint. |
Same or Similar | /Test/API/SameOrSimilarResponse/{id} | GET | Gets the transaction result from SorS later using unique request id. |
Skilled Nursing Facility | /Test/API/SNFInquiry | POST | Skilled Nursing Facility Inquiry |
Skilled Nursing Facility | /Test/API/GETSNFResponse | GET | Returns SNF Response from SNFInquiry |
Claim Status | /Test/API/ClaimStatusInquiry | POST | Obtain claim status information using subscriber demographic information. |
Claim Status | /Test/API/ClaimStatusResponse/{id} | GET | Used to obtain claim status transaction result later. |
CGX | /Test/API/CGXInquiry | POST | Run CGX Inquiry. |
CMN | /API/CMNInquiry | POST | Runs CMN inquiry endpoint. CMN | /API/GetCMNResponse | GET | Gets the transaction result from CMN later using unique request id.
Payers | /Test/API/GetAllPayers | 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). For example an example of token calls and requests, see the right panel
Payer list:
Payer | ID |
---|---|
AETNA | 00001 |
United Healthcare | 00192 |
Medicare Part A & B | 00007 |
Ohio Medicaid | 00165 |
BCBS of Texas | 00220 |
For examples, click the endpoint of interest on the table of contents (left) and view the example on the right.
List of PracticeTypeCodes for use with EligibilitySummary in Test environment.
ID | PracticeType |
---|---|
3 | DME |
12 | Physical Therapy |
18 | Specialist OV-Professional Services |
27 | OV_DxLab_Sx(Office) |
38 | PT_DME |
40 | PT_OT_ST |
Medicare HCPCS codes
Sample ServiceTypeDetailInfo for Medicare HCPCS codes
"ServiceTypeName": "[servicetypename]",
"ServiceTypeSections": [
{
"Label": "HCPCS|G0297",
"ServiceParameters": [
{
"Key": "Professional Eligible Date",
"Value": "02/05/2015",
"Message": null,
"OtherInfo": null
},
{
"Key": "Technical Eligible Date",
"Value": "02/05/2015",
"Message": null,
"OtherInfo": null
},
{
"Key": "Visit Co-Insurance ",
"Value": "0%",
"Message": null,
"OtherInfo": null
},
{
"Key": "Calendar Year Deductible ",
"Value": "$0.00",
"Message": null,
"OtherInfo": null
},
{
"Key": "Used",
"Value": "$0.00",
"Message": null,
"OtherInfo": null
}
]
}
]
},
For the EligibilityInquiry, GetEligibilityResponse, and EligibilitySummary calls, we can return Medicare preventative service information. You can either populate the preventative service codes in the request or as a one time set up, use our portal at Premium.Pverify.com -> Admin/Profile -> Settings -> Medicare HCPCS Codes. These settings in the UI will be used if the request HCPCS codes are blank.
For example you can add this to the request:
"HCPCSCodes": [
"G0297"
],
And it will return the code to the right under ServiceTypeDetailInfo - for this patient they were eligible for this code on 2/5/2015.
Medicare SNF and Other Information
MedicareInfoSummary Response Object
"MedicareInfoSummary": {
"HospiceQty": null,
"HospiceDate": null,
"HomeHealthCareStartDate": null,
"HomeHealthCareEndDate": null,
"SkilledNursingCareStartDate": null,
"SkilledNursingCareEndDate": null,
"AdvantagePayerName": null,
"AdvantageCOBDate": null,
"AdvantagePolicyType": null,
"PharmacyPayerName": "SILVERSCRIPT INSURANCE COMPANY",
"PharmacyPayerPlanNumber": "S5601",
"PharmacyPayerPlanNetworkID": "034",
"WCAutoInjuryLiabilityPayerName": null,
"WCAutoInjuryLiabilityCOBDate": null,
"WCAutoInjuryLiabilityPolicyType": null,
"QMBPolicyType": null,
"Part_A_Deductible": null,
"Part_A_Deductible_Remaining": "$1364.00",
"Part_B_Deductible": "$185.00",
"Part_B_Deductible_Remaining": "$0.00",
"OT_UsedAmount": null,
"PT_SLP_UsedAmount": null
},
Using EligibilitySummary or EasyEligibilitySummary, for Medicare, you can obtain details in a new section "MedicareInfoSummary". The response object is to the right and returns SNF information, MCA information, Pharmacy payer, and other Medicare specific information.
OtherPayerInfo Response Object
"OtherPayerInfo": {
"PrimaryPayer": null,
"Payer": null,
"SecondaryPayer": null,
"PlanSponsor": null,
"IndependentPhysiciansAssociation_IPA": null,
"WorkersCompensation": null,
"ContractedServiceProvider": null
},
Further under the OtherPayerInfo section you can find Third Party Administrators and other information.
Backoffice Payers
An important concept to understand with pVerify eligibility endpoints is the concept of a "back office" 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 client-api-id and client-secret. These must be requested from pVerify and are sent to you through a secure email system. The client-api-id and client-secret are used for the Token call, while the Token and client-api-id are used for subsequent calls. Please see the demo video for an example.
Token
Sample Token Request: (POST) https://api.pverify.com/Token
POST /Token HTTP/1.1
Host: api.pverify.com
Headers:
Content-Type: "application/x-www-form-urlencoded"
Body:
{
"client-id=pverify_demo&password=pverify@949&grant_type=password"
}
OR
{
"Client_Id=[client-api-id]&client_secret=[client-Secret]&grant_type=client_credentials"
}
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);
}
OR
var client = new RestClient("https://api.pverify.com/Token");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "Client_Id=[client-api-ID]&client_secret=[client-Secret]&grant_type=client_credentials", 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 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")
.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);
}
}
OR
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "Client_Id=[client-api-ID]&client_secret=[client-Secret]&grant_type=client_credentials");
Request request = new Request.Builder()
.url("https://api.pverify.com/Token")
.post(body)
.addHeader("content-type", "application/x-www-form-urlencoded")
.build();
Response response = client.newCall(request).execute();
<?php
"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(
"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;
}
OR
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/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 => "Client_Id=[clientID]&client_secret=[clientSecret]&grant_type=client_credentials",
CURLOPT_HTTPHEADER => array(
"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
OR
curl --request POST \
--url https://api.pverify.com/Token \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'Client_Id=[clientID]&client_secret=[clientSecret]&grant_type=client_credentials'
Sample Token Response
{
"access_token": "ObwRbRDiaNQaeYgAoeAMs...",
"token_type": "bearer",
"expires_in": 3599,
"ClientUserID": "[ID]",
"ClientID": "[id]"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/Token |
Production | https://api.pverify.com/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" OR "Client_Id=" + clientID + "&client_secret=" + ClientSecret + "&grant_type=client_credentials" |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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
EligibilitySummary
EligibilitySummary Sample Call: (POST) https://api.pverify.com/API/EligibilitySummary
POST API/EligibilitySummary HTTP/1.1
Host: api.pverify.com
Headers (note: Client-API-Id is required):
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
{
"payerCode": "00007",
"payerName": "Medicare",
"provider": {
"firstName": "",
"middleName": "",
"lastName": " test name",
"npi": "1122334455"
},
"subscriber": {
"firstName": "",
"dob": "01/01/1950",
"lastName": "",
"memberID": "W123456789"
},
"dependent": null,
"isSubscriberPatient": "True",
"doS_StartDate": "12/02/2019",
"doS_EndDate": "12/02/2019",
"PracticeTypeCode":"27",
"referenceId":"Pat MRN",
"Location":"Any location Name",
"IncludeTextResponse":false
}
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"payerCode\": \"00007\",\n \"payerName\": \"Medicare\",\n \"provider\": {\n \"firstName\": \"\",\n \"middleName\": \"\",\n \"lastName\": \" test name\",\n \"npi\": \"1122334455\"\n },\n \n \"subscriber\": {\n \"firstName\": \"\",\n \"dob\": \"01/01/1950\",\n \"lastName\": \"\",\n \"memberID\": \"W123456789\"\n },\n\t\n \"dependent\": null,\n \"isSubscriberPatient\": \"True\",\n \"doS_StartDate\": \"12/02/2019\",\n \"doS_EndDate\": \"12/02/2019\",\n \n\t\"PracticeTypeCode\":\"27\",\n \"referenceId\":\"Pat MRN\",\n \"Location\":\"Any location Name\",\n \"IncludeTextResponse\":false\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/EligibilitySummary")
.post(body)
.addHeader("Authorization", "Bearer zd1yB...")
.addHeader("Client-API-Id", "[client-api-id]")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
private void button1_Click(object sender, EventArgs e)
{
//Pverify.Apis.ElgSummary.Verify
var apiId = "(your api ID from API management)";
var clientSecret = "(your secret)";
Pverify.Apis.PverifyClient.Init(apiId, clientSecret);
var request = new Pverify.Apis.EligibilitySummaryRequest();
request.Subscriber = new Pverify.Apis.Subscriber
{
MemberId = "(memberid)",
FirstName = "John",
LastName = "Doe",
DOB = "01/01/2000"
};
request.IsSubscriberPatient = true;
request.Provider = new Pverify.Apis.Provider
{
NPI = "xxx",
LastName = "ProviderLast"
};
request.DoS_StartDate = DateTime.Now.ToShortDateString();
request.DoS_EndDate = request.DoS_StartDate;
request.PayerCode = "00001"; // this is the pVerify payer code. You can also use PayerName and map within our software.
var output = Pverify.Apis.ElgSummary.Verify(request);
}
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/EligibilitySummary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\n \"payerCode\": \"00007\",\n \"payerName\": \"Medicare\",\n \"provider\": {\n \"firstName\": \"\",\n \"middleName\": \"\",\n \"lastName\": \" test name\",\n \"npi\": \"1122334455\"\n },\n \n \"subscriber\": {\n \"firstName\": \"\",\n \"dob\": \"01/01/1950\",\n \"lastName\": \"\",\n \"memberID\": \"W123456789\"\n },\n\t\n \"dependent\": null,\n \"isSubscriberPatient\": \"True\",\n \"doS_StartDate\": \"12/02/2019\",\n \"doS_EndDate\": \"12/02/2019\",\n \n\t\"PracticeTypeCode\":\"27\",\n \"referenceId\":\"Pat MRN\",\n \"Location\":\"Any location Name\",\n \"IncludeTextResponse\":false\n}",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer zd1yB...",
Client-API-Id: [client-api-id]",
"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 --request POST \
--url https://api.pverify.com/API/EligibilitySummary \
--header 'Authorization: Bearer zd1yB...' \
--header 'Cache-Control: no-cache' \
--header 'Client-API-Id: [client-api-id]' \
--header 'Content-Type: application/json' \
--data '{\n "payerCode": "00007",\n "payerName": "Medicare",\n "provider": {\n "firstName": "",\n "middleName": "",\n "lastName": " test name",\n "npi": "1122334455"\n },\n \n "subscriber": {\n "firstName": "",\n "dob": "01/01/1950",\n "lastName": "",\n "memberID": "W123456789"\n },\n \n "dependent": null,\n "isSubscriberPatient": "True",\n "doS_StartDate": "12/02/2019",\n "doS_EndDate": "12/02/2019",\n \n "PracticeTypeCode":"27",\n "referenceId":"Pat MRN",\n "Location":"Any location Name",\n "IncludeTextResponse":false\n}'
EligibilitySummary Sample Response
{
"RequestID": 7450233,
"APIResponseCode": "0",
"APIResponseMessage": "Processed",
"EDIErrorMessage": null,
"IsPayerBackOffice": false,
"PayerName": "AETNA INC",
"VerificationType": "Dependent Verification",
"DOS": "12/02/2019 - 12/02/2019",
"ExceptionNotes": "Patient is dependent as per Payer Response\r\n",
"IsHMOPlan": false,
"AddtionalInfo": "PLAN REQUIRES PRECERT for Some or ALL Services",
"Location": "India",
"ReferrenceId": null,
"ResultPracticeType": "Specialist_DxLab_Surgery",
"AreAllSTCsProcessed": true,
"STCsStausMesage": "",
"DemographicInfo": {
"Subscriber": {
"Address1": null,
"Address2": null,
"City": null,
"CommunicationNumber": null,
"Date": null,
"DOB_R": null,
"Firstname": "Jenni",
"Gender_R": "",
"Identification": [
{
"Code": "Mart",
"Type": "Lastname_R",
"Name": null
},
{
"Code": "Jenni",
"Type": "Firstname",
"Name": null
},
{
"Code": "W23175XXXX",
"Type": "Member ID",
"Name": null
},
{
"Code": "028553XXXXXXXXXX",
"Type": "Group Number",
"Name": null
},
{
"Code": "DUKE UNIVERSITY",
"Type": "Group Name",
"Name": null
}
],
"Lastname_R": "Mart",
"Middlename": "C",
"State": null,
"Suffix": null,
"Zip": null,
"MilitaryPersonnelInfo": null,
"FullName": "Jenni Mart"
},
"Dependent": {
"DependentInfo": {
"Address1": "5210 BROOKSTONE DRIVE",
"Address2": null,
"City": "DURHAM",
"CommunicationNumber": null,
"Date": [
{
"Date": "01/01/2017",
"Type": "Plan Begin"
},
{
"Date": "12/02/2019",
"Type": "Service"
},
{
"Date": "01/01/2017",
"Type": "Eligibility Begin"
}
],
"DOB_R": "06/17/1974",
"Firstname": "John",
"Gender_R": "",
"Identification": [
{
"Code": "Spouse",
"Type": "Relationship",
"Name": null
},
{
"Code": "028XXXX",
"Type": "Plan Number",
"Name": null
}
],
"Lastname_R": "Deo",
"Middlename": null,
"State": "NC",
"Suffix": null,
"Zip": "27713",
"MilitaryPersonnelInfo": null,
"FullName": "John Deo"
},
"Relationship": "Spouse"
}
},
"OtherPayerInfo": {
"PrimaryPayer": null,
"Payer": "AETNA",
"SecondaryPayer": null,
"PlanSponsor": null,
"IndependentPhysiciansAssociation_IPA": null,
"WorkersCompensation": null,
"ContractedServiceProvider": null
},
"PlanCoverageSummary": {
"Status": "Active",
"EffectiveDate": "01/01/2019",
"ExpiryDate": null,
"PlanName": "OPEN ACCESS AETNA SELECT",
"PolicyType": "Exclusive Provider Organization",
"GroupNumber": "028553501000101",
"GroupName": "DUKE UNIVERSITY",
"PlanNetworkID": null,
"PlanNetworkName": null,
"SubscriberRelationship": "Spouse",
"PlanNumber": "0285535",
"HRAorHSALimitationsRemaining": null,
"LastUpdatedDateOfEDI": null
},
"PCPAuthInfoSummary": {
"PrimaryCareProviderName": null,
"PrimaryCareProviderPhoneNumber": null,
"InNetHBPCAuthorizationInfo": null,
"OutNetHBPCAuthorizationInfo": null,
"UtilizationManagementOrganizationName": null,
"UMOTelephone": null,
"CapitationFacilityName": null
},
"HBPC_Deductible_OOP_Summary": {
"IndividualDeductibleInNet": {
"Value": "$600.00",
"Notes": "MED DENT,MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS,DED NOT INCL IN OOP"
},
"IndividualDeductibleOutNet": null,
"IndividualDeductibleRemainingInNet": {
"Value": "$514.50",
"Notes": "MED DENT"
},
"IndividualDeductibleRemainingOutNet": null,
"FamilyDeductibleInNet": {
"Value": "$1800.00",
"Notes": "MED DENT,MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS,DED NOT INCL IN OOP"
},
"FamilyDeductibleOutNet": null,
"FamilyDeductibleRemainingInNet": {
"Value": "$1714.50",
"Notes": "MED DENT"
},
"FamilyDeductibleRemainingOutNet": null,
"IndividualOOP_InNet": {
"Value": "$2000.00",
"Notes": "MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS"
},
"IndividualOOP_OutNet": null,
"IndividualOOPRemainingInNet": {
"Value": "$2000.00",
"Notes": null
},
"IndividualOOPRemainingOutNet": null,
"FamilyOOPInNet": {
"Value": "$6000.00",
"Notes": "MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS"
},
"FamilyOOPOutNet": null,
"FamilyOOPRemainingInNet": {
"Value": "$6000.00",
"Notes": null
},
"FamilyOOPRemainingOutNet": null
},
"MedicareInfoSummary": null,
"MiscellaneousInfoSummary": {
"RemainingSpendDown": null,
"IsNPIInNetwork": "WE ARE UNABLE TO DETERMINE YOUR PARTICIPATION STATUS WITH THIS PATIENT'S NETWORK. SERVICES RENDERED BY PROVIDERS THAT ARE NOT PART OF THE PATIENT'S NETWORK ARE NOT COVERED."
},
"DiagnosticLabSummary": {
"CoPayInNet": {
"Value": "$75.00",
"Notes": "MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS\r\nPAP SMEAR,COPAY NOT INCLUDED IN OOP"
},
"CoInsInNet": {
"Value": "0%",
"Notes": "MAXIMUM SAVINGS,CUSTOMER DESIGNATED PROVIDERS\r\nPAP SMEAR"
},
"CoPayOutNet": null,
"CoInsOutNet": null,
"UMOName": null,
"UMOTelephone": null,
"InNetServiceAuthorizationInfo": null,
"OutNetServiceAuthorizationInfo": null,
"IndividualDeductibleInNet": null,
"IndividualDeductibleOutNet": null,
"IndividualDeductibleRemainingInNet": null,
"IndividualDeductibleRemainingOutNet": null,
"FamilyDeductibleInNet": null,
"FamilyDeductibleOutNet": null,
"FamilyDeductibleRemainingInNet": null,
"FamilyDeductibleRemainingOutNet": null,
"IndividualOOP_InNet": null,
"IndividualOOP_OutNet": null,
"IndividualOOPRemainingInNet": null,
"IndividualOOPRemainingOutNet": null,
"FamilyOOPInNet": null,
"FamilyOOPOutNet": null,
"FamilyOOPRemainingInNet": null,
"FamilyOOPRemainingOutNet": null
},.....
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/EligibilitySummary |
Production | https://api.pverify.com/API/EligibilitySummary |
Eligibility summary is our 2nd gen eligibility endpoint designed to cover the vast majority of payers and return simplified objects with key data such as copay for your practice type. For example, when you send as practice type PT, we will return a Physical Therapy object with key PT benefits.
Key benefits are: 1) Easy and discrete eligibility information, allowing easy coding to obtain pertinent data. 2) Support for nearly all types of medical practices with key benefits such as surgical benefits, DME benefits, or PT benefits. 3) Support for nearly all payers, electronic and non electronic. We have tested all payers available to us and over 90% are returning parsed information correctly
To see the currently supported practice types please see the Practice Type tables.
Special note for Medicare: We will return a new object for Medicare called MedicareInfoSummary which will return Medicare specific information such as Part A/B deductible, pharmacy payer name, MCA payer name, and more information. This object will only be returned for Medicare, for all other payers it is null. Please use this object when sending Medicare patients to retrieve Medicare specific information.
Headers
Key | Value |
---|---|
URL | https://api.pverify.com/API/EligibilitySummary |
Method | POST |
Headers | Description |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id | API ID provided by pVerify |
Content-Type | application/json |
*Note: The Client-API-Id is required. Header keys are case sensitive.
Body
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.middleName | 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) |
dependent | Object | Conditional | Required for dependent inquiry |
PracticeTypeCode | String | No | Practice type code |
IncludeTextResponse | Boolean | No | Indicates whether to return the full text of the eligibility response |
referenceId | String | No | 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. |
EligibilitySummary Response Fields
Key | Type | Description |
---|---|---|
RequestID | Integer | Eligibility Transaction ID |
APIResponseCode | Integer | 0-Processed,1-Rejected,2-NoFunds,3-Pending,4-New |
APIResponseMessage | String | Message about the transaction |
VerificationType | String | Verification Type –Subscriber or dependent |
IsPayerBackOffice | String | If it is TRUE-NON EDI Payer, FALSE –EDI Payer |
VerificationStatus | String | Eligibility Transaction Status- Values : Processed, Pending, Rejected |
DOS | String | Date of service start date – DOS end date |
Is HMO Plan | Boolean | If true then Patient has HMO plan |
ExceptionNotes | String | Exception Notes if any. If response demographic info is not matched with that of Request |
AddtionalInformation | String | If there is any other info |
DemographicInfo | Object | It contains the subscriber info or dependent info . |
ServiceDetails | Object | It contains all Service type details info |
PreventiveServices | Object | Contains Preventive codes details |
OtherPayerInfo | Object | It contains Other Payer info. It is null then there is no payer change. |
PlanCoverageSummary | object | It contains Plan realted info. |
PCPAuthInfoSummary | Object | It contains PCP auth info. |
HBPC_Deductible_OOP_Summary | Object | It contains Deductible and OOP in from Health benefit Plan Coverage service type .It is null for Medicare Payer Inquiries. |
MedicareInfoSummary | Object | It contains Medicare info summary. It is null for other payers and other summary details are empty for Medicare payer transaction. |
MiscellaneousInfoSummary | Object | |
SpecialistOfficeSummary | PracticeTypeSummary | It contains Specialist Consultation specific Summary (Co-Pay,Co-ins,Ded,OOP) and exclusive values of practice type . |
DiagnosticLabSummary | PracticeTypeSummary | It contains Diagnostic Lab specific Summary |
SurgicalSummary | PracticeTypeSummary | It contains Surgical specific Summary |
ASC_FacilitySummary | PracticeTypeSummary | It contains Ambulatory Service Center Facility specific Summary |
OncologySummary | PracticeTypeSummary | It contains Oncology specific Summary |
DMESummary | PracticeTypeSummary | It contains Durable Medical Equipment specific Summary |
MentalHealthSummary | PracticeTypeSummary | It contains Mental Health specific Summary |
PrimaryCareSummary | PracticeTypeSummary | It contains Primary Care specific Summary |
MRI_CT_ScanSummary | PracticeTypeSummary | It contains MRI, CAT Scan specific Summary |
UrgentCareSummary | PracticeTypeSummary | It contains Urgent Care specific Summary |
XRaySummary | PracticeTypeSummary | It contains X Ray specific Summary |
VisionOptometrySummary | OpthalmologySummary | It contains Opthalmology (Vision) specific Summary |
PhysicalTherapySummary | TherapySummary | It contains Physical Therapy specific Summary |
ChiropracticSummary | TherapySummary | It contains Chiropractice specific Summary |
SpeechThearySummary | TherapySummary | It contains Speech Therapy specific Summary |
EmergencyMedicalSummary | PracticeTypeSummary | It contains Emergency Medical specific Summary |
WellnessOrRoutineVisitSummary | PracticeTypeSummary | It contains Wellness Or Routine Visit specific Summary |
PodiatryOfficeSummary | PracticeTypeSummary | It contains Podiatry Office specific Summary |
AnesthesiaSummary | PracticeTypeSummary | It contains Anesthesia specific Summary |
SubstanceAbuseProfessionalSummary | PracticeTypeSummary | It contains Substance Abuse Professional specific Summary |
SubstanceAbuseInPatientFacilitySummary | PracticeTypeSummary | It contains Substance Abuse InPatient Facility specific Summary |
SubstanceAbuseOutPatientFacilitySummary | PracticeTypeSummary | It contains Substance Abuse OutPatient Facility specific Summary |
TelemedicineSummary | PracticeTypeSummary | It contains Telemedicine specific Summary |
FluVaccinationSummary | PracticeTypeSummary | It contains FluVaccination specific Summary |
HospitalInpatientSummary | PracticeTypeSummary | It contains Hospital Inpatient specific Summary |
HospitalOutPatientSummary | PracticeTypeSummary | It contains Hospital Outpatient specific Summary |
PharmacySummary | PracticeTypeSummary | It contains Pharmacy specific Summary |
ResponseText | String | It contains response as Formatted text when IncludeTextResponse of request is true. |
GetEligibilitySummary
GetEligibilitySummary Sample Call: (GET) https://api.pverify.com/API/GetEligibilitySummary/{requestID}
GET API/GetEligibilitySummary/{requestID} HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.pverify.com/API/GetEligibilitySummary/1234786")
.get()
.addHeader("Authorization", "Bearer bWOqpya4AwbJpP...")
.addHeader("Client-API-Id", "client-api-id")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.pverify.com/API/GetEligibilitySummary/1234786");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "client-api-id");
request.AddHeader("Authorization", "Bearer IkzBKlvDZR52Tm...");
IRestResponse response = client.Execute(request);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/GetEligibilitySummary/1234786",
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 IkzBKlvDZR52Tm...",
"Client-API-Id: client-api-id",
"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 GET \
https://api.pverify.com/API/GetEligibilitySummary/1234786 \
-H 'Authorization: Bearer IkzBKlvDZR52Tm...' \
-H 'Client-API-Id: client-api-id' \
-H 'Content-Type: application/json'
EligibilitySummary Sample Response
{
"RequestID": [requestID],
"APIResponseCode": "0",
"APIResponseMessage": "Processed",
"IsPayerBackOffice": false,
"PayerName": "AETNA INC",
"VerificationType": "Dependent Verification",
"DOS": "05/08/2019 - 05/08/2019",
"ExceptionNotes": "",
"IsHMOPlan": false,
"AddtionalInfo": null,
"Location": null,
"ReferenceId": null,
"ResultPracticeType": "DME",
"AreAllSTCsProcessed": true,
"STCsStausMesage": "",
"OtherPayerInfo": null,
"PlanCoverageSummary": {
"Status": "Active",
"EffectiveDate": "01/01/2019",
"ExpiryDate": null,
"PlanName": "OPEN ACCESS AETNA SELECT",
"PolicyType": "Exclusive Provider Organization",
"GroupNumber": "[group number]",
"GroupName": "DUKE UNIVERSITY",
"PlanNetworkID": null,
"PlanNetworkName": null,
"SubscriberRelationship": "Spouse",
"PlanNumber": "[plan number]",
"HRAorHSALimitationsRemaining": null
},
"PCPAuthInfoSummary": {
"PrimaryCareProviderName": null,
"PrimaryCareProviderPhoneNumber": null,
"HBPCAuthorizationInfo": null,
"UtilizationManagementOrganizationName": null,
"CapitationFacilityName": null
},
"HBPC_Deductible_OOP_Summary": {
"IndividualDeductibleInNet": "$600.00",
"IndividualDeductibleOutNet": "$600.00",
"IndividualDeductibleRemainingInNet": "$514.50",
"IndividualDeductibleRemainingOutNet": "$514.50",
"FamilyDeductibleInNet": "$1800.00",
"FamilyDeductibleOutNet": "$1800.00",
"FamilyDeductibleRemainingInNet": "$1714.50",
"FamilyDeductibleRemainingOutNet": "$1714.50",
"IndividualOOP_InNet": "$2000.00",
"IndividualOOP_OutNet": "$2000.00",
"IndividualOOPRemainingInNet": "$2000.00",
"IndividualOOPRemainingOutNet": "$2000.00",
"FamilyOOPInNet": "$6000.00",
"FamilyOOPOutNet": "$6000.00",
"FamilyOOPRemainingInNet": "$6000.00",
"FamilyOOPRemainingOutNet": "$6000.00"
},
"MedicareInfoSummary": null,
"MiscellaneousInfoSummary": {
"RemainingSpendDown": null,
"IsNPIInNetwork": null
},
"PracticeTypeSummary": {
"CoPayInNet": null,
"CoInsInNet": null,
"CoPayOutNet": null,
"CoInsOutNet": null,
"AuthorizationInfo": null,
"IndividualDeductibleInNet": null,
"IndividualDeductibleOutNet": null,
"IndividualDeductibleRemainingInNet": null,
"IndividualDeductibleRemainingOutNet": null,
"FamilyDeductibleInNet": null,
"FamilyDeductibleOutNet": null,
"FamilyDeductibleRemainingInNet": null,
"FamilyDeductibleRemainingOutNet": null,
"IndividualOOP_InNet": null,
"IndividualOOP_OutNet": null,
"IndividualOOPRemainingInNet": null,
"IndividualOOPRemainingOutNet": null,
"FamilyOOPInNet": null,
"FamilyOOPOutNet": null,
"FamilyOOPRemainingInNet": null,
"FamilyOOPRemainingOutNet": null
},
"DisclaimerMessage": null,
"DemographicInfo": {
"Subscriber": {
"Address1": null,
"Address2": null,
"City": null,
"CommunicationNumber": null,
"Date": null,
"DOB_R": null,
"Firstname": "[firstName]",
"Gender_R": "",
"Identification": [
{
"Code": "[lastName]",
"Type": "Lastname_R",
"Name": null
},
{
"Code": "[firstName]",
"Type": "Firstname",
"Name": null
},
{
"Code": "[memberId]",
"Type": "Member ID",
"Name": null
},
{
"Code": "[groupNumber]",
"Type": "Group Number",
"Name": null
},
{
"Code": "DUKE UNIVERSITY",
"Type": "Group Name",
"Name": null
}
],
"Lastname_R": "[lastname]",
"Middlename": "",
"State": null,
"Suffix": null,
"Zip": null,
"MilitaryPersonnelInfo": null,
"FullName": "[fullname]"
},
"Dependent": {
"DependentInfo": {
"Address1": "[address]",
"Address2": null,
"City": "[city]",
"CommunicationNumber": null,
"Date": [
{
"Date": "01/01/2017",
"Type": "Plan Begin"
},
{
"Date": "05/08/2019",
"Type": "Service"
},
{
"Date": "01/01/2017",
"Type": "Eligibility Begin"
}
],
"DOB_R": "[dob]",
"Firstname": "[name]",
"Gender_R": "",
"Identification": [
{
"Code": "Spouse",
"Type": "Relationship",
"Name": null
},
{
"Code": "[number]",
"Type": "Plan Number",
"Name": null
}
],
"Lastname_R": "[lastName]",
"Middlename": null,
"State": "",
"Suffix": null,
"Zip": "[zip]",
"MilitaryPersonnelInfo": null,
"FullName": "[FullName]"
},
"Relationship": "Spouse"
}
},
"ServiceTypeDetailInfo": [
{
"ServiceTypeName": "Health Benefit Plan Coverage",
"ServiceTypeSections": [
{
"Label": "",
"ServiceParameters": [
{
"Key": "Family Active Coverage (OPEN ACCESS AETNA SELECT)",
"Value": null,
"Message": null,
"OtherInfo": [
{
"Key": "Policy Type",
"Value": "Exclusive Provider Organization",
"Message": null,
"OtherInfo": null
}
]
}]
}]
}]
}...............
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/GetEligibilitySummary |
Production | https://api.pverify.com/API/GetEligibilitySummary |
GetEligibilitySummary returns the response from the EligibilitySummary POST call using a unique request id provided in the EligibilitySummary response. EligibilitySummary is not supported for back office payers.
Headers
Key | Value |
---|---|
URL | https://api.pverify.com/API/GetEligibilitySummary |
Method | GET |
Headers | Description |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
Client-API-Id | API ID provided by pVerify |
Content-Type | application/json |
URL Parameters | RequestId returned in EligibilitySummary response |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
GetEligibilitySummary Response Fields
Key | Type | Description |
---|---|---|
RequestID | Int | Request ID Value |
APIResponseCode | String | Response code value |
APIResponseMessage | String | Value associated with response code |
IsPayerBackOffice | Boolean | Boolean value to determine if it is a back office payer |
PayerName | String | Name of Payer |
VerificiationType | String | Type of eligibility verification |
DOS | String | Date of Service in MM/DD/YYYY |
ExceptionNotes | String | Notable exceptions returned |
IsHMOPlan | Boolean | Determines if is HMOPlan |
AdditionalInfo | String | Additional Info |
Location | String | Location |
ReferenceID | String | Reference ID |
OtherPayerInfo | String | Other Payer Info |
PlanCoverageSummary | Object | Summary of Plan coverage |
PlanCoverageSummary.Status | String | Status of Plan |
PlanCoveragesummary.EffetiveDate | String | Start date of plan coverage in MM/DD/YYYY format |
PlanCoverageSummary.ExpiryDate | String | Expiration date of plan coverage |
PlanCoverageSummary.PlanName | String | Name of plan |
PlanCoverageSummary.PolicyType | String | Policy type for plan |
PlanCoverageSummary.GroupNumber | String | Plan Group Number |
PlanCoverageSummary.GroupName | String | Plan Group Name |
PlanCoverageSummary.PlanNetworkId | String | Network Id of plan |
PlanCoverageSummary.PlanNetworkName | String | Network Name of Plan |
PlanCoverageSummary.SubscriberRelationship | String | Subscriber relationship |
PlanCoverageSummary.PlanNumber | String | Plan Number |
PlanCoverageSummary. HRAorHSALimitationsRemaining | String | Limitations Remaining |
PCPAuthInfoSummary | Object | PCP Authorization Info Summary |
PCPAuthInfoSummary.PrimaryCareProviderName | String | Primary Care Provider Name |
PCPAuthInfoSummary. PrimaryCareProviderPhoneNumber | String | Provider Phone Number |
PCPAuthInfoSummary.HBPCAuthorizationInfo | String | HBCP Authorization Info |
PCPAuthInfoSummary. UtilizationManagementOrganizationName | String | Management Org Name |
PCPAuthInfoSummary.CapitationFacilityName | String | Capitation Facility Name |
HBPC_Deductible_OOP_Summary | Object | OOP Summary for HBPC Deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleInNet | String | Individual In Net Deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleOutNet | String | Individual Deductible out of Net |
HBPC_Deductible_OOP_Summary. IndividualDeductibleRemainingInNet | String | Remaining in net deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleRemainingOutNet | String | Remaining out net deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleInNet | String | Family In Net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleOutNet | String | Family Out Net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleRemainingInNet | String | Remaining in net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleRemainingOutNet | String | Remaining out net deductible |
HBPC_Deductible_OOP_Summary. IndividualOOP_InNet | String | Individual OOP In Net |
HBPC_Deductible_OOP_Summary. IndividualOOP_OutNet | String | Individual OOP Out Net |
HBPC_Deductible_OOP_Summary. IndividualOOPRemainingInNet | String | Individual OOP Remaining In net |
HBPC_Deductible_OOP_Summary. IndividualOOPRemainingOutNet | String | Individual OOP Remaining Out Net |
HBPC_Deductible_OOP_Summary. FamilyOOPInNet | String | Family OOP in Net |
HBPC_Deductible_OOP_Summary. FamilyOOPOutNet | String | Family OOP out Net |
HBPC_Deductible_OOP_Summary. FamilyOOPRemainingInNet | String | Family OOP Remaining in Net |
HBPC_Deductible_OOP_Summary. FamilyOOPRemainingOutNet | String | Family OOP remaining out net |
MedicareInfoSummary | String | Medicare Info Summary |
DisclaimerMessage | String | Disclaimer |
DemographicInfo | Object | Demographic Info on Subscriber and Dependent |
DemographicInfo.Subscriber | Object | Demographic Info on Subscriber |
DemographicInfo.Subscriber. Address1 | String | Line one address of subscriber |
DemographicInfo.Subscriber. Address2 | String | Line two address of subscriber |
DemographicInfo.Subscriber. City | String | Subscriber city location |
DemographicInfo.Subscriber. CommunicationNumber | String | Communication Number for subscriber |
DemographicInfo.Subscriber. Date | String[] | Array of dates showing when certain events began |
DemographicInfo.Subscriber. Date.Date | String | Shows date in MM/DD/YYYY Format |
DemographicInfo.Subscriber. Date.Type | String | Significance of Date Above |
DemographicInfo.Subscriber. DOB_R | String | Date of Birth in MM/DD/YYYY |
DemographicInfo.Subscriber. FirstName | String | Subscriber First Name |
DemographicInfo.Subscriber. Gender_R | String | Subscriber Gender |
DemographicInfo.Subscriber. Identification | String[] | Series of fields related to identification of subscriber |
DemographicInfo.Subscriber. Identification.Code | String | Value associated with identification |
DemographicInfo.Subscriber. Identification.Type | String | Key associated with Value above |
DemographicInfo.Subscriber. Identification.Name | String | Name Associated with identification |
DemographicInfo.Subscriber. LastName_R | String | Last Name of Subscriber |
DemographicInfo.Subscriber. Middlename | String | Middle Name of Subscriber |
DemographicInfo.Subscriber. State | String | State of residence for subscriber |
DemographicInfo.Subscriber. Suffix | String | Subscriber suffix |
DemographicInfo.Subscriber. Zip | String | Subscriber Zip Code |
DemographicInfo.Subscriber. MilitaryPersonnelInfo | String | Military Personnel Info |
DemographicInfo.Subscriber. FullName | String | Subscriber Full Name |
DemographicInfo.Dependent | Object | Demographic Info on Dependent |
DemographicInfo.Dependent. Address1 | String | Line one address of Dependent |
DemographicInfo.Dependent. Address2 | String | Line two address of Dependent |
DemographicInfo.Dependent. City | String | Dependent city location |
DemographicInfo.Dependent. CommunicationNumber | String | Communication Number for Dependent |
DemographicInfo.Dependent. Date | String[] | Array of dates showing when certain events began |
DemographicInfo.Dependent. Date.Date | String | Shows date in MM/DD/YYYY Format |
DemographicInfo.Dependent. Date.Type | String | Significance of Date Above |
DemographicInfo.Dependent. DOB_R | String | Date of Birth in MM/DD/YYYY |
DemographicInfo.Dependent. FirstName | String | Dependent First Name |
DemographicInfo.Dependent. Gender_R | String | Dependent Gender |
DemographicInfo.Dependent. Identification | String[] | Series of fields related to identification of Dependent |
DemographicInfo.Dependent. Identification.Code | String | Value associated with identification |
DemographicInfo.Dependent. Identification.Type | String | Key associated with Value above |
DemographicInfo.Dependent. Identification.Name | String | Name Associated with identification |
DemographicInfo.Dependent. LastName_R | String | Last Name of Dependent |
DemographicInfo.Dependent. Middlename | String | Middle Name of Dependent |
DemographicInfo.Dependent. State | String | State of residence for Dependent |
DemographicInfo.Dependent. Suffix | String | Dependent suffix |
DemographicInfo.Dependent. Zip | String | Dependent Zip Code |
DemographicInfo.Dependent. MilitaryPersonnelInfo | String | Military Personnel Info |
DemographicInfo.Dependent. FullName | String | Dependent Full Name |
DemographicInfo.Relationship | String | Dependent RelationShip to Subscriber |
ServiceTypeDetailInfo | Object[] | Details Relating to Service Type |
ServiceTypeDetailInfo.ServiceTypeName | String | Name of Service Type |
ServiceTypeDetailInfo.ServiceTypeSections | Object[] | Service Type Sections Information |
ServiceTypeDetailInfo.ServiceTypeSections. Label | String | Identifier for Service Type Section |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters | Object[] | Service Parameters |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Key | String | Name for Service Type |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Value | String | Value of service Type |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Message | String | Message |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.OtherInfo | Object[] | Contains additional Key, Value, Message and OtherInfo Fields if necessary |
EligibilityInquiry
Sample EligibilityInquiry Request: (POST) https://api.pverify.com/API/EligibilityInquiry
POST /api/EligibilityInquiry HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Client-Password: "[password]"
Content-Type: "application/json"
Body:
{
"payerCode": "00007",
"payerName": "Medicare",
"provider": {
"firstName": "",
"middleName": "",
"lastName": " test name",
"npi": "0000000000"
},
"subscriber": {
"firstName": "FirstName",
"middleName": "",
"dob": "01/01/1950",
"lastName": "LastName",
"memberID": "W123456789"
},
"dependent": null,
"isSubscriberPatient": "True",
"doS_StartDate": "01/24/2017",
"doS_EndDate": "01/24/2017",
"serviceCodes": [
"30"
],
"HCPCSCodes": [
"G0297"
],
"IsHMOPlan": true,
"IncludeTextResponse": true,
"referenceId": "1234",
"Location": "Nowhere"
}
Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
request.AddHeader("authorization", "Bearer " + token);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", [client-api-id]);
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\": \"W123456789\",\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 \"HCPCSCodes\": [\r\n \"G0297\"\r\n ],\r\n\r\n \"IsHMOPlan\": true,\r\n\"IncludeTextResponse\": true,\r\n\"referenceId\": \"1234\",\r\n\"Location\": \"Nowhere\"\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-API-Id", "XXX")
.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);
}
}
<?php
"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 \"HCPCSCodes\": [\r\n \"G0297\"\r\n ],\r\n \"IsHMOPlan\": true,\r\n\"IncludeTextResponse\": true,\r\n\"referenceId\": \"1234\",\r\n\"Location\": \"Nowhere\"\r\n}",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer XXX",
"Client-API-Id: 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/EligibilityInquiry
EligibilityInquiry \
-H 'authorization: Bearer ya9On51ZiIMBv...' \
-H 'Client-API-Id:XXX' \
-H 'content-type: application/json' \
-d '{
"payerCode": "00007",
"payerName": "Medicare",
"provider": {
"firstName": "",
"middleName": "",
"lastName": " test name",
"npi": "0000000000"
},
"subscriber": {
"firstName": "",
"middleName": "",
"lastName": "",
"dob": "01/01/1950",
"memberID": "W123456789"
},
"dependent": null,
"isSubscriberPatient": "True",
"doS_StartDate": "01/24/2017",
"doS_EndDate": "01/24/2017",
"serviceCodes": [
"30"
],
"HCPCSCodes": [
"G0297"
],
"IsHMOPlan": true
"IncludeTextResponse": true,
"referenceId": "1234",
"Location": "Nowhere"
}'
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,
"areAllSTCsProcessed": true,
"stCsStausMesage": "",
"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
}]
}]
}
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/EligibilityInquiry |
Production | https://api.pverify.com/API/EligibilityInquiry |
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-API-Id* | client-api-id from step one |
Content-Type | application/json |
Body | Description |
Data Params | See below and examples to the right |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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.middleName | 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. |
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.Subscriber. Identification.Name | String | Name of identification |
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 patients 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.
GetEligibilityResponse
Sample GetEligibilityResponse Request: (GET) https://api.pverify.com/API/GetEligibilityResponse/2428
GET /api/GetEligibilityResponse HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
None
Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
request.AddHeader("authorization", "Bearer " + token);
request.AddHeader("Client-API-Id", "client-api-id");
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-API-Id", "XXX")
.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);
}
}
<?php
"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",
"Client-API-Id: 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 GET \
https://api.pverify.com/API/GetEligibilityResponse/2428 \
-H 'authorization: Bearer XXX' \
-H 'Client-API-Id: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": "W123456789"
},
"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"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/GetEligibilityResponse/{id} |
Production | https://api.pverify.com/API/GetEligibilityResponse/{id} |
This GET method is similar to the Eligibility Inquiry except that it is a GET call with the Eligibility Request 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-API-Id* | Your pVerify client-api-id |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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.
EasyEligibility
EasyEligibility Sample Call: (POST) https://api.pverify.com/api/EasyEligibility
POST /api/EasyEligibility HTTP/1.1
Host: api.pverify.com
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
{
"payerCode": "00001",
"provider_lastname":"[name]",
"provider_npi": "[npi]",
"Patient_First":"[name]",
"Patient_Last":"[name]",
"memberID": "[id]",
"patient_DOB":"12/26/1976",
"date_Of_Service": "08/08/2018",
"serviceCodes":"30",
"referenceId": "",
"location": ""
}
var client = new RestClient("https://api.pverify.com/api/EasyEligibility");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "[client-api-id]");
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\":\"12/26/1976\",\r\n\"patient_first\": \"John\",\r\n\"patient_last\": \"Deo\",\r\n \r\n \"date_Of_Service\": \"08/08/2018\",\r\n\"serviceCodes\": \"30\",\r\n\"referenceId\": \"\",\r\n\"location\": \"\"\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\"patient_first\": \"John\",\r\n\"patient_last\": \"Deo\",\r\n \r\n \"date_Of_Service\": \"08/08/2018\",\r\n\"serviceCodes\": \"30\",\r\n\"referenceId\": \"\",\r\n\"location\": \"\"\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/api/EasyEligibility")
.post(body)
.addHeader("content-type", "application/json")
.addHeader("Client-API-Id", "XXX")
.addHeader("client-password", "XXX")
.build();
Response response = client.newCall(request).execute();
<?php
"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\"patient_first\": \"John\",\r\n\"patient_last\": \"Deo\",\r\n \r\n \"date_Of_Service\": \"08/08/2018\",\r\n\"serviceCodes\": \"30\",\r\n\"referenceId\": \"\",\r\n\"location\": \"\"\r\n}",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer XXXX",
"Client-API-Id: 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-API-Id: [name]" \
--header "Client-Password: [password]" \
--header "Content-Type: application/json" \
--data "{
"payerCode": "00001",
"provider_lastname": "[lastname]",
"provider_npi": "[npi]",
"memberID": "[ID]",
"patient_DOB": "[DOB]",
"patient_first": "John",
"patient_last": "Deo",
"date_Of_Service": "08/08/2018",
"serviceCodes": "30",
"referenceId": "",
"location": ""
}"
Easy Eligibility Sample Response
{
"transactionStatus": "Processed",
"transactionMessage": "",
"ediErrorMessage": null,
"eligibilityStatus": "Active",
"eligibilityResult": "[textual eligibility report]",
"referenceId": null,
"location": "[location]"
}
Environment | URL |
---|---|
Production | api.pverify.com/api/EasyEligibility |
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-API-Id* | Your pVerify client-api-id |
Body | See the data parameters to the right |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
EasyEligibility Fields
Field | Type | Description |
---|---|---|
payerCode | String | pVerify payer code |
provider_lastname | String | Provider Last Name |
provider_npi | String | NPI number of provider |
Patient_First | String | Patient First Name |
Patient_Last | String | Patient Last Name |
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. |
EasyEligibilitySummary
Easy Eligibility Summary Sample Calls: (POST) https://api.pverify.com/API/EasyEligibilitySummary
POST API/EasyEligibilitySummary HTTP/1.1
Host: api.pverify.com
Headers:
Content-Type: "application/json"
Client-Password: "[password]"
Client-API-Id: "[client-api-id]"
Body:
{
"payerCode": "00001",
"payerName": "Aetna",
"Provider_LastName": "test",
"Provider_NPI": "[npi]",
"Patient_First": "test",
"Patient_DOB": "[dob]",
"Patient_Last": "",
"memberID": "[memberid]",
"Date_Of_Service": "06/11/2019",
"ServiceCodes": "30",
"referenceId":"",
"Location":"",
"PracticeTypeCode":"18",
"IncludeTextResponse":true
}
var client = new RestClient("https://api.pverify.com/API/EasyEligibilitySummary");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-type", "application/json");
request.AddHeader("Client-Password", "XXX");
request.AddHeader("Client-API-Id", "XXX");
request.AddParameter("undefined", "{\r\n \"payerCode\": \"00001\",\r\n \"payerName\": \"Aetna\",\r\n \r\n \"Provider_LastName\": \"test\",\r\n \"Provider_NPI\": \"XXX\",\r\n\r\n \"Patient_First\": \"XXX\",\r\n \"Patient_DOB\": \"XXX\",\r\n \"Patient_Last\": \"XXX\",\r\n \"memberID\": \"XXX\",\r\n \r\n \"Date_Of_Service\": \"06/11/2019\",\r\n \"ServiceCodes\": \"30\",\r\n \r\n \r\n \"referenceId\":\"\",\r\n \"Location\":\"\",\r\n \r\n \"PracticeTypeCode\":\"18\",\r\n \"IncludeTextResponse\":true\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/octet-stream");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"payerCode\": \"00001\",\r\n \"payerName\": \"Aetna\",\r\n \r\n \"Provider_LastName\": \"test\",\r\n \"Provider_NPI\": \"XXX\",\r\n\r\n \"Patient_First\": \"XXX\",\r\n \"Patient_DOB\": \"XXX\",\r\n \"Patient_Last\": \"XXX\",\r\n \"memberID\": \"XXX\",\r\n \r\n \"Date_Of_Service\": \"06/11/2019\",\r\n \"ServiceCodes\": \"30\",\r\n \r\n \r\n \"referenceId\":\"\",\r\n \"Location\":\"\",\r\n \r\n \"PracticeTypeCode\":\"18\",\r\n \"IncludeTextResponse\":true\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/EasyEligibilitySummary")
.post(body)
.addHeader("Client-API-Id", "XXX")
.addHeader("Client-Password", "XXX")
.addHeader("Content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/EasyEligibilitySummary",
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 \"payerName\": \"Aetna\",\r\n \r\n \"Provider_LastName\": \"test\",\r\n \"Provider_NPI\": \"XXX\",\r\n\r\n \"Patient_First\": \"XXX\",\r\n \"Patient_DOB\": \"XXX\",\r\n \"Patient_Last\": \"XXX\",\r\n \"memberID\": \"XXX\",\r\n \r\n \"Date_Of_Service\": \"06/11/2019\",\r\n \"ServiceCodes\": \"30\",\r\n \r\n \r\n \"referenceId\":\"\",\r\n \"Location\":\"\",\r\n \r\n \"PracticeTypeCode\":\"18\",\r\n \"IncludeTextResponse\":true\r\n}",
CURLOPT_HTTPHEADER => array(
"Client-API-Id: XXX",
"Client-Password: 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 --request POST \
--url https://api.pverify.com/API/EasyEligibilitySummary \
--header 'Client-Password: XXX' \
--header 'Client-API-Id: XXX' \
--header 'Content-type: application/json' \
--data '{
"payerCode": "00001",
"payerName": "Aetna",
"Provider_LastName": "test",
"Provider_NPI": "XXX",
"Patient_First": "XXX",
"Patient_DOB": "XXX",
"Patient_Last": "XXX",
"memberID": "XXX",
"Date_Of_Service": "06/11/2019",
"ServiceCodes": "30",
"referenceId":"",
"Location":"",
"PracticeTypeCode":"18",
"IncludeTextResponse":true
}'
Easy Eligibility Summary Sample Response
{
"RequestID": [requestID],
"APIResponseCode": "0",
"APIResponseMessage": "Processed",
"IsPayerBackOffice": false,
"PayerName": "AETNA INC",
"VerificationType": "Dependent Verification",
"DOS": "05/08/2019 - 05/08/2019",
"ExceptionNotes": "",
"IsHMOPlan": false,
"AddtionalInfo": null,
"Location": null,
"ReferenceId": null,
"OtherPayerInfo": null,
"PlanCoverageSummary": {
"Status": "Active",
"EffectiveDate": "01/01/2019",
"ExpiryDate": null,
"PlanName": "OPEN ACCESS AETNA SELECT",
"PolicyType": "Exclusive Provider Organization",
"GroupNumber": "[group number]",
"GroupName": "DUKE UNIVERSITY",
"PlanNetworkID": null,
"PlanNetworkName": null,
"SubscriberRelationship": "Spouse",
"PlanNumber": "[plan number]",
"HRAorHSALimitationsRemaining": null
},
"PCPAuthInfoSummary": {
"PrimaryCareProviderName": null,
"PrimaryCareProviderPhoneNumber": null,
"HBPCAuthorizationInfo": null,
"UtilizationManagementOrganizationName": null,
"CapitationFacilityName": null
},
"HBPC_Deductible_OOP_Summary": {
"IndividualDeductibleInNet": "$600.00",
"IndividualDeductibleOutNet": "$600.00",
"IndividualDeductibleRemainingInNet": "$514.50",
"IndividualDeductibleRemainingOutNet": "$514.50",
"FamilyDeductibleInNet": "$1800.00",
"FamilyDeductibleOutNet": "$1800.00",
"FamilyDeductibleRemainingInNet": "$1714.50",
"FamilyDeductibleRemainingOutNet": "$1714.50",
"IndividualOOP_InNet": "$2000.00",
"IndividualOOP_OutNet": "$2000.00",
"IndividualOOPRemainingInNet": "$2000.00",
"IndividualOOPRemainingOutNet": "$2000.00",
"FamilyOOPInNet": "$6000.00",
"FamilyOOPOutNet": "$6000.00",
"FamilyOOPRemainingInNet": "$6000.00",
"FamilyOOPRemainingOutNet": "$6000.00"
},
"MedicareInfoSummary": null,
"MiscellaneousInfoSummary": {
"RemainingSpendDown": null,
"IsNPIInNetwork": null
},
"PracticeTypeSummary": {
"CoPayInNet": null,
"CoInsInNet": null,
"CoPayOutNet": null,
"CoInsOutNet": null,
"AuthorizationInfo": null,
"IndividualDeductibleInNet": null,
"IndividualDeductibleOutNet": null,
"IndividualDeductibleRemainingInNet": null,
"IndividualDeductibleRemainingOutNet": null,
"FamilyDeductibleInNet": null,
"FamilyDeductibleOutNet": null,
"FamilyDeductibleRemainingInNet": null,
"FamilyDeductibleRemainingOutNet": null,
"IndividualOOP_InNet": null,
"IndividualOOP_OutNet": null,
"IndividualOOPRemainingInNet": null,
"IndividualOOPRemainingOutNet": null,
"FamilyOOPInNet": null,
"FamilyOOPOutNet": null,
"FamilyOOPRemainingInNet": null,
"FamilyOOPRemainingOutNet": null
},
"DisclaimerMessage": null,
"DemographicInfo": {
"Subscriber": {
"Address1": null,
"Address2": null,
"City": null,
"CommunicationNumber": null,
"Date": null,
"DOB_R": null,
"Firstname": "[firstName]",
"Gender_R": "",
"Identification": [
{
"Code": "[lastName]",
"Type": "Lastname_R",
"Name": null
},
{
"Code": "[firstName]",
"Type": "Firstname",
"Name": null
},
{
"Code": "[memberId]",
"Type": "Member ID",
"Name": null
},
{
"Code": "[groupNumber]",
"Type": "Group Number",
"Name": null
},
{
"Code": "DUKE UNIVERSITY",
"Type": "Group Name",
"Name": null
}
],
"Lastname_R": "[lastname]",
"Middlename": "",
"State": null,
"Suffix": null,
"Zip": null,
"MilitaryPersonnelInfo": null,
"FullName": "[fullname]"
},
"Dependent": {
"DependentInfo": {
"Address1": "[address]",
"Address2": null,
"City": "[city]",
"CommunicationNumber": null,
"Date": [
{
"Date": "01/01/2017",
"Type": "Plan Begin"
},
{
"Date": "05/08/2019",
"Type": "Service"
},
{
"Date": "01/01/2017",
"Type": "Eligibility Begin"
}
],
"DOB_R": "[dob]",
"Firstname": "[name]",
"Gender_R": "",
"Identification": [
{
"Code": "Spouse",
"Type": "Relationship",
"Name": null
},
{
"Code": "[number]",
"Type": "Plan Number",
"Name": null
}
],
"Lastname_R": "[lastName]",
"Middlename": null,
"State": "",
"Suffix": null,
"Zip": "[zip]",
"MilitaryPersonnelInfo": null,
"FullName": "[FullName]"
},
"Relationship": "Spouse"
}
},
"ServiceTypeDetailInfo": [
{
"ServiceTypeName": "Health Benefit Plan Coverage",
"ServiceTypeSections": [
{
"Label": "",
"ServiceParameters": [
{
"Key": "Family Active Coverage (OPEN ACCESS AETNA SELECT)",
"Value": null,
"Message": null,
"OtherInfo": [
{
"Key": "Policy Type",
"Value": "Exclusive Provider Organization",
"Message": null,
"OtherInfo": null
}
]
},.............
Environment | URL |
---|---|
Production | https://api.pverify.com/API/EasyEligibilitySummary |
The Easy Eligibility Summary call is intended to generate an Eligibility Summary Response in just one step. With EasyEligibilitySummary, simply pass your credentials (no need to generate a token) and the body parameters (specified below) to return an Eligibility Summary Response in just one step.
Key | Value |
---|---|
URL | https://api.pverify.com/API/EasyEligibilitySummary |
Method | POST |
Header | Description |
Client-API-Id | pVerify client-api-id |
Client-Secret | pVerify client-secret |
Content-Type | application/json |
Body | See below |
EasyEligibilitySummary Fields
Field | Type | Description |
---|---|---|
payerCode | String | Payer Code |
payerName | String | PayerName |
Provider_LastName | String | Provider last name |
Provider_NPI | String | Provider NPI |
Patient_First | String | Patient First Name |
Patient_DOB | String | Patient Date of Birth (in format MM-DD-YYYY) |
Patient_Last | String | Patient Last Name |
memberID | String | Member ID |
Date_Of_Service | String | Date of Service (in format MM-DD-YYYY) |
ServiceCodes | String | Service Codes |
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. |
PracticeType | String | Practice Type |
IncludeTextResponse | Boolean | Boolean value to determine if text response should be included |
EasyEligibilitySummary Response Fields
Key | Type | Description |
---|---|---|
RequestID | Int | Request ID Value |
APIResponseCode | String | Response code value |
APIResponseMessage | String | Value associated with response code |
IsPayerBackOffice | Boolean | Boolean value to determine if it is a back office payer |
PayerName | String | Name of Payer |
VerificiationType | String | Type of eligibility verification |
DOS | String | Date of Service in MM/DD/YYYY |
ExceptionNotes | String | Notable exceptions returned |
IsHMOPlan | Boolean | Determines if is HMOPlan |
AdditionalInfo | String | Additional Info |
Location | String | Location |
ReferenceID | String | Reference ID |
OtherPayerInfo | String | Other Payer Info |
PlanCoverageSummary | Object | Summary of Plan coverage |
PlanCoverageSummary.Status | String | Status of Plan |
PlanCoverageSummary.EffectiveDate | String | Start date of plan coverage in MM/DD/YYYY format |
PlanCoverageSummary.ExpiryDate | String | Expiration date of plan coverage |
PlanCoverageSummary.PlanName | String | Name of plan |
PlanCoverageSummary.PolicyType | String | Policy type for plan |
PlanCoverageSummary.GroupNumber | String | Plan Group Number |
PlanCoverageSummary.GroupName | String | Plan Group Name |
PlanCoverageSummary.PlanNetworkId | String | Network Id of plan |
PlanCoverageSummary.PlanNetworkName | String | Network Name of Plan |
PlanCoverageSummary.SubscriberRelationship | String | Subscriber relationship |
PlanCoverageSummary.PlanNumber | String | Plan Number |
PlanCoverageSummary. HRAorHSALimitationsRemaining | String | Limitations Remaining |
PCPAuthInfoSummary | Object | PCP Authorization Info Summary |
PCPAuthInfoSummary.PrimaryCareProviderName | String | Primary Care Provider Name |
PCPAuthInfoSummary. PrimaryCareProviderPhoneNumber | String | Provider Phone Number |
PCPAuthInfoSummary.HBPCAuthorizationInfo | String | HBCP Authorization Info |
PCPAuthInfoSummary. UtilizationManagementOrganizationName | String | Management Org Name |
PCPAuthInfoSummary.CapitationFacilityName | String | Capitation Facility Name |
HBPC_Deductible_OOP_Summary | Object | OOP Summary for HBPC Deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleInNet | String | Individual In Net Deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleOutNet | String | Individual Deductible out of Net |
HBPC_Deductible_OOP_Summary. IndividualDeductibleRemainingInNet | String | Remaining in net deductible |
HBPC_Deductible_OOP_Summary. IndividualDeductibleRemainingOutNet | String | Remaining out net deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleInNet | String | Family In Net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleOutNet | String | Family Out Net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleRemainingInNet | String | Remaining in net Deductible |
HBPC_Deductible_OOP_Summary. FamilyDeductibleRemainingOutNet | String | Remaining out net deductible |
HBPC_Deductible_OOP_Summary. IndividualOOP_InNet | String | Individual OOP In Net |
HBPC_Deductible_OOP_Summary. IndividualOOP_OutNet | String | Individual OOP Out Net |
HBPC_Deductible_OOP_Summary. IndividualOOPRemainingInNet | String | Individual OOP Remaining In net |
HBPC_Deductible_OOP_Summary. IndividualOOPRemainingOutNet | String | Individual OOP Remaining Out Net |
HBPC_Deductible_OOP_Summary. FamilyOOPInNet | String | Family OOP in Net |
HBPC_Deductible_OOP_Summary. FamilyOOPOutNet | String | Family OOP out Net |
HBPC_Deductible_OOP_Summary. FamilyOOPRemainingInNet | String | Family OOP Remaining in Net |
HBPC_Deductible_OOP_Summary. FamilyOOPRemainingOutNet | String | Family OOP remaining out net |
MedicareInfoSummary | String | Medicare Info Summary |
PracticeTypeSummary | Object | Practice Type Summary |
PracticeTypeSummary.CoPayInNet | String | In net copay |
PracticeTypeSummary.CoInsInNet | String | In net coinsurance |
PracticeTypeSummary.CoPayOutNet | String | Out of net copay |
PracticeTypeSummary.CoInsOutNet | String | Out of net coinsurance |
PracticeTypeSummary.AuthorizationInfo | String | Authorization Info |
PracticeTypeSummary.TherapyVisitsLimitationsInNet | String | Therapy Visits Limitations in Net |
PracticeTypeSummary.TherapyVisitsLimitationsOutNet | String | Therapy Visits limitations out of net |
PracticeTypeSummary.TherapyVisitsRemainingInNet | String | Therapy visits remaining in net |
PracticeTypeSummary.TherapyVisitsRemainingOutNet | String | Therapy visits remaining out of net |
PracticeTypeSummary.TherapyAmountLimitationsInNet | String | Therapy Amount Limitations in net |
PracticeTypeSummary.TherapyAmountLimitationsOutNet | String | Therapy Amount Limitations Out of Net |
PracticeTypeSummary.TherapyAmountRemainingInNet | String | Therapy Amount Remaining in Net |
PracticeTypeSummary.TherapyAmountRemainingOutNet | String | Therapy Amount Remaining out Net |
PracticeTypeSummary. IndividualDeductibleInNet | String | Individual In Net Deductible |
PracticeTypeSummary. IndividualDeductibleOutNet | String | Individual Deductible out of Net |
PracticeTypeSummary. IndividualDeductibleRemainingInNet | String | Remaining in net deductible |
PracticeTypeSummary. IndividualDeductibleRemainingOutNet | String | Remaining out net deductible |
PracticeTypeSummary. FamilyDeductibleInNet | String | Family In Net Deductible |
PracticeTypeSummary. FamilyDeductibleOutNet | String | Family Out Net Deductible |
PracticeTypeSummary. FamilyDeductibleRemainingInNet | String | Remaining in net Deductible |
PracticeTypeSummary. FamilyDeductibleRemainingOutNet | String | Remaining out net deductible |
PracticeTypeSummary. IndividualOOP_InNet | String | Individual OOP In Net |
PracticeTypeSummary. IndividualOOP_OutNet | String | Individual OOP Out Net |
PracticeTypeSummary. IndividualOOPRemainingInNet | String | Individual OOP Remaining In net |
PracticeTypeSummary. IndividualOOPRemainingOutNet | String | Individual OOP Remaining Out Net |
PracticeTypeSummary. FamilyOOPInNet | String | Family OOP in Net |
PracticeTypeSummary. FamilyOOPOutNet | String | Family OOP out Net |
PracticeTypeSummary. FamilyOOPRemainingInNet | String | Family OOP Remaining in Net |
PracticeTypeSummary. FamilyOOPRemainingOutNet | String | Family OOP remaining out net |
DisclaimerMessage | String | Disclaimer |
DemographicInfo | Object | Demographic Info on Subscriber and Dependent |
DemographicInfo.Subscriber | Object | Demographic Info on Subscriber |
DemographicInfo.Subscriber. Address1 | String | Line one address of subscriber |
DemographicInfo.Subscriber. Address2 | String | Line two address of subscriber |
DemographicInfo.Subscriber. City | String | Subscriber city location |
DemographicInfo.Subscriber. CommunicationNumber | String | Communication Number for subscriber |
DemographicInfo.Subscriber. Date | String[] | Array of dates showing when certain events began |
DemographicInfo.Subscriber. Date.Date | String | Shows date in MM/DD/YYYY Format |
DemographicInfo.Subscriber. Date.Type | String | Significance of Date Above |
DemographicInfo.Subscriber. DOB_R | String | Date of Birth in MM/DD/YYYY |
DemographicInfo.Subscriber. FirstName | String | Subscriber First Name |
DemographicInfo.Subscriber. Gender_R | String | Subscriber Gender |
DemographicInfo.Subscriber. Identification | String[] | Series of fields related to identification of subscriber |
DemographicInfo.Subscriber. Identification.Code | String | Value associated with identification |
DemographicInfo.Subscriber. Identification.Type | String | Key associated with Value above |
DemographicInfo.Subscriber. Identification.Name | String | Name Associated with identification |
DemographicInfo.Subscriber. LastName_R | String | Last Name of Subscriber |
DemographicInfo.Subscriber. Middlename | String | Middle Name of Subscriber |
DemographicInfo.Subscriber. State | String | State of residence for subscriber |
DemographicInfo.Subscriber. Suffix | String | Subscriber suffix |
DemographicInfo.Subscriber. Zip | String | Subscriber Zip Code |
DemographicInfo.Subscriber. MilitaryPersonnelInfo | String | Military Personnel Info |
DemographicInfo.Subscriber. FullName | String | Subscriber Full Name |
DemographicInfo.Dependent | Object | Demographic Info on Dependent |
DemographicInfo.Dependent. Address1 | String | Line one address of Dependent |
DemographicInfo.Dependent. Address2 | String | Line two address of Dependent |
DemographicInfo.Dependent. City | String | Dependent city location |
DemographicInfo.Dependent. CommunicationNumber | String | Communication Number for Dependent |
DemographicInfo.Dependent. Date | String[] | Array of dates showing when certain events began |
DemographicInfo.Dependent. Date.Date | String | Shows date in MM/DD/YYYY Format |
DemographicInfo.Dependent. Date.Type | String | Significance of Date Above |
DemographicInfo.Dependent. DOB_R | String | Date of Birth in MM/DD/YYYY |
DemographicInfo.Dependent. FirstName | String | Dependent First Name |
DemographicInfo.Dependent. Gender_R | String | Dependent Gender |
DemographicInfo.Dependent. Identification | String[] | Series of fields related to identification of Dependent |
DemographicInfo.Dependent. Identification.Code | String | Value associated with identification |
DemographicInfo.Dependent. Identification.Type | String | Key associated with Value above |
DemographicInfo.Dependent. Identification.Name | String | Name Associated with identification |
DemographicInfo.Dependent. LastName_R | String | Last Name of Dependent |
DemographicInfo.Dependent. Middlename | String | Middle Name of Dependent |
DemographicInfo.Dependent. State | String | State of residence for Dependent |
DemographicInfo.Dependent. Suffix | String | Dependent suffix |
DemographicInfo.Dependent. Zip | String | Dependent Zip Code |
DemographicInfo.Dependent. MilitaryPersonnelInfo | String | Military Personnel Info |
DemographicInfo.Dependent. FullName | String | Dependent Full Name |
DemographicInfo.Relationship | String | Dependent RelationShip to Subscriber |
ServiceTypeDetailInfo | Object[] | Details Relating to Service Type |
ServiceTypeDetailInfo.ServiceTypeName | String | Name of Service Type |
ServiceTypeDetailInfo.ServiceTypeSections | Object[] | Service Type Sections Information |
ServiceTypeDetailInfo.ServiceTypeSections. Label | String | Identifier for Service Type Section |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters | Object[] | Service Parameters |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Key | String | Name for Service Type |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Value | String | Value of service Type |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.Message | String | Message |
ServiceTypeDetailInfo.ServiceTypeSections. ServiceParameters.OtherInfo | Object[] | Contains additional Key, Value, Message and OtherInfo Fields if necessary |
EligibilityResult | String | Full eligibility result of query |
GetEligibility
GetEligibility Sample Call: (GET) https://api.pverify.com/API/GetEligibility/{key}/{id}
GET API/GetEligibility/{key}/{id} HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Body:
None
}
curl --request GET \
--url https://api.pverify.com/API/GetEligibility/Status/5444 \
--header 'Authorization: Bearer XXX' \
--header 'Client-API-Id: XXX' \
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.pverify.com/API/GetEligibility/Status/5444")
.get()
.addHeader("Authorization", "Bearer XXX")
.addHeader("Client-API-Id", "XXX")
.build();
Response response = client.newCall(request).execute();
var client = new RestClient("https://api.pverify.com/API/GetEligibility/Status/5444");
var request = new RestRequest(Method.GET);
request.AddHeader("Client-API-Id", "XXX");
request.AddHeader("Authorization", "Bearer XXX");
IRestResponse response = client.Execute(request);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/GetEligibility/Status/5444",
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 XXX",
"Client-API-Id: XXX",
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Environment | URL |
---|---|
Production | https://api.pverify.com/API/GetEligibility/{key}/{id} |
GetEligiblity is a new series of endpoints that are RESTful so you can get the key you want. For example calling https://api.pverify.com/API/GetEligibility/Status/5444 after a POST using EligiblitySummary or EligiblityInquiry will get you only the status "Active".
Key | Value |
---|---|
URL | https://api.pverify.com/API/GetEligibility/{key}/{id} |
Method | GET |
Headers | Description |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id | Client User Name |
Key | Type | Description |
---|---|---|
isParsed | boolean | determines if data is parsed |
key | String | Identifier |
value | String | Information associated with identifier |
errorMessage | String | Message if error occurred |
GetPendingInquiries
GetPendingInquiries Sample Call: (GET) https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018
GET /api/GetPendingInquiries?DOS=MM-DD-YYYY HTTP/1.1
Host: api.pverify.com
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
URL Parameters:
"DOS=MM-DD-YYYY"
Body:
None
var client = new RestClient("https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018");
var request = new RestRequest(Method.GET);
request.AddHeader("Client-API-Id", "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("authorization", "Bearer " + token)
.addHeader("Client-API-Id", "XXX")
.build();
try(Response response = client.newCall(request).execute()){
pending = response.body().string();
json.convert(pending);
}
}
}
<?php
"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",
"Client-API-Id: 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 GET \
'https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018' \
-H 'authorization: Bearer XXX' \
-H 'Client-API-Id: 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"
},
]
Environment | URL |
---|---|
Production | https://api.pverify.com/API/GetPendingInquiries?DOS=01-01-2018 |
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-API-Id | Your pVerify client-api-id |
URL Parameters | Date of Service (format is MM-DD-YYYY) |
CancelTransaction
Cancel Transaction Sample Call: (POST) https://api.pverify.com/api/CancelTransaction
POST /api/CancelTransaction HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
{
"transactionId":15049658
}
var client = new RestClient("https://api.pverify.com/api/CancelTransaction");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "XXX");
request.AddParameter("undefined", "{\r\n\t\"transactionId\":15049658\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-API-Id", "client-api-id")
.build();
try(Response response = client.newCall(request).execute()){
cancel = response.body().string();
json.convert(cancel);
}
}
}
<?php
"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",
"Client-API-Id: 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 'Client-API-Id: XXX' \
-H 'content-type: application/json' \
-d '{
"transactionId":15049658
}'
Environment | URL |
---|---|
Production | https://api.pverify.com/API/CancelTransaction |
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 patients 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-API-Id* | pVerify client-api-id |
Content-Type | application/json |
Body | Description |
transactionId | Transaction ID for transaction you wish to cancel |
*Note: The Client-API-Id is required in header. Header keys are case sensitive.
Estimate Calculation
EstimateCalculation Sample Call: (POST) https://api.pverify.com/api/EstimateCalculation
POST /api/EstimateCalculation HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Content-Type: "application/json"
Client-API-Id: "[client-api-id]"
Body:
{
"zipCode": "27713",
"cptCodes":["10061","0191T", "33300"],
"coPay":"20",
"coinsPercentage":"30",
"deductibleRemaining":"40",
"outofPocketRemaining": "",
"isCopayIncludeInDeductible":false,
"isSecondryStatusActive":false,
"NonMedicareMultipleFactor":1.2
}
var client = new RestClient("https://api.pverify.com/API/CancelTransaction");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "[name]");
request.AddHeader("Authorization", "Bearer XXX");
request.AddParameter("undefined", "{\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 \"NonMedicareMultipleFactor\":1.2\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 \"NonMedicareMultipleFactor\":1.2\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-API-Id", "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;
}
}
<?php
"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 \"NonMedicareMultipleFactor\":1.2\r\n}",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer XXXX",
"Client-API-Id: 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-API-Id: XXX' \
-H 'content-type: application/json' \
-d '{
"zipCode": "27713",
"cptCodes":["10061","0191T", "33300"],
"coPay":"20",
"coinsPercentage":"30",
"deductibleRemaining":"40",
"outofPocketRemaining": "",
"isCopayIncludeInDeductible":false,
"isSecondryStatusActive":false,
"NonMedicareMultipleFactor":1.2
}'
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."
}
Environment | URL |
---|---|
Production | https://api.pverify.com/api/EstimateCalculation |
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-API-Id* | Your pVerify client-api-id |
Content-Type | application/json |
Body | Description |
Data Parameters | See fields to the right |
*Note: The Client-API-Id is required in header. Header keys are case sensitive.
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.++ |
amountPayable | Amount Payable |
selected CPTs | Selected CPT codes |
zipCode | Zip code returned |
apiResponseCode | API response code |
apiResponseMessage | API response message |
+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.
Same Or Similar API Endpoints
pVerify has two RESTful API end points to give Same or Similar HCPCS(L code) Status information,
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.
Credentials To use these calls, you will need to set up an account and be given a username & password or client-api-id & client-secret. Please contact the pVerify team for this information.
Run Same or Similar Inquiry
SameOrSimilarInquiry Sample Call: (POST) https://api.pverify.com/API/SameOrSimilarInquiry
POST API/SameOrSimilarInquiry HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
{
"memberId": "[memberid]",
"patientFirstName": "[name]",
"patientLastName": "[lastname]",
"patientDOB": "[dob]",
"patientStateCode": "NJ",
"hcpcsCodes": "L3960",
"dosStart": "[mm/dd/yyyy]",
"dosEnd": "[mm/dd/yyyy]",
"location": "location Name",
"callBackUrl": "[url]"
}
private void button2_Click(object sender, EventArgs e)
{
var apiId = "(your api id)";
var clientSecret = "(your client secret)";
Pverify.Apis.PverifyClient.Init(apiId, clientSecret);
var request = new Pverify.Apis.SOSRequest();
request.PatientFirstName = "PatientFirst";
request.PatientLastName = "PatientLast";
request.PatientDOB = "12/31/1947";
request.MemberId = "1234";
request.PatientStateCode = "CA";
request.HCPCSCodes = "E1430";
request.DOSStart = "05/14/2020";
request.DOSEnd = request.DOSStart;
var output = Pverify.Apis.SameOrSimilar.Verify(request);
System.Threading.Thread.Sleep(1000 * 60*1); // 1 min delay
var newoutput = Pverify.Apis.SameOrSimilar.GetSameOrSimilarResponse((int)output.RequestId); // long vs int
}
//Using OKHttp Client
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"memberId\": \"[memberid]\",\r\n \"patientFirstName\": \"[name]\",\r\n \"patientLastName\": \"[lastname]\",\r\n \"patientDOB\": \"[dob]\",\r\n \"patientStateCode\": \"NJ\",\r\n \"hcpcsCodes\": \"L3960\",\r\n\r\n \"dosStart\": \"[mm/dd/yyyy]\",\r\n \"dosEnd\": \"[mm/dd/yyyy]\",\r\n \"location\": \"location Name\",\r\n \"callBackUrl\": \"[url]\"\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/SameOrSimilarInquiry")
.post(body)
.addHeader("Authorization", "Bearer XXX")
.addHeader("Client-API-Id", "XXX")
.addHeader("Content-Type", "application/json")
.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_POSTFIELDS => "{\r\n \"memberId\": \"[memberid]\",\r\n \"patientFirstName\": \"[name]\",\r\n \"patientLastName\": \"[lastname]\",\r\n \"patientDOB\": \"[dob]\",\r\n \"patientStateCode\": \"NJ\",\r\n \"hcpcsCodes\": \"L3960\",\r\n\r\n \"dosStart\": \"[mm/dd/yyyy]\",\r\n \"dosEnd\": \"[mm/dd/yyyy]\",\r\n \"location\": \"location Name\",\r\n \"callBackUrl\": \"[url]\"\r\n}",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer XXX",
"Client-API-Id: 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 --request POST \
--url https://api.pverify.com/API/SameOrSimilarInquiry \
--header 'Authorization: Bearer XXX' \
--header 'Client-API-Id: XXX' \
--header 'Content-Type: application/json' \
--data '{
"memberId": "[memberid]",
"patientFirstName": "[name]",
"patientLastName": "[lastname]",
"patientDOB": "[dob]",
"patientStateCode": "NJ",
"hcpcsCodes": "L3960",
"dosStart": "[mm/dd/yyyy]",
"dosEnd": "[mm/dd/yyyy]",
"location": "location Name",
"callBackUrl": "[url]"
}'
Same or Similar Inquiry Data Parameters
{
"RequestId": 46,
"IsDataError": false,
"ErrorMessage": null,
"Claims": null,
"Message": null,
"APIResponseCode": 3,
"Status": "Pending",
"expectedTimeInSeconds":120,
"APIResponseMessage": "Inquiry Received, assigned Request ID 8000, expected response time is 2 minutes"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/SameOrSimilarInquiry |
Production | https://api.pverify.com/API/SameOrSimilarInquiry |
This endpoint submits a Same/Similar request into our queue. Note that this is not real time, and either the postback URL must be used (to submit the response to), or the GetSameOrSimilarResponse endpoint must be called with the request ID.
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-API-Id* | Your pVerify client-api-id |
Body | Description |
Data Parameters | See Right Panel |
*Note: The Client-API-Id is required in header. Header keys are case sensitive.
SameOrSimilarInquiry Request fields
Property Name | Data Type | Usage | Description |
---|---|---|---|
memberId | String | Required | Patient's member ID (MBI). |
patient.FirstName | 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 starting with A, B, E, K and L Codes supported, can sent multiple codes in same alphabetical category separated by 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. |
SameOrSimilarInquiry Response
{
"requestId": [id],
"isDataError": false,
"errorMessage": null,
"claims": null,
"message": null,
"status": "Pending",
"apiResponseCode": 3,
"apiResponseMessage": "Inquiry has been received and assigned Request Id is [id].\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. "
}
APIResponseCode Meaning
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) |
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: (GET) https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}
GET API/GetSameOrSimilarResponse/{requestId} HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
None
var client = new RestClient("https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "XXX");
request.AddHeader("Authorization", "Bearer XXX");
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}")
.get()
.addHeader("Authorization", "Bearer XXX")
.addHeader("Client-API-Id", "XXX")
.addHeader("Content-Type", "application/json")
.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_HTTPHEADER => array(
"Authorization: Bearer XXX",
"Client-API-Id: 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 --request GET \
--url 'https://api.pverify.com/API/GetSameOrSimilarResponse/{requestId}' \
--header 'Authorization: Bearer XXX' \
--header 'Client-API-Id: XXX' \
--header 'Content-Type: application/json'
GetSameOrSimilarResponse Sample Response
{
"RequestId": [id],
"Processed": true,
"IsDataError": false,
"ErrorMessage": null,
"ClaimsCount": 2,
"Claims": [
{
"Id": 0,
"HCPCS": "[hcpcs]",
"DOSStart": "01/10/2019",
"DOSEnd": null,
"Unit": "1",
"SupplierName": "[supplier]",
"Phone": "[phone]",
"Status": "Allowed",
"Message": null,
"SameOrSimilarRequestId": [id],
"CreatedOn": "0001-01-01T00:00:00",
"CategoryId": 4,
"CategoryName": "Wrist Brace"
},
{
"Id": 0,
"HCPCS": "[hcpcs]",
"DOSStart": "01/07/2019",
"DOSEnd": null,
"Unit": "1",
"SupplierName": "[supplier]",
"Phone": "[phone]",
"Status": "Allowed",
"Message": null,
"SameOrSimilarRequestId": [id],
"CreatedOn": "0001-01-01T00:00:00",
"CategoryId": 11,
"CategoryName": "Foot Orthotics(Repositioning) "
}
],
"Message": null,
"Status": "Processed",
"APIResponseCode": 0,
"APIResponseMessage": "Processed"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/GetSameOrSimilarResponse/125 |
Production | https://api.pverify.com/API/GetSameOrSimilarResponse/125 |
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-API-Id* | Your pVerify client-api-id |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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.
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(MBI). |
patient.FirstName | 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 starting with A, B, E, K and L Codes supported, can sent multiple codes in same alphabetical category separated by 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. |
Same or Similar Response Details
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 MBI or Incorrect DOB, Name etc) |
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 returned in response. |
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 MBI or Incorrect DOB or Incorrect name |
Skilled Nursing Facility
SNF Inquiry
SNFInquiry Sample Call: (POST) https://api.pverify.com/API/SNFInquiry
POST /API/SNFInquiry HTTP/1.1
Host: api.pverify.com
Authorization: Bearer 9pVZr03XItFJAsmOgV9Se...
Client-API-Id: [client-api-id]
Content-Type: application/json
{
"PayerCode":"00007",
"MemberId":"[memberID]",
"PatientFirstName":"firstName",
"PatientLastName":"lastName",
"PatientDOB":"MM/DD/YYYY",
"PatientStateCode":"TX",
"DOS":"MM/DD/YYYY",
"Location":null,
"CallbackURL":null,
"MRN":null
}
private void button3_Click(object sender, EventArgs e)
{
var apiId = "(your api id);
var clientSecret = "(client secret)";
Pverify.Apis.PverifyClient.Init(apiId, clientSecret);
var request = new Pverify.Apis.SNFRequest();
request.PayerCode = "00007"; //medicare
request.MemberId = "1234";
request.PatientFirstName = "PatientFirst";
request.PatientLastName = "PatientLast";
request.PatientDOB = "08/02/1952";
request.PatientStateCode = "SC";
request.DOS = "11/13/2019";
var output = Pverify.Apis.SNF.Verify(request);
System.Threading.Thread.Sleep(1000 * 60 * 1); // 1 min delay
var newoutput = Pverify.Apis.SNF.GetSNFResponse((int)output.RequestId);
}
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"PayerCode\":\"00007\",\n\t\"MemberId\":\"[memberID]\",\n\t\"PatientFirstName\":\"firstName\",\n\t\"PatientLastName\":\"lastName\",\n\t\"PatientDOB\":\"MM/DD/YYYY\",\n\t\"PatientStateCode\":\"TX\",\n\t\"DOS\":\"MM/DD/YYYY\",\n\t\"Location\":null,\n\t\"CallbackURL\":null,\n\t\"MRN\":null\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/SNFInquiry")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer 9fda93asadfvr3...")
.addHeader("Client-API-Id", "[client-api-id]");
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/SNFInquiry",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{\n\t\"PayerCode\":\"00007\",\n\t\"MemberId\":\"[memberID]\",\n\t\"PatientFirstName\":\"firstName\",\n\t\"PatientLastName\":\"lastName\",\n\t\"PatientDOB\":\"MM/DD/YYYY\",\n\t\"PatientStateCode\":\"TX\",\n\t\"DOS\":\"MM/DD/YYYY\",\n\t\"Location\":null,\n\t\"CallbackURL\":null,\n\t\"MRN\":null\n}",
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json"
"Authorization: Bearer 9pVZr03XItFJAsmOgV9Se..."
"Client-API-Id: [client-api-id]"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://api.pverify.com/API/SNFInquiry' \
--header 'Authorization: Bearer QO5i3...' \
--header 'Client-API-Id: [client-api-id]' \
--header 'Content-Type: application/json' \
--data-raw '{
"PayerCode":"00007",
"MemberId":"[memberID]",
"PatientFirstName":"firstName",
"PatientLastName":"lastName",
"PatientDOB":"MM/DD/YYYY",
"PatientStateCode":"TX",
"DOS":"MM/DD/YYYY",
"Location":null,
"CallbackURL":null,
"MRN":null
}'
SNFInquiry Sample Response
{
"requestId": [requestId],
"payerName": "Medicare Part A and B",
"isDataError": false,
"errorMessage": null,
"details": null,
"message": null,
"status": "Pending",
"expectedTimeInSeconds": 180,
"apiResponseCode": 3,
"apiResponseMessage": "Inquiry has been received and assigned Request Id is [requestId].\r\nExpected Response Time : 3 mins.\r\nPlease search for the results using Request Id in the search page after the expected response time is over. "
}
Environment | URL |
---|---|
Production | https://api.pverify.com/API/SNFInquiry |
The pVerify API for SNF is like Same or Similar in that it will not deliver a result instantly, instead the user is expected to call the GET method 1 minute later.
Key | Value |
---|---|
URL | https://api.pverify.com/API/SNFInquiry |
Method | POST |
Headers | Description |
Content-Type | application/json |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
Body | See Below |
SNF Codes Inquiry Body Parameters
Key | Type | Value |
---|---|---|
PayerCode | String | Payer Code |
MemberId | String | Member ID |
PatientFirstName | String | Patient First Name |
PatientLastName | String | Patient Last Name |
PatientDOB | String | Patient Date of Birth (MM/DD/YYYY) |
PatientStateCode | String | Patient State |
DOS | String | Date of Service (MM/DD/YYYY) |
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. |
CallbackURL | String | Call back URL |
MRN | String | Medical Record Number (like Same or Similar, when populated we will send the results back to this URL) - optional |
SNF Codes Inquiry Response Fields
Key | Type | Description |
---|---|---|
requestId | String | requestId |
Processed | boolean | Returns true if processed |
isDataError | boolean | Determines if data error occurred |
errorMessage | String | Error Message |
Details | Object | Details |
Details.DOSStart | String | Date of service start date (Format: MM/DD/YYYY) |
Details.DOSEnd | String | Date of service end (Format: MM/DD/YYYY) |
Details.AdmitanceDate | String | Admitance date |
Details.DischargedDate | String | Discharged date |
Details.BillingNPI | String | Billing NPI |
Details.PatientStatus | String | Patient Status |
Details.Message | String | Details Message |
Details.SNFRequestId | Int | SNF request ID |
Details.CreatedOn | String | Date and time created |
Details.BillingType | String | Billing type |
Message | String | Message |
Status | String | Status |
expectedTimeInSeconds | String | Expected time to get response (when you can call GET) |
apiResponseCode | int | API Response Code |
apiResponseMessage | String | API Response Message |
Get SNF Response
GetSNFResponse Sample Call: (GET) https://api.pverify.com/API/GetSNFResponse/{requestID}
GET /API/GetSNFResponse/{requestID} HTTP/1.1
Host: api.pverify.com
Authorization: Bearer 9pVZr03XItFJAsmOgV9Se...
Client-API-Id: [client-api-id]
Content-Type: application/json
var client = new RestClient("https://api.pverify.com/API/GetSNFResponse/124");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "[client-api-id]");
request.AddHeader("Authorization", "Bearer dUy_T_ow...");
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.pverify.com/API/GetSNFResponse/124")
.get()
.addHeader("Authorization", "Bearer dUy_T_ow...")
.addHeader("Client-API-Id", "[client-api-id]")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.pverify.com/API/GetSNFResponse/124",
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 dUy_T_ow...",
"Client-API-Id: [client-api-id]",
"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 GET \
https://api.pverify.com/API/GetSNFResponse/124 \
-H 'Authorization: Bearer dUy_T_ow...' \
-H 'Client-API-Id: [client-api-id]' \
-H 'Content-Type: application/json' \
GetSNFResponse Sample Response
{
"RequestId": 124,
"Processed": true,
"IsDataError": false,
"ErrorMessage": null,
"Details": [{
"Id": 0,
"DOSStart": "07/01/2019",
"DOSEnd": "07/31/2019",
"AdmitanceDate": "06/22/19",
"DischargedDate": "00/00/00",
"BillingNPI": "1669422275",
"PatientStatus": "Still patient ",
"Message": null,
"SNFRequestId": 124,
"CreatedOn": "2019-10-16T18:29:02.4088972+05:30",
"BillingType": "SNF Inpatient Continuing Claim"
}],
"Message": null,
"Status": "Processed",
"APIResponseCode": 0,
"APIResponseMessage": "Processed"
}
Environment | URL |
---|---|
Production | https://api.pverify.com/API/GETSNFResponse |
This GET call is intended to retrieve the SNF response initiated by the SNFInquiry POST call. By adding the requestId received in the POST call, users can retrieve the SNFInquiry Response.
Key | Value |
---|---|
URL | https://api.pverify.com/API/GETSNFResponse |
Method | GET |
Headers | Description |
Content-Type | application/json |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
Body | None |
URL Params | RequestId (see SNFInquiry) |
GetSNFResponse Response Fields
Key | Type | Description |
---|---|---|
requestId | String | requestId |
Processed | boolean | Determines if processed |
IsDataError | boolean | Determines if error occurred |
errorMessage | String | Error Message |
Details | Object | Details |
Details.Id | int | Id |
Details.DOSStart | String | Date of Service Start (MM/DD/YYYY) |
Details.DOSEnd | String | Date of Service End (MM/DD/YYYY) |
Details.AdmitanceDate | String | Admittance Date (MM/DD/YYYY) |
Details.DischargedDate | String | Discharged Date (MM/DD/YYYY) |
Details.BillingAPI | String | Billing API |
Details.PatientStatus | String | Patient Status |
Details.Message | String | Message |
Details.SNFRequestID | int | SNF request ID |
Details.CreatedOn | String | Time Stamp of date and time created |
Details.BillingType | String | Billing Type |
message | String | Message |
status | String | Status |
apiResponseCode | int | API Response Code |
apiResponseMessage | String | API Response Message |
Claim Status API Endpoints
pVerify has several RESTful APIs to give Claim Status information, given subscriber or dependent 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 Sample Call: (POST) https://api.pverify.com/API/ClaimStatusInquiry/
GET API/ClaimStatusInquiry/ HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
{
"payerCode": "code",
"ProviderLastName": "lastname",
"ProviderNPI": "npi",
"ProviderFederalTaxId": "",
"payerClaimNumber": "",
"chargeAmount": 732.87,
"serviceStartDate": "MM/DD/YYYY",
"serviceEndDate": "MM/DD/YYYY",
"subscriber": {
"FirstName": "",
"lastName": "lastname",
"dob": "MM/DD/YYYY",
"memberID": "memberID"
},
"isPatientDependent": false
}
var client = new RestClient("https://api.pverify.com/API/ClaimStatusInquiry");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "client-api-id");
request.AddHeader("Authorization", "Bearer HLuroc8JQgxvURtcRWGzXfZvYT0BXL56LC-...");
request.AddParameter("undefined", "{\r\n \"payerCode\": \"code\", \r\n \"ProviderLastName\": \"lastname\",\r\n \"ProviderNPI\": \"npi\", \r\n \"ProviderFederalTaxId\": \"\",\r\n \"payerClaimNumber\": \"\",\r\n \"chargeAmount\": 732.87,\r\n \"serviceStartDate\": \"MM/DD/YYYY\",\r\n \"serviceEndDate\": \"MM/DD/YYYY\",\r\n \"subscriber\": {\r\n \"FirstName\": \"\",\r\n \"lastName\": \"lastname\",\r\n \"dob\": \"MM/DD/YYYY\", \r\n \"memberID\": \"memberID\" \r\n },\r\n \"isPatientDependent\": false\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"payerCode\": \"code\", \r\n \"ProviderLastName\": \"lastname\",\r\n \"ProviderNPI\": \"npi\", \r\n \"ProviderFederalTaxId\": \"\",\r\n \"payerClaimNumber\": \"\",\r\n \"chargeAmount\": 732.87,\r\n \"serviceStartDate\": \"MM/DD/YYYY\",\r\n \"serviceEndDate\": \"MM/DD/YYYY\",\r\n \"subscriber\": {\r\n \"FirstName\": \"\",\r\n \"lastName\": \"lastname\",\r\n \"dob\": \"MM/DD/YYYY\", \r\n \"memberID\": \"memberID\" \r\n },\r\n \"isPatientDependent\": false\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/ClaimStatusInquiry")
.post(body)
.addHeader("Authorization", "Bearer HLuroc8JQgxvURtcRWGzXfZvYT0BXL56LC-...")
.addHeader("Client-API-Id", "client-api-id")
.addHeader("Content-Type", "application/json")
.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\": \"code\", \r\n \"ProviderLastName\": \"lastname\",\r\n \"ProviderNPI\": \"npi\", \r\n \"ProviderFederalTaxId\": \"\",\r\n \"payerClaimNumber\": \"\",\r\n \"chargeAmount\": 732.87,\r\n \"serviceStartDate\": \"MM/DD/YYYY\",\r\n \"serviceEndDate\": \"MM/DD/YYYY\",\r\n \"subscriber\": {\r\n \"FirstName\": \"\",\r\n \"lastName\": \"lastname\",\r\n \"dob\": \"MM/DD/YYYY\", \r\n \"memberID\": \"memberID\" \r\n },\r\n \"isPatientDependent\": false\r\n}",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer HLuroc8JQgxvURtcRWGzXfZvYT0BXL56LC-...",
"Client-API-Id: client-api-id",
"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 --request POST \
--url https://api.pverify.com/API/ClaimStatusInquiry \
--header 'Authorization: Bearer HLuroc8JQgxvURtcRWGzXfZvYT0BXL56LC-...' \
--header 'Client-API-Id: client-api-id' \
--header 'Content-Type: application/json' \
--data '{
"payerCode": "code",
"ProviderLastName": "lastname",
"ProviderNPI": "npi",
"ProviderFederalTaxId": "",
"payerClaimNumber": "",
"chargeAmount": 732.87,
"serviceStartDate": "MM/DD/YYYY",
"serviceEndDate": "MM/DD/YYYY",
"subscriber": {
"FirstName": "",
"lastName": "lastname",
"dob": "MM/DD/YYYY",
"memberID": "memberID"
},
"isPatientDependent": false
}'
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": {
"FirstName": "[first name]",
"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": {
"FirstName": "[firstname]",
"lastName": "last name XXXXXX",
"memberID": "AxCXXXXXXXXXXXXXXX"
},
"isPatientDependent": true,
"dependent":{
"FirstName": "[first name]",
"lastName": "last name XXXXXX",
"dob": "MM/dd/yyyy"
}
}
ClaimStatusInquiry Sample Response
{
"requestId": [id],
"payerClaimNo": "[claimNo]",
"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": "[phone]"
}
},
"providerInfo": {
"type": "Provider",
"name": null,
"qualifier": "National Provider Identifier",
"id": "[id]",
"firstName": null,
"middleName": null
},
"subscriber": {
"type": "Subscriber",
"name": "CULBERTSON",
"qualifier": "Member Identification Number",
"id": "[id]",
"firstName": null,
"middleName": null
},
"dependent": null,
"claimStatuses": [{
"otherIndentificationInfo": [{
"qualifier": "Payor;s Claim Number",
"id": "1807XXXXXXXXXXXX902",
"description": null
},
{
"qualifier": "Billing Type",
"id": "111",
"description": null
},
{
"qualifier": "Patient Account Number",
"id": "2118XXXXXXXXXX3500",
"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": "16072XXXXXXXXXX1679"
},
"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"
}]
}
],
"dates": [{
"qualifier": "Service",
"value": "07/11/2018 - 07/15/2018"
}]
}
],
"fileControlNumber": null,
"apiResponseCode": 0,
"apiResponseMessage": "Processed"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/ClaimStatusInquiry |
Production | https://api.pverify.com/API/ClaimStatusInquiry |
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 | https://api.pverify.com/API/ClaimStatusInquiry |
Method | POST |
Headers | Description |
Content-Type | application/json |
Authorization | Bearer XXX |
Client-API-Id* | client-api-id provided by pVerify |
Body | See right |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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 |
ProviderNPI | String | Conditional | 10-digit NPI value (Not required when ProviderFederalTaxId is available) |
ProviderFederalTaxId | String | Conditional | 9 - digit Federal Tax Id (EIN) (not required when NPI is available) |
payerClaimNumber | String | Conditional | Payer claim number |
chargeAmount | String | Yes | Charge Amount |
serviceStartDate | 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.FirstName | String | Conditional | Subscriber first name |
subscriber.lastName | String | Conditional | Subscriber last name |
subscriber.dob | String | Conditional | Subscriber Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000) |
subscriber.memberID | String | Conditional | 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 |
ProviderNPI | String | Conditional | 10-digit NPI value (Not required when ProviderFederalTaxId is available) |
ProviderFederalTaxId | String | Conditional | 9 - digit Federal Tax Id (EIN) (not required when NPI is available) |
payerClaimNumber | String | Conditional | Payer claim number |
chargeAmount | String | Yes | Charge Amount |
serviceStartDate | 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.FirstName | String | Conditional | Subscriber first name |
subscriber.lastName | String | Conditional | Subscriber last name |
subscriber.dob | String | Conditional | Subscriber Date of Birth (Expected format: MM/dd/YYYY ie 01/01/2000) |
subscriber.memberID | String | Conditional | Member ID of subscriber |
isPatientDependent | boolean | No | Determines if the patient is dependent |
dependent | Object | Conditional | Dependent demographic information |
dependent.FirstName | String | Conditional | Dependent first name |
dependent.lastName | String | Conditional | 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: (GET) https://api.pverify.com/API/GetClaimStatusResponse/{requestId}
GET /API/GetClaimStatusResponse/{requestId} HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
URL Parameters: Request ID
Body:
None
var client = new RestClient("https://api.pverify.com/API/GetClaimStatusResponse/{requestId}");
var request = new RestRequest(Method.GET);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer XXX");
request.AddHeader("Client-API-Id", "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-API-Id", "XXX")
.addHeader("Authorization", "Bearer XXX")
.addHeader("Content-Type", "application/json")
.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-API-Id: 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 --request GET \
--url 'https://api.pverify.com/API/GetClaimStatusResponse/{requestId}' \
--header 'Authorization: Bearer XXX' \
--header 'Client-API-Id: XXX' \
--header 'Content-Type: application/json' \
ClaimStatusInquiry Sample Response
{
"requestId": [id],
"payerClaimNo": "[claimNo]",
"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": "[phone]"
}
},
"providerInfo": {
"type": "Provider",
"name": null,
"qualifier": "National Provider Identifier",
"id": "[id]",
"firstName": null,
"middleName": null
},
"subscriber": {
"type": "Subscriber",
"name": "CULBERTSON",
"qualifier": "Member Identification Number",
"id": "[id]",
"firstName": null,
"middleName": null
},
"dependent": null,
"claimStatuses": [{
"otherIndentificationInfo": [{
"qualifier": "Payor;s Claim Number",
"id": "1807XXXXXXXXXXXX902",
"description": null
},
{
"qualifier": "Billing Type",
"id": "111",
"description": null
},
{
"qualifier": "Patient Account Number",
"id": "2118XXXXXXXXXX3500",
"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": "16072XXXXXXXXXX1679"
},
"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"
}]
}
],
"dates": [{
"qualifier": "Service",
"value": "07/11/2018 - 07/15/2018"
}]
}
],
"fileControlNumber": null,
"apiResponseCode": 0,
"apiResponseMessage": "Processed"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/GetClaimStatusResponse/{requestId} |
Production | https://api.pverify.com/API/GetClaimStatusResponse/{requestId} |
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 | https://api.pverify.com/API/GetClaimStatusResponse/{requestId} |
Method | GET |
Headers | Description |
Authorization | Bearer XXX |
Client-API-Id | client-api-id provided through pVerify |
Content-Type | application/json |
URL Parameters | Unique Request id |
Data Parameters | None |
A successful GetClaimStatusResponse call will have the same format as the ClaimStatusInquiry response (above).
Patient payment
Patient payment new Request
Sample Patient payment new Request: (POST) https://premium.pverify.com/PatientPaymentReq/NewReq
POST /PatientPaymentReq/NewReq HTTP/1.1
Host: premium.pverify.com
Headers:
Content-Type: "application/json"
ClientSecret : "[client-secret]"
ClientApiId : "[client-api-id]"
Body:
{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo"
}
var client = new RestClient("https://premium.pverify.com/PatientPaymentReq/NewReq");
client.Timeout = -1;var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("ClientApiId", "your-api-id");
request.AddHeader("ClientSecret", "your-secret");
request.AddParameter("application/json", "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"12.0\",\r\n \"Memo\": \"test memo\"\r\n \r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"12.0\",\r\n \"Memo\": \"test memo\"\r\n \r\n}");
Request request = new Request.Builder()
.url("https://premium.pverify.com/PatientPaymentReq/NewReq")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.addHeader("ClientApiId", "your-api-id")
.addHeader("ClientSecret", "your-secret")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://premium.pverify.com/PatientPaymentReq/NewReq',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'ClientApiId: your-api-id',
'ClientSecret: your-secret'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://premium.pverify.com/PatientPaymentReq/NewReq' \
--header 'Content-Type: application/json' \
--header 'ClientSecret: your-secret' \
--header 'ClientApiId: [your-api-id]' \
--data-raw '{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo"
}'
Sample Success Response
{
"URL": "https://premium.pverify.com/PatientPaymentReq/PayNow?ReqGuid=22138693-7d07-4920-96d8-114d3c3edfec",
"GUID": "22138693-7d07-4920-96d8-114d3c3edfec"}
Patient payment new Request by SMS
Sample Patient payment new Request by SMS: (POST) https://premium.pverify.com/PatientPaymentReq/NewReqBySMS
POST /PatientPaymentReq/NewReqBySMS HTTP/1.1
Host: premium.pverify.com
Headers:
Content-Type: "application/json"
ClientSecret : "[client-secret]"
ClientApiId : "[client-api-id]"
Body:
{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo",
"MobileNo":"732-XXX-XXXX"
}
var client = new RestClient("https://premium.pverify.com/PatientPaymentReq/NewReqBySMS");
client.Timeout = -1;var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("ClientApiId", "A541d285-2f1e-4939-aQ94-c0565201b104");
request.AddHeader("ClientSecret", "BSFgbpWIeYpq7sZhyonCRlJRnRwQQ");
request.AddParameter("application/json", "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"12.0\",\r\n \"Memo\": \"test memo\",\r\n \"MobileNo\":\"732-664-8423\"\r\n \r\n }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"101\",\r\n \"Memo\": \"test memo\",\r\n \"MobileNo\":\"732-664-8423\"\r\n \r\n}");
Request request = new Request.Builder()
.url("https://premium.pverify.com/PatientPaymentReq/NewReqBySMS")
.method("POST", body)
.addHeader("ClientApiId", "9d83a421-a368-43bd-8996-48697a28ba56")
.addHeader("ClientSecret", "pPgUTMfCChYsGUpNpO8dSxT4YxysA")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://mvctest.pverify.com/PatientPaymentReq/NewReqBySMS',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "101",
"Memo": "test memo",
"MobileNo":"732-664-8423"
}',
CURLOPT_HTTPHEADER => array(
'ClientApiId: 9d83a421-a368-43bd-8996-48697a28ba56',
'ClientSecret: pPgUTMfCChYsGUpNpO8dSxT4YxysA',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://premium.pverify.com/PatientPaymentReq/NewReqBySMS' \
--header 'Content-Type: application/json' \
--header 'ClientSecret: your-secret' \
--header 'ClientApiId: [your-api-id]' \
--data-raw '{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo",
"MobileNo":"732-XXX-XXXX"
}'
Sample Success Response
{
"GUID": "22138693-XXXX-XXXX-96d8-114d3c3edfec"
}
Patient payment new Request by Email
Sample Patient payment new Request by Email: (POST) https://premium.pverify.com/PatientPaymentReq/NewReqByEmail
POST /PatientPaymentReq/NewReqByEmail HTTP/1.1
Host: premium.pverify.com
Headers:
Content-Type: "application/json"
ClientSecret : "[client-secret]"
ClientApiId : "[client-api-id]"
Body:
{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo",
"Email":"test@test.com"
}
var client = new RestClient("https://premium.pverify.com/PatientPaymentReq/NewReqByEmail");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("ClientApiId", "A541d285-2f1e-4939-aQ94-c0565201b104");
request.AddHeader("ClientSecret", "BSFgbpWIeYpq7sZhyonCRlJRnRwQQ");
request.AddParameter("application/json", "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"12.0\",\r\n \"Memo\": \"test memo\",\r\n \"Email\":\"test@test.com\"\r\n \r\n }", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \r\n \"FirstName\": \"FirstName\",\r\n \"LastName\": \"lastname\",\r\n \"DOB\": \"05/21/1988\",\r\n \"MRN\": \"1\",\r\n \"PayFor\": \"Copay\",\r\n \"DOS\": \"05/12/2020\",\r\n \"Amount\": \"12.0\",\r\n \"Memo\": \"test memo\",\r\n \"Email\":\"anis@anisinfotech.com\"\r\n \r\n}");
Request request = new Request.Builder()
.url("https://premium.pverify.com/PatientPaymentReq/NewReqByEmail")
.method("POST", body)
.addHeader("ClientApiId", "9d83a421-a368-43bd-8996-48697a28ba56")
.addHeader("ClientSecret", "pPgUTMfCChYsGUpNpO8dSxT4YxysA")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://premium.pverify.com/PatientPaymentReq/NewReqByEmail',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo",
"Email":"anis@anisinfotech.com"
}',
CURLOPT_HTTPHEADER => array(
'ClientApiId: 9d83a421-a368-43bd-8996-48697a28ba56',
'ClientSecret: pPgUTMfCChYsGUpNpO8dSxT4YxysA',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://premium.pverify.com/PatientPaymentReq/NewReqByEmail' \
--header 'Content-Type: application/json' \
--header 'ClientSecret: your-secret' \
--header 'ClientApiId: [your-api-id]' \
--data-raw '{
"FirstName": "FirstName",
"LastName": "lastname",
"DOB": "05/21/1988",
"MRN": "1",
"PayFor": "Copay",
"DOS": "05/12/2020",
"Amount": "12.0",
"Memo": "test memo",
"Email":"test@test.com"
}'
Sample Success Response
{
"GUID": "22138693-XXXX-XXXX-96d8-114d3c3edfec"
}
Patient payment status
Sample Patient payment status: (POST) https://premium.pverify.com/PatientPaymentReq/status
POST /PatientPaymentReq/status HTTP/1.1
Host: premium.pverify.com
Headers:
Content-Type: "application/json"
ClientSecret : "[client-secret]"
ClientApiId : "[client-api-id]"
Body:
{
"ReqGuid": "1e4809f8-XXXX-XXXX-85fb-3efef636b864"
}
var client = new RestClient("https://premium.pverify.com/PatientPaymentReq/status");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("ClientApiId", "A541d285-2f1e-4939-aQ94-c0565201b104");
request.AddHeader("ClientSecret", "BSFgbpWIeYpq7sZhyonCRlJRnRwQQ");
request.AddParameter("application/json", "{ \r\n \"ReqGuid\": \"39816548-XXXX-XXXX-a2bf-ba6483b13554\"\r\n}", ParameterType.RequestBody);IRestResponse response = client.Execute(request);
IRestResponse response = client.Execute(request)
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{ \r\n \"ReqGuid\": \"73289ed6-XXXX-XXXX-9e61-7e0bfdd02c65\"\r\n}");
Request request = new Request.Builder()
.url("https://premium.pverify.com/PatientPaymentReq/status")
.method("POST", body)
.addHeader("ClientApiId", "9d83a421-a368-43bd-8996-48697a28ba56")
.addHeader("ClientSecret", "pPgUTMfCChYsGUpNpO8dSxT4YxysA")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://premium.pverify.com/PatientPaymentReq/status',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"ReqGuid": "73289ed6-XXXX-XXXX-9e61-7e0bfdd02c65"
}',
CURLOPT_HTTPHEADER => array(
'ClientApiId: 9d83a421-a368-43bd-8996-48697a28ba56',
'ClientSecret: pPgUTMfCChYsGUpNpO8dSxT4YxysA',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://premium.pverify.com/PatientPaymentReq/status' \
--header 'Content-Type: application/json' \
--header 'ClientSecret: your-secret' \
--header 'ClientApiId: [your-api-id]' \
--data-raw '{
"ReqGuid": "1e4809f8-XXXX-XXXX-85fb-3efef636b864"
}'
Sample Success Response
{
"Status": "Pending",
"TransactionID": "0",
"PaidDate": ""
}
Patient payment cancel
Sample Patient payment cancel: (POST) https://premium.pverify.com/PatientPaymentReq/cancel
POST /PatientPaymentReq/cancel HTTP/1.1
Host: premium.pverify.com
Headers:
Content-Type: "application/json"
ClientSecret : "[client-secret]"
ClientApiId : "[client-api-id]"
Body:
{
"ReqGuid": "1e4809f8-XXXX-XXXX-85fb-3efef636b864"
}
var client = new RestClient("https://premium.pverify.com/PatientPaymentReq/cancel");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("ClientApiId", "A541d285-2f1e-4939-aQ94-c0565201b104");
request.AddHeader("ClientSecret", "BSFgbpWIeYpq7sZhyonCRlJRnRwQQ");
request.AddParameter("application/json", "{ \r\n \"ReqGuid\": \"39816548-787e-46dd-a2bf-ba6483b13554\"\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \r\n \"ReqGuid\": \"73289ed6-a31f-4844-9e61-7e0bfdd02c65\" \r\n}");
Request request = new Request.Builder()
.url("https://premium.pverify.com/PatientPaymentReq/cancel")
.method("POST", body)
.addHeader("ClientApiId", "9d83a421-a368-43bd-8996-48697a28ba56")
.addHeader("ClientSecret", "pPgUTMfCChYsGUpNpO8dSxT4YxysA")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://premium.pverify.com/PatientPaymentReq/cancel',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"ReqGuid": "73289ed6-a31f-4844-9e61-7e0bfdd02c65"
}',
CURLOPT_HTTPHEADER => array(
'ClientApiId: 9d83a421-a368-43bd-8996-48697a28ba56',
'ClientSecret: pPgUTMfCChYsGUpNpO8dSxT4YxysA',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://premium.pverify.com/PatientPaymentReq/cancel' \
--header 'Content-Type: application/json' \
--header 'ClientSecret: your-secret' \
--header 'ClientApiId: [your-api-id]' \
--data-raw '{
"ReqGuid": "1e4809f8-XXXX-XXXX-85fb-3efef636b864"
}'
Sample Success Response
{
"Message": "Success"
}
CGX Endpoints
pVerify has two RESTful API end points to provide CGX information, The workflow is: 1) Get Token via Token call, 2) Call CGXInquiry and pass the token along with demographic information.
Note** : Same Token can be used in subsequent inquiries.
Run CGX Inquiry
CGXInquiry Sample Call: (POST) https://api.pverify.com/API/CGXInquiry
POST /API/CGXInquiry HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer xxx...."
Client-API-Id: "xxx"
Content-Type: "application/json"
Body:
{
"PayerMapCode":"00001",
"MemberId":"W231754003",
"PatientFirstName":"John",
"PatientLastName":"Deo",
"PatientDOB":"06/17/1974",
"Location":"CA",
"AppointmentTypeId":53,
"MRN":null
}
private void button4_Click(object sender, EventArgs e)
{
var client = new RestClient("https://api.pverify.com/API/CGXInquiry");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer xxx");
request.AddHeader("Client-API-Id", "xxx");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\r\n \"PayerMapCode\":\"00001\",\r\n \"MemberId\":\"W231754003\",\r\n \"PatientFirstName\":\"John\",\r\n \"PatientLastName\":\"Deo\",\r\n \"PatientDOB\":\"06/17/1974\",\r\n \"Location\":\"CA\",\r\n \"AppointmentTypeId\":53,\r\n \"MRN\":null\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n \"PayerMapCode\":\"00001\",\r\n \"MemberId\":\"W231754003\",\r\n \"PatientFirstName\":\"John\",\r\n \"PatientLastName\":\"Deo\",\r\n \"PatientDOB\":\"06/17/1974\",\r\n \"Location\":\"CA\",\r\n \"AppointmentTypeId\":53,\r\n \"MRN\":null\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/CGXInquiry")
.method("POST", body)
.addHeader("Authorization", "Bearer XXX")
.addHeader("Client-API-Id", "XXX")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pverify.com/API/CGXInquiry',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"PayerMapCode":"00001",
"MemberId":"123456789A",
"PatientFirstName":"JOHN",
"PatientLastName":"DEO",
"PatientDOB":"06/17/1974",
"Location":"CA",
"AppointmentTypeId":53,
"MRN":null
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer XXX',
'Client-API-Id: XXX',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location --request POST 'https://api.pverify.com/API/CGXInquiry' \
--header 'Authorization: Bearer XXX' \
--header 'Client-API-Id: XXX' \
--header 'content-type: application/json' \
--data-raw '{
"PayerMapCode":"00001",
"MemberId":"123456789A",
"PatientFirstName":"JOHN",
"PatientLastName":"DEO",
"PatientDOB":"06/18/2000",
"Location":"CA",
"AppointmentTypeId":53,
"MRN":null
}
'
CGXInquiry Successful Response
{
"requestId": 46,
"isDataError": false,
"errorMessage": null,
"detailResponse": {
"elgStatus": "Active",
"preAuthStatus": null,
"paFrom": null,
"locationName": null,
"cptCode": null,
"co_ins_Percentage": "10",
"co_Pay": "30.00",
"deductible_remaining": "120.00",
"out_of_Pocket_remaining": "0.00",
"esitmatedAllowable": "0.00",
"estimatedPatientResponsibility": "0.00",
"amountPayable": "0.00"
},
"message": null,
"status": "Processed",
"apiResponseCode": 0,
"apiResponseMessage": "Processed"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/CGXInquiry/ |
Production | https://api.pverify.com/API/CGXInquiry/ |
Field | Description |
---|---|
URL | https://api.pverify.com/API/CGXInquiry/ |
Method | POST |
Headers | Description |
Content-Type | application/json |
Authorization | Bearer XXX |
Client-API-Id | client-api-id provided through pVerify |
URL Parameters | None |
Data Parameters | See Below |
Data Parameters
Field | Description |
---|---|
PayerMapCode* | Payer Code |
MemberId* | Patient Member ID |
PatientFirstName* | First Name |
PatientLastName* | Last Name |
PatientDOB* | Date of Birth (MM/DD/YYYY) |
Location | Location name |
AppointmentTypeId | Appointment Type Id which is given by pVerify |
MRN | MRN |
- = required
Response Fields
Field | DataType | Description |
---|---|---|
RequestId | Int | Request ID |
IsDataError | Bit | Either response contains any vanlidation error |
ErrorMessage | String | Error Message |
Status | String | Status of inquiry |
DetailResponse.ElgStatus | String | Patient Eligibility Status |
DetailResponse.PreAuthStatus | String | Preauth Status |
DetailResponse.PaFrom | String | PAForm |
DetailResponse.LocationName | String | Patient Location Name |
DetailResponse.CptCode | String | CPT codes |
DetailResponse.Co_Ins_Percentage | String | CoInsurance value |
DetailResponse.Co_Pay | String | Copay value |
DetailResponse.Deductible_Remaining | String | Deductible Remaining value |
DetailResponse.Out_of_Pocket_remaining | String | OOP Remaining value |
DetailResponse.EsitmatedAllowable | String | Estimated allowable amount |
DetailResponse.EstimatedPatientResponsibility | Estimatied patient responsibility | |
DetailResponse.AmountPayable | String | Amount payable by patient |
Message | String | |
APIResponseCode | Int | APIResponseCode |
APIResponseMessage | String | APIResponseMessage |
Click to view the API Response Codes Table
Create Widget
pVerify’s Widgets
1) Currently, pVerify has two widgets. First is Estimation (previously known as CGX) and another is Eligibility. 2).We have designed a widget with the ability, so that clients can integrate it in their websites using iframe. 3).https://sample.pverify.com/ This sample page is designed to demonstrate the integration of our widgets into client websites. 4).https://sample.pverify.com/ This sample page is using Google reCAPTCHA v3, to prevent spam and other types of automated abuse, but clients can go with a different approach like giving access to logged in users only.
Steps to integrate widget using iframe
CGXWidget Sample Call: (POST) https://premium.pverify.com/Widget/Setup
Step 1 - Generate setupId to load widget in iframe
SetupId will be required to load the widget in iframe. SetupId can be generated using Client ID and Client Secret. To generate SetupId, pass Client ID and Client Secret to following endpoint [POST] https://premium.pverify.com/Widget/Setup e.g. { "clientApiId":"xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx", "clientSecret":"xxxxxxxxxxxxxxx" }
It will generate a SetupId something like this “483ca408-9935-4a6b-8a5f-50ac6099b27x”.
Step 2 - Load iframe with following URL with setupId If you want to integrate Estimation widget, then set URL of iframe as shown below https://premium.pverify.com/Component/EstimateInquiry?SetupId=setupId
If you want to integrate Eligibility widget, then set URL of iframe as shown below https://premium.pverify.com/Component/ElgInquiry?SetupId=setupId
Details about SetupId 1.Need to generate SetupId for each transaction 2.SetupId is valid for 10 mins (as per current settings)
CMN
pVerify has two RESTful API end points to give CMN (A,B,E or K codes) Status information,
This workflow is:
1) Get Token via Token call,
2) Call CMNInquiry 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.
The JSON Viewer URL
Credentials To use these calls, you will need to set up an account and be given a username & password or client-api-id & client-secret. Please contact the pVerify team for this information.
Run CMN Inquiry
CMNInquiry Sample Call: (POST) https://api.pverify.com/API/CMNInquiry
POST /API/CMNInquiry HTTP/1.1
Host: api.pverify.com
Authorization: Bearer xxx
Client-API-Id: [client-api-id]
Content-Type: application/json
{
"memberId": "123456789A",
"patientFirstName": "John",
"patientLastName": "deo",
"patientDOB": "10/07/2000",
"patientStateCode": "CA",
"hcpcsCode": "E0784",
"dosStart": "12/09/2020",
"dosEnd": "12/09/2020", "requestSource": "API",
"location": "Test",
"callBackUrl":"http://www.test.com/api/PostData"
}
curl --location --request POST 'https://api.pverify.com/API/CMNInquiry' \
--header 'Authorization: Bearer xxx' \
--header 'Content-Type: application/json' \
--header 'Client-API-Id: client-api-id' \
--data-raw '{
"memberId": "123456789A",
"patientFirstName": "John",
"patientLastName": "deo",
"patientDOB": "10/07/2000",
"patientStateCode": "CA",
"hcpcsCode": "E0784",
"dosStart": "12/09/2020",
"dosEnd": "12/09/2020", "requestSource": "API",
"location": "Test",
"callBackUrl":"http://www.test.com/api/PostData"
}'
var client = new RestClient("https://api.pverify.com/API/CMNInquiry");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer xxx");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Client-API-Id", "client-api-id");
request.AddParameter("application/json", "{\r\n\"memberId\": \"123456789A\",\r\n\"patientFirstName\": \"John\",\r\n\"patientLastName\": \"deo\",\r\n\"patientDOB\": \"10/07/2000\",\r\n\"patientStateCode\": \"CA\",\r\n\"hcpcsCode\": \"E0784\",\r\n\"dosStart\": \"12/09/2020\", \r\n\"dosEnd\": \"12/09/2020\", \"requestSource\": \"API\",\r\n \"location\": \"Test\",\r\n\"callBackUrl\":\"http://www.test.com/api/PostData\"\r\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pverify.com/API/CMNInquiry',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"memberId": "123456789A",
"patientFirstName": "John",
"patientLastName": "deo",
"patientDOB": "10/07/2000",
"patientStateCode": "CA",
"hcpcsCode": "E0784",
"dosStart": "12/09/2020",
"dosEnd": "12/09/2020", "requestSource": "API",
"location": "Test",
"callBackUrl":"http://www.test.com/api/PostData"
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ',
'Content-Type: application/json',
'Client-API-Id: xxx',
'Cookie: GCLB=CKn1yJDB0__pRA'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\r\n\"memberId\": \"123456789A\",\r\n\"patientFirstName\": \"John\",\r\n\"patientLastName\": \"deo\",\r\n\"patientDOB\": \"10/07/2000\",\r\n\"patientStateCode\": \"CA\",\r\n\"hcpcsCode\": \"E0784\",\r\n\"dosStart\": \"12/09/2020\", \r\n\"dosEnd\": \"12/09/2020\", \"requestSource\": \"API\",\r\n \"location\": \"Test\",\r\n\"callBackUrl\":\"http://www.test.com/api/PostData\"\r\n}");
Request request = new Request.Builder()
.url("https://api.pverify.com/API/CMNInquiry")
.method("POST", body)
.addHeader("Authorization", "Bearer xxx")
.addHeader("Content-Type", "application/json")
.addHeader("Client-API-Id", "xxx)
.addHeader("Cookie", "GCLB=CKn1yJDB0__pRA")
.build();
Response response = client.newCall(request).execute();
CMN Data Parameters
{
"memberId": "123456789A",
"patientFirstName": "John",
"patientLastName": "deo",
"patientDOB": "10/07/2000",
"patientStateCode": "CA",
"hcpcsCode": "E0784",
"dosStart": "12/09/2020",
"dosEnd": "12/09/2020", "requestSource": "API",
"location": "Test",
"callBackUrl":"http://www.test.com/api/PostData"
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/CMNInquiry |
Production | https://api.pverify.com/API/CMNInquiry |
This endpoint submits a Same/Similar request into our queue. Note that this is not real time, and either the postback URL must be used (to submit the response to), or the GetSameOrSimilarResponse endpoint must be called with the request ID.
Key | Value |
---|---|
URL | https://api.pverify.com/API/CMNInquiry |
Method | POST |
Headers | Description |
Content-Type | application/json |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
Body | Description |
Data Parameters | See Right Panel |
*Note: The Client-API-Id is required in header. Header keys are case sensitive.
CMNInquiry Request fields
Property Name | Data Type | Usage | Description |
---|---|---|---|
memberId | String | Required | Patient's member ID (HICN). |
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. |
hcpcsCode | 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 | to Post response data on client side |
CMNInquiry Response
{
"requestId": 8,
"status": "Pending",
"isDataError": false,
"errorMessage": null,
"certificatesCount": 0,
"certificates": null,
"message": null,
"rentalsDescription": null,
"expectedTimeInSeconds": null,
"apiResponseCode": 3,
"apiResponseMessage": "Inquiry has been received and assigned Request Id is 8.\r\nSystems are currently not available.Please search for results after 6:00 AM CT in Search Page using the Request ID "
}
APIResponseCode Meaning
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) |
** 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 CMN API always returns API response code as 3 (pending)
Get CMN Response Using Unique Request ID
GetCMNResponse Sample Call: (GET) https://api.pverify.com/API/GetCMNResponse/{requestId}
GET API/GetCMNResponse/{requestId} HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
None
var client = new RestClient("https://api.pverify.com/API/GetCMNResponse/8");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer 'xxx');
request.AddHeader("Client-API-Id", "client-api-id");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Cookie", "GCLB=CPjflI-2xr6QmQE");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
Request request = new Request.Builder()
.url("https://api.pverify.com/API/GetCMNResponse/8")
.method("GET", null)
.addHeader("Authorization", "Bearer 'xxx')
.addHeader("Client-API-Id", "client-api-id")
.addHeader("Content-Type", "application/json")
.addHeader("Cookie", "GCLB=CPjflI-2xr6QmQE")
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.pverify.com/API/GetCMNResponse/8',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer xxx',
'Client-API-Id: client-api-id',
'Content-Type: application/json',
'Cookie: GCLB=CPjflI-2xr6QmQE'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
http --follow --timeout 3600 GET 'https://api.pverify.com/API/GetCMNResponse/8' \
Authorization:'Bearer 'xxx' \
Client-API-Id:'xxx' \
Content-Type:'application/json' \
Cookie:'GCLB=CPjflI-2xr6QmQE'
GetCMNResponse Sample Response
{
"RequestId": 2,
"Processed": true,
"IsDataError": false,
"ErrorMessage": null,
"CertificatesCount": 2,
"Certificates": [{
"Id": 0,
"SubmittedHcpcs": "E1390RR",
"ApprovedHcpcs": "E1390RR",
"InitialDate": "09/12/2017",
"RevisedDate": "",
"LastClaimDate": "09/12/2017",
"Status": "Valid",
"SupplierName": "PEOPLES HOME HEALTHCARE,",
"SupplierPhone": "203-230-3711",
"TypeValue": "Initial",
"LengthOfNeed": "",
"TotalRentalPayments": "",
"CMNRequestID": 2,
"Message": null,
},
{
"Id": 0,
"SubmittedHcpcs": "K0738RR",
"ApprovedHcpcs": "K0738RR",
"InitialDate": "09/12/2017",
"RevisedDate": "",
"LastClaimDate": "09/12/2017",
"Status": "Valid",
"SupplierName": "PEOPLES HOME HEALTHCARE,",
"SupplierPhone": "203-230-3711",
"TypeValue": "Initial",
"LengthOfNeed": "",
"TotalRentalPayments": "",
"CMNRequestID": 2,
"Message": null,
}],
"Message": null,
"Status": "Processed",
"APIResponseCode": 0,
"APIResponseMessage": "Processed",
"RentalsDescription": "\r\n Portable Oxygen Rentals: \r\n Stationary Oxygen Rentals: 1 "
}
Environment | URL |
---|---|
Test | https://api.pverify.com/Test/API/GetCMNResponse/8 |
Production | https://api.pverify.com/API/GetCMNResponse/8 |
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/GetCMNResponse/8 |
Method | GET |
Headers | Description |
Content-Type | application/json |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
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.
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
CMN Response Details
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. |
CertificatesCount | int | No of certiifcates found in response |
Message | String | Contains messages other than error messages (No claims found). |
Status | String | Status of transaction (Processed, Rejected or Pending). |
RentalsDescription | String | Oxygen Rentals Description. |
Certificates | List |
|
Contains claim certificates status info. | ||
Certificate.SubmittedHcpcs | String | HCPCS Code Submitted in Request |
Certificate.ApprovedHcpcs | String | HCPCS Code which is approved by Medicare |
Certificate.InitialDate | String | Initial Date of Billing |
Certificate.RevisedDate | String | Revised Date for CMN, if any. |
Certificate.LastClaimDate | String | Date on which Last claim is recorded. |
Certificate.Status | String | Status of Certificate. Valid / Open |
Certificate.SupplierName | String | Supplier Name. |
Certificate.SupplierPhone | String | Supplier Phone Number |
Certificate.TypeValue | String | Type – Initial, Recert or Revised. |
Certificate.LengthOfNeed | String | Length for which CMN is approved. |
Certificate.TotalRentalPayments | Total Rental Payments | |
Certificate.Message | String | Contains Message like No Certificates are found. |
Payers
GetAllPayers
Sample GetAllPayers Request: (GET) https://api.pverify.com/API/GetAllPayers
GET /api/GetAllPayers HTTP/1.1
Host: api.pverify.com
Headers:
Authorization: "Bearer nkkN3lW4...."
Client-API-Id: "[client-api-id]"
Content-Type: "application/json"
Body:
None
Using Rest Sharp Rest Client
var request = new RestRequest(uri, method);
request.AddHeader("authorization", "Bearer " + token);
request.AddHeader("Client-API-Id", [client-api-id]);
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 GetAllPayers {
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-API-Id", "XXX")
.build();
try(Response response = client.newCall(request).execute()){
return response.body().string();
}
}
public static void main(String[] args) throws IOException {
GetAllPayers payers = new GetAllPayers();
String response = payers.run("https://api.pverify.com/API/GetAllPayers", "token");
System.out.println(response);
}
}
<?php
"https://api.pverify.com/API/GetAllPayers",
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",
"Client-API-Id: 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 GET \
https://api.pverify.com/API/GetAllPayers \
-H 'authorization: Bearer ya9On51ZiIMBvf3pDB_F3oMxjfFkX8t9vfSn' \
-H 'Client-API-Id:XXX' \
-H 'Content-Type:application/json'
Get Payers Sample Response
[{
"payerCode": [code],
"payerName": [name],
"isActive": true,
"isSupportingEligibility": true,
"isSupportingClaims": true,
"isEDIPayer": true
},
{
"payerCode": [code],
"payerName": [name],
"isActive": true,
"isSupportingEligibility": true,
"isSupportingClaims": true,
"isEDIPayer": true
},
{
"payerCode": [code],
"payerName": [name],
"isActive": true,
"isSupportingEligibility": true,
"isSupportingClaims": true,
"isEDIPayer": true
}, (etc)
]
Environment | URL |
---|---|
Production | https://api.pverify.com/API/GetAllPayers |
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
GetAllPayers Request
Key | Value |
---|---|
URL | https://api.pverify.com/API/GetAllPayers |
Method | GET |
Headers | Description |
Authorization | Authorization token from above preceded by the String "Bearer" |
Client-API-Id* | Your pVerify client-api-id |
Content-Type | application/json |
*Note: The Client-API-Id header is required. Header keys are case sensitive.
GetAllPayers Response
Key | Value |
---|---|
payerID | Payer id |
payerName | Payer Name |
payerCode | Payer Code |
allowedNoOfServiceCodes | Allowed number of service codes |
isFreePayer | Boolean determines if payer is free |
isAvailableForDemo | Boolean to see if payer is available for demo |
total | Total |
GetPayerStatus
Get Payer Status Sample Call: (GET) http://api.pverify.com/api/GetPayerStatus
GET /api/GetPayerStatus HTTP/1.1
Host: api.pverify.com
URL Params:
payerStatus: "[payerstatus]"
Headers:
None
Body:
None
var client = new RestClient("http://api.pverify.com/api/GetPayerStatus");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
//Using OKHttp Client
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("http://api.pverify.com/api/GetPayerStatus")
.get()
.build();
Response response = client.newCall(request).execute();
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://api.pverify.com/api/GetPayerStatus",
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(
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
curl --request GET \
--url http://api.pverify.com/api/GetPayerStatus \
Get Payer Status Sample Response
[
{
"payerName": "AARP (A United HealthCare Insurance Company)",
"payer_Code": "[code]",
"payerStatus": "Payer active"
},
{
"payerName": "Absolute Total Care",
"payer_Code": "[code]",
"payerStatus": "Payer active"
},
{
"payerName": "Access Medicare",
"payer_Code": "[code]",
"payerStatus": "Payer ok"
},
{
"payerName": "ACS Benefit Services",
"payer_Code": "[code]",
"payerStatus": "Payer ok"
},
{...
Environment | URL |
---|---|
Production | https://api.pverify.com/API/GetPayerStatus |
This GET call will return the status of all pVerify payers. You can call this endpoint with an optional parameter of payerStatus and it will return payers from that status. By default the endpoint returns all payers and statuses. This API call does not require authentication.
GetPayerStatus Request
Key | Value |
---|---|
URL | http://api.pverify.com/api/GetPayerStatus |
Method | GET |
URL Params | Description |
GetPayerStatus | Allows you to return specific payer status from response |
Headers | None (this API call does not require authentication) |
Body | None |
URL Parameters Description
Name | Description |
---|---|
Payer ok | We show this payer as active but do not have recent data from it. |
Payer active | We show this payer as active and we have recent data from it. |
Payer inactive | This is marked as inactive in our system. |
Payer Down | This is marked as active but has within the last 1 hour returned data showing that it down |
GetPayerStatus Response
Key | Value |
---|---|
payerName | Name of payer |
payer_Code | Payer code |
payerStatus | Payer Status (see URL parameters description) |
Tables
Payer Table
pVerify Payer Code List Click Here to Download pVerify Payer Codes Excel Sheet
Pass Thru Fee Table
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).
Practice Types
Production Environment
Practice Types available in production:
ID | PracticeType |
---|---|
3 | DME |
12 | Physical Therapy |
17 | Primary Care |
18 | Specialist OV-Professional Services |
21 | Mental Health |
22 | Surgery - Office |
24 | Diagnostic Lab - Testing |
27 | OV_DxLab_Sx(Office) |
28 | ASC Facility |
30 | Chiropractic |
33 | Speech Therapy |
34 | Occupational Therapy |
37 | PT_Chiropractic |
38 | PT_DME |
39 | PT_OT_DME |
40 | PT_OT_ST |
42 | OV_DME |
43 | OV_Surgery(Office) |
44 | OV_ASC |
Test Environment
Practice Types available under test endpoint
ID | PracticeType |
---|---|
3 | DME |
12 | Physical Therapy |
18 | Specialist OV-Professional Services |
27 | OV_DxLab_Sx(Office) |
38 | PT_DME |
40 | PT_OT_ST |