PTV Certification

SIGN Up for the free Pharmacy Technology Vendor (PTV) API account from our website: and attend your kick off meeting.

You will be given access to the certification dashboard for testing.  The type of PTV account you will use depends on how you want endpoint(s) to receive eRx messages.

    • PTV accounts – 1 endpoint receives for all registered pharmacies.

    • Main PTV accounts – manage Sub Accounts that each have an endpoint.   Main PTV accounts fully manage but can delegate Sub Account management to their clients (especially useful for PTVs with custom applications installed for a chain store client).

    • Hybrid endpoint approaches – need the Main PTV account.  It allows the Main account to designate 1 endpoint for a subset of their pharmacies (say for those using a hosted application) and also have Sub Accounts for various clients (say for those using a customized installed versions).

Send [email protected] your technology’s DEA required 3rd party audit (front page showing date only).  This will allow prescribers to route controlled substance eRxs to your registered pharmacies.

Next, add test pharmacies.  Log into your certification dashboard account and use the a, b, or c, method shown below that matches the type of account you have.

a. For PTV account types – go to MANAGE ACCOUNT >Manage Pharmacies and add 1 or more test pharmacies.

b. For Main PTV account types – go to MANAGE ACCOUNT >Manage Sub Accounts and add a Sub Account, then use the button to log into the Sub Account to add a test pharmacy for it. Repeat if you want multiple test Sub Accounts.

 c. For hybrid approaches do step a and b and use your Main Account for step 3a and use Sub Account(s) for step 3b.

Depending on the account type you have, you will need one or more listening endpoints for WENO to send real time eRx messages to.
The sample code below will help you create such a listener.
When we send your endpoint an NCPDP standard v2017071 message you should respond in “real time” with the  NCPDP standard v2017071 appropriate STATUS or ERROR message.
The Testing Page on your certification dashboard has all samples, schemas, validators, and self sending tools and prescriber test account details you will need.

PHP Code to Receive XML Messages from WENO
This sample_endpoint.php is a PHP sample to receive messages from WENO. You will have to publish it on a secure site where it will host the endpoint.

C# Code to Receive XML Messages from WENO
This sample_endpoint.ashx is a generic HTTP handler. You will have to compile it and publish on a secure site where you want to host the endpoint. Also, this code sample is to receive XML messages but you can adapt it to receive JSON as well.

– Sample Real Time STATUS Message in XML
– Sample Real Time ERROR Message in XML

More about the Real Time Response Messages You Must Implement

The details of the header and body of the STATUS and ERROR messages are found on the Testing Page so you will understand how to provide proper responses. Pay close attention to the header as the STATUS and ERROR message used in a real time response is different from other uses of these messages.  STATUS and ERROR message used by an endpoint to communicate a real time response can use zero in the message ID & the security section is not necessary. For example:  If your endpoint receives a message and later discovers an ERROR, then the same ERROR message can be sent back to the sender but the Header of this ERROR message requires a unique message ID, a relates to message ID for the receiver to tie it back and security fields populated.  So the same ERROR message has the Header populated differently for different use cases.  

The Header of all eRx Messages Explained

Your certification dashboard’s TEST Page has a page dedicated to explaining the Header of all eRx NCPDP Script Standard Messages v2017071

Header FieldRequirement & Cardinality NotesData TypeValue Comments
Message AttributesYes, occurs 1x.anDatatypesVersion=”20170715″
TO QualifierYes, occurs 1xECL codesThe ECL codes options WENO support are as follows:
P = Pharmacy
D = Prescriber
C = Clinic
CF = Central Fill Pharmacy
ZZZ = Mutually Defined
PY = Payer
REMS = REMS Administrator
TOYes, occurs 1xan 1..255The WENO Directory will provide the necessary IDs below:
If P is TO Qualifier then enter NCPDP ID
If D is TO Qualifier enter WENO prescriber ID
If C is TO Qualifier enter WENO Clinic ID
If CF is TO Qualifier enter the WENO Central Fill Pharmacy ID
If ZZZ is TO Qualifier enter the appropriate WENO ID
If PY is TO Qualifier enter the WENO Payer ID
IF REMS is TO Qualifier enter the WENO REMS Administrator ID
From QualifierYes, occurs 1xECL codesIf qualifier field is populated then it is expecting these values:
P = Pharmacy
D = Prescriber WENO Online ID
C = Clinic
CF = Central Fill Pharmacy
ZZZ = Mutually Defined
PY = Payer
REMS = REMS Administrator
FromYes, occurs 1xan 1..255

If the From Qualifier is:
P then enter NCPDP ID of the pharmacy
D then enter WENO prescriber ID found in directory
C then enter WENO Location ID found in directory
CF the WENO Central Fill Pharmacy ID found in directory
ZZZ the enter the appropriate WENO ID found in directory
PY then enter the WENO Payer ID found in directory
REMS then enter the WENO REMS Administrator ID found in directory

The WENO Directory will provide the necessary IDs.

Message IDYes, occurs 1xan 1..35Trace number. A unique reference identifier for the transmission, generated from the sender of the request and the sender of the response. When generated from the sender, it is then echoed back in the response message in the field RelatesToMessageID. The value in this field must be present in RelatesToMessageID on subsequent transactions (such as RxRenewalRequest, CancelRx, etc.) to tie back to an original transmission. If STATUS or ERROR message is a real-time response, then the message ID can be zero.
RelatesToMessageIDConditional, occurs 1x if used. This is needed to tie back to a previous transactionan 1..35On a direct response to electronic transactions this is used (such as a free-standing Error message, Status, RxHistoryResponse) or a subsequent follow up response (such as RxChangeResponse, RxRenewalResponse, CancelRxResponse, MTMServiceResponse) or a subsequent follow up transaction (such as RxFill, Verify), this field is mandatory and is used to link the original message (MessageID) from request to the response or to the subsequent follow up transaction.
Sent TimeYes, occurs 1xUTC Date TypeUTCTimeCode (example: 1970-11-03T13:10:30.64)
SecurityConditional, 1x.
Required by WENO to authenticate API partner
Security, UsernameToken, Username = required, an 1..35, occurs 1x

For real time response use of STATUS or ERROR messages the security segment is not required.
When the EHR or PTV is sending a message for WENO to route, then – WENO allows a  NONCE value to replace API Partner ID and password if you prefer it. Another section covers how you request this NONCE value.

SenderSoftware, SenderSoftwareDeveloperYes, occurs 1xan 1..35A contact person for troubleshooting
SenderSoftware, SenderSoftwareProductYes, occurs 1xan 1..35Identifies the entity responsible that generated the transaction. Note: For Status, Error, Verify transactions – contains software identification of the entity creating the response.
SenderSoftware, SenderSoftwareVersionReleaseYes, occurs 1xan 1..50Identifies the software product version release of the entity responsible for generating the transaction or creating the response.
MailboxNONOT supported – do not populateGET Message and Mailboxing is not supported by WENO
TestMessageNO, occurs 1x if usedBooleanIndicates if the message is a test message; however WENO does not allow test messages to go to real entities without prior approval from WENO. WENO provides test Pharmacies, Prescriber and other types of accounts for testing in the Testing Page of your certification dashboard.
RxReferenceNumberNO, occurs 1x if usedan 1..35Not used by WENO – you may populate if it is useful
TertiaryIdentifierNO, occurs 1x if usedan 1..3Not used by WENO – you may populate if it is useful
PrescriberOrderNumberNO, occurs 1x if usedan 1..35Not used by WENO – you may populate if it is useful
DigitalSignature Version attributeYes, occurs 1xan

NOTE: Remember that in order for EHRs to send or PTVs to receive EPCS orders we need your DEA approved EPCS audit sent to [email protected].

PTVs populate with “not applicable”

EHRs with their audit should populate the DigitalSignature Version attribute with the version your EHR uses to digitally sign the EPCS orders.

If your EHR does not have its own DEA approved audit for EPCS, you can populate the Version attribute to “not applicable”

DigitalSignatureIndicatorYes, occurs 1xBooleanIs the message digitally signed?
PrescriberOrderGroupNO, occurs 1x if usedSee image in the next column for data types if used.Not used by WENO – you may populate if it is useful
RxOrderReferenceGroupNO, occurs 1x if usedSee image in the next column for data types if usedNot used by WENO – you may populate if it is useful

The Body of the STATUS message


Status Code Meanings

Status CodeMeaning
000Transaction successful (use this one for real time and you can avoid sending free standing STATUS later)
001Transaction successful, message(s) waiting to be retrieved
002No more messages (WENO does not support mail boxing, so this is not to be used)
003Transaction successful, no messages to be retrieved (WENO does not support mail boxing, so this is not to be used).
005Transaction successful, password soon to expire
010Successful – accepted by ultimate receiver (use this one only if you plan to send a Free-Standing STATUS later. It was previously reported as successful, so you could leave it as is unless an ERROR occurs when you deliver to the ultimate receiver, then you can send the Free-Standing ERROR back).

WENO can handle VERIFY when a return receipt is flagged based on a real time Status/success message from your endpoint.  If this is not a good indicator the message was received by the intended recipient, your account can be set so only you will send appropriate VERIFY messages.

Status Description Codes

These are not required. If you want to populate them, refer to the Transport schema we provide on the Test Page.

Prescription Delivery Method Code Meaning

1. Electronic (computer to computer)
2. Faxed

The Body of the ERROR Message

Error CodeWhat it means
600Communication problems – try again later
601Receiver unable to process
602Receiver system error
700Configuration error
900Transaction rejected
Error “Description Code” and meaning
008Request timed out before response could be received
130COO Cardholder last name is invalid
134Sending a quantity of 0 is invalid for this pharmacy
144# of refills is invalid
210Unable to process transaction – please resubmit
220Transaction is a duplicate
500XML syntax error – XPATH of the element in question must accompany in the Description field of this Error
4000Intermediary is unable to deliver transaction to the recipient.
4010Intermediary is unable to process response from recipient.
4020Intermediary system error
4030Sender not allowed to send this transaction type
4040Receiver does not support this transaction type
1000Unable to identify
2000Data content is invalid
3000Does not follow the NCPDP standard

Weno provides an Endpoint tool on your dashboard page MANAGE ACCOUNT -> MANAGE IPS AND ENDPOINTS.

Note: when we ask for the secure endpoint URL be sure to specify the full path of the endpoint URL containing the script that handles the messages Weno sends to your endpoint, which can respond in real time with a Status or Error NCPDP message.

For example, if your server is located at and the endpoint script is under /endpoint.php then your endpoint URL is

SSL is necessary.

Also, you will be asked to provide WENO’s credentials that you will provide to us so we can be authenticated by your system.

To complete step 3

1. Send your newly created endpoint a sample NewRx message successfully and return a real time STATUS message back to WENO using the endpoint testing tool; and
2. Send your new endpoint listener another sample message and make sure you can return a real time ERROR for all the reasons you may reject it. (Use the error codes properly).

You can test your endpoint by sending yourself our samples or send your own sample messages. This image shows how this is done in your Manage IP and Endpoint page.

You must manage pharmacies using your technology. We give you these ways:

1. Manually via your dashboard MANAGE section. If applicable sub accounts will see how to manage pharmacies when they log in, but as a main PTV you can also log in as them and manage their pharmacies.

2. Switch Manage API – go to the Testing Tool Page to find the Switch Manage API schema, samples, and endpoint to do your testing to manage your pharmacies.

3. A one-time bulk upload (contact us for the template). This is temporary, but they must be managed continuously when you are in the live environment.

4. If you are a Main PTV we have a pharmacy flat file we can send to your designated endpoint so you will understand which pharmacies are on your sub-accounts. To see the specifications of this file go to MANAGE ACCOUNT > FILE DESTINATIONS.

  1. Do we have your latest DEA-approved system audit on file?
  2. Can we receive NewRxs and return real-time STATUS?
  3. Can we receive NewRxs and return real-time ERROR.
  4. Can we receive an EPCS NewRx?
  5. Can you manage your pharmacies and applicable sub-account pharmacies?
  6. Can you access financial files?
  7. Do we understand how to bill you for transaction fees?
  8. Can you retrieve all applicable destination files?
  9. If desired, provide [email protected] with 1st draft press release and logo or send the email to put us in contact with your team member for these things, if you haven’t done so already.
  10. Congratulations! Contact your certification manager once 1-8 is checked and you will be added to the live environment.

In the live environment do these things:

  1. Log in & add your necessary users.
  2. Provide your listener details for the live environment.
  3. Provide your live billing details if you have not done so already.
  4. Add your pharmacies and if applicable sub-accounts & their pharmacies.
  5. Send some test NewRxs.
  6. Set up how you will receive your financial reports.

Assuming you already process NCPDP message types.  If you do not, please contact us for additional assistance.

Click here

Other message testing requires you to accomplish these things:

1. You already have a listening endpoint(s) for us to push messages to you or your sub accounts, but you must now test how to call our endpoint to push messages to WENO practitioners.  Your TESTING Tool page provides all you need to test besides following these next 5 steps:

  • Endpoints
  • Sample messages
  • Schemas (2017071 has the ECL and data types etc)
  • Validator tools
  • A sending tool to send your pharmacies messages from test prescribers
  • Test prescribers/methods that provide an expected outcome or result

So self-test up a storm and be sure, if applicable, your sub-accounts appropriately test.  Contact us if you would like to see different samples or some other feature on the Testing Tool.

2. WARNING:  Registered pharmacies have a way to tell prescribers what message types they can accept.  If you have registered pharmacies but forget to check which message types they can accept, then they will not be delivered in the test environment.  The same is true for registered prescribers, the message types they can accept are found on our prescriber directory and if you try to send a prescriber a message they cannot accept, it will be rejected.

3. WENO requires you to register the IPs that will be sending messages to our endpoint.  Go to Manage Acccount > Manage Endpoints and IPs.  It can also be done at a sub-account level if you are a Main PTV. 

4.  You will also need to access our prescriber data to understand how to populate a message you are sending to our prescribers or one you are responding to.

See this table to understand the ways we can provide this prescriber data to you.  Keep in mind this is test data.

WENO Prescriber Data

How to Receive

Full Weekly Flat File

Provide file destination & see specs for this file in Manage Account Tab

Daily Flat File

Provide file destination & see specs for this file in Manage Account Tab

Prescriber Directory

If you initially manually download it from the Manage Account > Manage List – you will find a compressed zip file that contains a  readme file to understand the data.  The readme file also contains the sample PHP and C# code to retrieve it via computer call.

5. After you complete self-testing, then contact us to set up a 1-hour meeting to go through your testing plan. You create your own test plan depending on which messages you want to support.  If you need a testing plan, we recommend the NCPDP testing tool which has sample messages and stories to test.  The account is free at

6. If all tests are passed, then you will be moved to the live environment if you are not already on live.

If you are already live with NewRxs, then you will simply edit your pharmacies to show they are ready to receive the optional message types.