Why did I get Payment Data Transfer (PDT) error 4003?
If Payment Data Transfer (PDT) doesn't work during testing, you may encounter error 4003 or a FAIL response. Please ensure the business Sandbox account email address is confirmed. Please review how to confirm your email address. Additionally, PDT isn't designed to work with PayPal Standard subscriptions.
If you're having trouble setting up Payment Data Transfer, try the following:
- Check the script
When testing PDT in Sandbox, check that your PDT script POSTs back information to www.sandbox.paypal.com. If testing on the Live PayPal site, check that the script POSTs data back to www.paypal.com. Use the matching Identity Token for the correct business PayPal account environment in your script. The token your script refers to is listed in the Website Preferences of the PayPal account that's receiving the payment. - Check the token
For PDT to work, you must confirm the email address used as the business value in your button code. If your email address isn't confirmed, you won't see the PDT query string appended to your return URL. Make sure that the token in your script is a continuous string with no line breaks. For some languages, this may make a difference. - Check the Auto Return URL
When you enable PDT, the URL you use as the default Auto Return URL must be a valid hostname or IP address. If you use an invalid URL, you won't see the intended result. Learn how to test for valid hostnames or IP addresses. - Check user behavior
PDT error 4003 also occurs if you reference the token more than five times. For example, if a user refreshes the PDT page five times after seeing the details, they'll see FAIL on the last refresh which isn't an error. This is a security feature that prevents the URL that PDT creates to be accessed indefinitely to fetch transaction-specific data.