Delivery Point Validation

Delivery Point Validation (DPV) has been developed by USPS (United States Postal Service) to help you validate the accuracy of your address information. It enables you to determine whether the actual address exists - all the way down to apartment or suite information.

DPV seed addresses

The DPV functionality has in-built protection against the illegal creation of verified address lists. This is ensured by the concept of 'seed' addresses. These are non-existent addresses that if searched upon, will deactivate the DPV functionality within Pro API.

If you encounter a seed address, you need to obtain an unlock code to re-enable DPV functionality.

Encountering a seed address

If a seed address is encountered, DPV information will no longer be returned. Any DataPlus values will be returned blank until DPV has been unlocked.

The lock code is written to a file called SeedAddressStatus.txt within the program directory and in the log file where one is configured.

Where it is not possible to write to the SeedAddressStatus.txt file, no error will be returned. The information will still be accessible via logging.

Experian is contracted to report this information on behalf of the USPS.

When a seed address is encountered and DPV system disabled, you will need to contact Experian Technical Support. They will record the details of the seed address hit and generate an alphanumeric unlocking key. This key, when supplied back to Pro API, will allow DPV functionality to be re-enabled.

If you have problems applying the unlock code, contact Experian Technical Support.

Pro API is supplied with a DPV Unlock Utility which can handle the unlocking process for you. The Unlock Utility is provided for Windows users only. If you are using UNIX or do not want to use the Unlock Utility, you can unlock DPV functionality manually.

Using the DPV unlock utility

The DPV Unlock Utility is located in C:\Program Files\Experian\Pro API\DPV64.exe. The utility will display the recorded lock code, lock date and time, session name and seed address. You will need to provide this information to Experian Technical Support in order to retrieve your unlock code. Once retrieved, the unlock code can then be applied to re-enable DPV functionality.

Manually unlocking DPV

To unlock DPV manually, you must supply the following information to Experian Techincal Support:

  • The DPV lock code generated by Pro API
  • The date that the seed address was hit
  • The full seed address that was hit
  • Your name, company name, full address and telephone number

This information is available in the SeedAddressStatus.txt file when a seed address is encountered. Alternatively you can obtain the DPV Lock code using the QA_DPVGetCode and QA_DPVGetInfo functions.

Once you have obtained the unlock code from Experian Technical Support, you can use one of the following methods to enter the code into Pro API:

  • With the DPV Unlock Utility
  • With the QA_DPVSetKey function

Multithreading considerations

Pro API can support multiple threads simultaneously. Pro internally synchronizes calls into it to allow the API to support multithreaded integrations using a greater number of threads.

DPV functionality affects the integration of the API in several ways.

If a search thread causes the DPV system to lock itself following a search involving a "seed address", no further delivery point validation will take place for any subsequent searches, regardless of the instance or search handle used.

Any call using a Pro API instance handle that has a country base including USA is able to interrogate the state of the DPV component by using QA_ DPVState. Where the DPV component is locked, the DPV lock code can be obtained by using QA_DPVGetCode and the corresponding DPV unlock key (obtained from Experian Technical Support) can be set with QA_DPVSetKey.

However, the ability of one Pro API instance thread to unlock the DPV component that another Pro API search related thread may be using means that synchronization related complexities must be taken into account.

For multithreaded integrations that require DPV functionality:

  • Ideally, a dedicated top level thread should be used to perform DPV code/key interrogation/unlocking to prevent multiple unlock attempts from occurring.
  • Other threads may happen to be synchronized to search ahead of an attempt to unlock the DPV component (i.e. at the low level within Pro API). It is therefore important to realize that previous searches may not have been DPV confirmed, depending on the order they were presented to the server. This can be checked using QA_GetResultDetail.

Using our data