Delivery Point Validation

Delivery Point Validation (DPV) has been developed by the United States Postal Service (USPS) 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 having a concept of 'seed' addresses. These are non-existent addresses that if searched upon, will deactivate the DPV functionality within Batch API.

If you encounter a seed address, you need to obtain an unlock code to re-enable DPV functionality. You can then use the DPV unlock tool to unlock the functionality. The unlock tool is an executable file named either dpv.exe (for 32-bit installations) or dpv64.exe (for 64-bit installations).

Encountering a seed address

If a seed address is encountered, a lock code is reported, together with instructions on the re-enabling process.

The lock code is written to a file called DPVStatus.txt within the program directory. Where it is not possible to write to the DPVStatus.txt file, no error will be returned
– the file will not be updated on the assumption that another instance of Batch API is attempting to write to it simultaneously.

Experian Data Quality is contracted to report this information on behalf of the USPS:

DPV processing was terminated due to the detection of what is determined to be an artificially created address. No address beyond this point has been DPV validated. In accordance with the Agreement between the USPS and Experian Data Quality, DPV shall be used to validate legitimately obtained addresses only and shall not be used for the purpose of artificially creating address lists. The written agreement between Experian Data Quality and the End User also includes this same restriction against using DPV to artificially create address lists. Continuing use of DPV requires compliance with all terms of the Agreement. If you believe this address was identified in error, please contact Experian Data Quality.

When a seed address is encountered and the DPV system disabled, you will need to submit the lock code to Experian Data Quality Technical Support. You will be provided with a corresponding alphanumeric unlocking key. This key, when supplied back to Batch API, will allow DPV functionality to be re-enabled.

Batch 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 and is called dpv.exe (for 32-bit installations) or dpv64.exe (for 64-bit installations). If you are using UNIX or do not want to use the Unlock Utility, you can manually supply the following information by contacting Experian Data Quality Technical Support:

  • The DPV lock code generated by Batch 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

The lock code is reported when a seed address is encountered and can also be obtained using the QABatchWV_DPVGetCode function. The remaining information can be obtained using the QABatchWV_DPVGetInfo function provided the DPVStatus.txt file has successfully been written.

Entering the unlock key

The DPV Unlock Utility can apply the unlock code for you, or you can use the QABatchWV_DPVSetKey function.

The unlock key provided to you by Experian Data Quality Technical Support will re-enable DPV functionality only once. USPS reserves the right to require Experian Data Quality to suspend a user's ability to perform DPV processing when multiple incidents of artificial seed address detection occur.

If you have problems applying the unlock code, please contact us.

Multithreading considerations

Batch API can support up to 8 simultaneous threads (providing you have sufficient RAM available). Batch API 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.

First, 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 Batch API instance handle that has a country base including USA is able to interrogate the state of the DPV component by using QABatchWV_DPVState and, where it is locked, will be able to obtain the DPV lock code by using QABatchWV_DPVGetCode and set a corresponding DPV unlock key with QABatchWV_DPVSetKey. However, the ability of one Batch API instance thread to unlock the DPV component that another Batch API search related thread may be using means that synchronization related complexities must be considered.

For multi-threaded 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 Batch API), so searches should be re-attempted where the "DPV disabled" bit is set in the extended dataset-specific information component of Batch API's return code. See your Data Guide for further information on extended dataset- specific information bits.
  • When using 8 threads for USA, CAN or multicountry you have to be sure that the limit for the opened files per process is 1024 or higher (UNIX specific - see the "ulimit -n" command).
Batch API

Using our data