Troubleshooting NVP/SOAP Errors
Last updated: Feb 20th, 2:44pm
10207
The merchant can request the customer to update their payment method and try the transaction again. The merchant can show an error to the customer that their payment method may have insufficient funds, then:
-
Call the
SetExpressCheckout
API to complete the payment. - Redirect the customer to PayPal.
10409
- Ensure the token you are using is correct and has not expired. Generate a new token by making a new
SetExpressCheckout
API call. - Ensure the token hasn't been used previously.
- Double-check the transaction ID to ensure it is correct and corresponds to a transaction.
- Ensure your API calls are correctly formatted and include all required parameters.
10410
Verify the correct value for the token and resubmit your API call. TOKEN
is a time-stamped unit returned in the SetExpressCheckout
API response.
10411
The buyer must restart the checkout process to create a new checkout session with a new token that the buyer must approve. Do not reuse the expired token value in the SetExpressCheckout
request. If you know the final OrderTotal
, update the value for that element. You can also update the values for ReturnURL
and CancelURL
if necessary.
10412
- Configure your profile to block duplicate invoice numbers.
- Make sure each
InvoiceID
is unique for every transaction. Implement a system that generates uniqueInvoiceIDs
automatically to avoid duplication. For PayPal Payments Pro, the parameter you pass depends on the type of API calls you're making:- For SOAP, use
InvoiceID
. - For NVP, use
INVNUM
.
- For SOAP, use
- Check for duplicates. Before processing a transaction, verify the
InvoiceID
has not been used previously. This can be done by maintaining a record of all Invoice IDs and cross-referencing them before generating a new ID. - Generate a new, unique
InvoiceID
for the transaction and process the payment again.
10413
Be sure that the total of the payment detail item parameters, such as ItemTotal
, HandlingTotal
, and TaxTotal
add up to the OrderTotal
. Check for any updates or modifications that could affect the calculation and ensure the total amount specified in the API request accurately reflects the sum of item amounts, tax, shipping, and other charges.
10416
Implement a mechanism to generate a new token for the customer. You can redirect the customer to the initial checkout page to start the process again. If the transaction fails, do not retry the DoExpressCheckout
API call.
10417
- Retry with an alternative payment method. Use an alternative payment method in the PayPal wallet, such as a different credit card, bank account, or PayPal balance.
- Check payment method details. Ensure that the selected payment method has sufficient funds and that all billing information is correct and up-to-date.
- Contact the financial institution. If the bank or financial institution declined the payment method, contact them to understand the reason and resolve any issues.
- Update the PayPal account. Ensure that the PayPal account is in good standing and that there are no limitations or holds that could affect the transaction.
10419
- Ensure you follow the correct API call sequence:
SetExpressCheckout
GetExpressCheckoutDetails
DoExpressCheckoutPayment
- Ensure you retrieve the Payer ID from the
GetExpressCheckoutDetails
API call response. - Ensure the
PAYERID
parameter is in theDoExpressCheckoutPayment
API call. - Ensure the Payer ID is correctly stored and passed between API calls with no issues with session management or data handling.
10422
Redirect the buyer back to PayPal to select a new payment method. The checkout can be re-initialized after calling the SetExpressCheckout
API.
10423
- Use the same
PaymentAction
for theDoExpressCheckout
API call you used in the initialSetExpressCheckout
API call. - Grant the third-party permissions required to complete the API call on your behalf.
- Ensure your PayPal business account is verified with a confirmed email address.
10426
- Ensure that the
"ItemTotal"
amount is the exact sum of the individual item amounts. Double-check to make sure there are no discrepancies. - Ensure that the
"ItemTotal"
amount is formatted according to PayPal's requirements. Typically, this means using two decimal places in countries that support cents. For example, use 10.00 for ten dollars. - Ensure that the
"ItemTotal"
amount is consistent with the currency specified in the request. All amounts should be in the same currency.
1{2 "METHOD": "DoExpressCheckoutPayment",3 "PAYMENTREQUEST_0_AMT": "30.00",4 "PAYMENTREQUEST_0_CURRENCYCODE": "USD",5 "PAYMENTREQUEST_0_ITEMAMT": "30.00", // ItemTotal amount6 "L_PAYMENTREQUEST_0_NAME0": "Item 1",7 "L_PAYMENTREQUEST_0_AMT0": "10.00",8 "L_PAYMENTREQUEST_0_QTY0": "1",9 "L_PAYMENTREQUEST_0_NAME1": "Item 2",10 "L_PAYMENTREQUEST_0_AMT1": "20.00",11 "L_PAYMENTREQUEST_0_QTY1": "1“12}
10433
Ensure the OrderDescription
parameter is 127 or fewer single-byte, alphanumeric characters. Do not leave mandatory fields blank.
10442
Ensure the ButtonSource
parameter is 32 or fewer single-byte, alphanumeric characters. Do not leave mandatory fields blank.
10444
- Ensure the currency code specified in the
SetExpressCheckout
API request matches the currency code in all subsequent calls. - Review your code to ensure the currency argument is not being changed at any point.
- Check SetExpressCheckout
- Check DoExpressCheckoutPayment
1$payerDetails = [ 'PAYMENTREQUEST_0_AMT' => '100.00’,2'PAYMENTREQUEST_0_CURRENCYCODE' => 'USD',];
10471
Verify the return URL in the API request. Ensure the domain is publicly accessible and not blocked by firewalls.
10481
Ensure the PAYMENTACTION
parameter is appropriately set based on the type of checkout used.
- For guest checkout, check that
PAYMENTACTION
is set to"Sale"
instead of"Authorization"
. The"Sale"
action is allowed for guest checkout and does not require a PayPal account. - For PayPal checkout, use the
"Authorization"
action and ensure the user is authenticated and has a PayPal account. The user must log in to PayPal during checkout.
1{2 "METHOD": "DoExpressCheckoutPayment",3 "TOKEN": "",4 "PAYERID": "",5 "PAYMENTREQUEST_0_PAYMENTACTION": "Sale", // Use "Sale" for guests, "Authenticate" for PayPal6 "PAYMENTREQUEST_0_AMT": "10.00",7 "PAYMENTREQUEST_0_CURRENCYCODE": "USD"8}
10485
- Notify customers about the error and provide guidance on how to resolve it.
-
Retry Express Checkout. Implement a mechanism to redirect the customer back to PayPal to retry the payment. Use the token value returned from
SetExpressCheckout
to redirect the customer to a PayPal log-in page. After the customer logs in, PayPal displays the transaction details on the payments review page, where the customer needs to approve the payment.
10486
Redirect the buyer to PayPal, have the buyer add or choose a different payment method, and then run the transaction again. Call the SetExpressCheckout
API to complete the payment, and if the buyer's payment method still does not go through, show the buyer an error.
10606
The merchant needs to ask the customer to reach out to the customer's bank or payment source and determine why they were declined.
The customer can also provide a different payment source for their purchase. If the error code displays after checkout, the merchant can use another method to collect the funds from the customer.
To avoid this issue, the merchant can capture the transaction and re-authorize it when it's time to ship. PayPal recommends not shipping any items until the authorization is captured.
This error is not caused by a technical error with PayPal or your integration.
10609
Check whether the authorization ID is valid or expired and reattempt the request. The buyer must start a new transaction or the merchant needs to re-authorize before attempting to capture the payment.
10610
Retry the request again with a higher or lower amount. Check the amount passed in the initial SetExpressCheckout
API request and verify whether the same amount is being passed during capture.
10620
- Determine the status of an order using the order ID and the
GetTransactionDetails
API. - Create a new authorization with the
SetExpressCheckout
API, then redirect the buyer for approval with their payment method. - After the buyer approves, the merchant can capture the payment amount.
10621
- Determine the status of an order using the order ID and the
GetTransactionDetails
API. - Create a new authorization with the
SetExpressCheckout
API, then redirect the buyer for approval with their payment method. - After the buyer approves, the merchant can capture the payment amount.
10623
Capture the order instead of creating multiple authorization requests against the same order.
10727
- Make sure that the
address1
field is filled out with a valid street address before submitting the transaction. You can add validation checks in the form to ensure that theaddress1
field is not left blank. - Check the form and the system that captures and transmits the shipping address to ensure that the
address1
field is correctly captured and included in the API request. - Add validation logic to the form or system to ensure the
address1
field contains valid data before allowing the transaction to proceed. This logic can include checks for non-empty values and proper formatting. - Test the API request to ensure the
address1
field is correctly included and formatted in theDoDirectPayment
orDoAuthorization
API call.
10728
- Ensure the city field is filled out with a valid city name before submitting the transaction. You can add validation checks in the form to ensure that the city field is not left blank.
- Check the form and the system that captures and transmits the shipping address information to ensure that the city field is correctly captured and included in the API request.
- Add validation logic to the form or system to ensure the city field contains valid data before allowing the transaction to proceed. This logic can include checks for non-empty values and proper formatting.
- Test the API request to ensure the city field is correctly included and formatted in the
DoDirectPayment
orDoAuthorization
API call.
10730
- Ensure the postal code field is filled out with a valid five-digit ZIP code before submitting the transaction. You can add validation checks in the form to ensure that the postal code field is not left blank and is in the correct format.
- Check the form and the system that captures and transmits the shipping address information to ensure that the postal code field is captured and included in the API request.
- Add validation logic to the form or system to ensure the postal code field contains valid data before allowing the transaction to proceed. This logic can include checks for non-empty values, proper formatting, and ensuring that the postal code consists of five numeric digits.
10736
An issue occurred with the address field. The error message specifies which field is incorrect.
Redirect the buyer to the shipping information page so they can update their address.
Note: The optional ADDROVERRIDE
field controls how PayPal displays the shipping address:
0
– The PayPal checkout page does not display the shipping address.1
– The PayPal checkout page displays the shipping address provided in theSetExpressCheckout
request, instead of the buyer's saved PayPal address.
If the buyer’s saved PayPal address is displayed, the buyer cannot edit it.
11452
Contact PayPal support to enable reference transactions. If calling the API on behalf of a different PayPal account, ensure the account receiving payments has permissions enabled. Ensure the API caller account has enabled all required permissions as well.
11547
Contact PayPal support to enable recurring payments. If calling the API on behalf of a different PayPal account, ensure the account receiving payments has permissions enabled. Ensure the API caller account has enabled all required permissions as well.
11601
The merchant account doesn’t support address overrides. Collect the correlation_id
from the API response and contact PayPal support.
11607
- If this request is for a payment that was processed prior, then no action is required.
- If this is a new transaction request, submit a new request with a different
MSGSUBID
orINVOICE_ID
. - Ensure the merchant is subscribed to Instant Payment Notifications or Webhooks so that even if they miss the API response initially, they can sync up their systems with the latest payment status within PayPal and avoid duplicate transaction requests.
11812
Review the API response for details about which argument in the API request was invalid. Upon fixing the invalid argument, the payment should go through. Ensure the description field has no more than 127 characters.
11815
Check your shopping cart settings or your internal code. Make sure it's rounding off the decimal or percentage values correctly.
13113
Surface an error message to the buyer. Ask them to retry the transaction with a payment method other than PayPal.