On this page
No Headings
Last updated: June 7, 2026
PayPal API calls return HTTP status codes. Some API calls also return JSON response bodies that include information about the resource including one or more contextual HATEOAS links. Use these links to request more information about and construct an API flow that is relative to a specific request. Each REST API request returns an HTTP status code.
For successful requests, PayPal returns HTTP 2XX status codes.
| Status code | Description |
200 OK | The request succeeded. |
201 Created | A |
202 Accepted | The server accepted the request and will execute it later. |
204 No Content | The server successfully executed the method but returns no response body. |
For failed requests, PayPal returns HTTP 4XX status codes if something passed in the request has an error or 5XX status codes when something is wrong on our end with a server or service.
For authentication specific HTTP 4XX status codes, see Authorization errors.
HTTP 4XX status codes
| Status code | Description | Possible causes and solutions |
400 Bad Request |
| See Validation errors. The server could not understand the request. Indicates one of these conditions:
|
404 Not Found |
| The server did not find anything that matches the request URI. Either the URI is incorrect or the resource is not available. For example, no data exists in the database at that key. |
405 Method Not Allowed |
| The service does not support the requested HTTP method. For example,
|
406 Not Acceptable |
| The server cannot use the client-request media type to return the response
payload. For example, this error occurs if the client sends an
|
409 Conflict |
| The API cannot complete the requested action as it conflicts with another request that is currently being processed. Retry the request later. |
415 Unsupported Media Type |
| The API cannot process the media type of the request payload. For example,
this error occurs if the client sends a
|
422 Unprocessable Entity |
| The API cannot complete the requested action and might require interaction
with APIs or processes outside of the current request. No systemic
problems limit the API from completing the request. For example, this
error occurs for any business validation errors, including errors that are
not usually of the |
429 Too Many Requests |
| The rate limit for the user, application, or token exceeds a predefined value. See RFC 6585 . |
HTTP 5XX status codes
Note: An HTTP 5xx or network timeout from an
/execute or /capture endpoint could have resulted
in the creation of a PayPal transaction. To be informed of the transaction,
it is recommended that you repeat the same /execute or
/capture call at least once, with the same
PayPal-Request-Id HTTP header as before. See:
API idempotency
| Status code | Description | Possible causes and solutions | ||
500 Internal Server Error |
| A system or application error occurred. Although the client appears to provide a correct request, something unexpected occurred on the server. | ||
503 Service Unavailable |
| The server cannot handle the request for a service due to temporary maintenance. |
For all errors except Identity errors, PayPal returns an error response body that includes additional error details in this format.
Note: The fields returned in the details array
vary by error.
{
"name": "ERROR_NAME",
"message": "Error message.",
"debug_id": "debug_ID",
"details": [
{
"field": "field_name",
"value": "value_passed",
"location": "field_location",
"issue": "problem_with_field",
"description": "Error description."
}
],
"links": [
{
"https://error_documentation_link",
"rel": "information_link",
"encType": "application/json"
}
]
}The response body for Identity errors includes additional error details in this format:
{
"error": "ERROR_NAME",
"error_description": "ERROR_DESCRIPTION"
}For validation errors, PayPal returns the HTTP 400 Bad Request status code.
To prevent validation errors, ensure that parameters are the right type and conform to constraints:
| Parameter type | Description |
| Character | Names, addresses, and phone numbers have maximum character limits. |
| Numeric | Credit cards, amounts, and card verification value (CVV) must use non-negative numeric values and have required formats. For example, a CVV must be three or four numbers. |
| Monetary | Use the right currency. |
| Format | Properly format the JSON sent in the body of your request. For example, no trailing commas. |
Paypal follows industry standard OAuth 2.0 authorization protocol and returns the HTTP 400, 401, and 403 status code for authorization errors.
Tip: These are usually access token-related issues and can be cleared by making sure that the token is present and hasn't expired.
| Status code | Description | Possible causes and solutions |
400 Bad Request |
| Resend with a valid scope. |
400 Bad Request |
| Add the |
400 Bad Request |
| Incorrect response type sent. |
400 Bad Request |
| The |
400 Bad Request |
| Resend with this parameter and its value. |
400 Bad Request |
| Specify a valid |
400 Bad Request |
| Use the |
401 Bad Request |
| The |
401 Bad Request |
| Invalid basic authorization token. |
401 Bad Request |
| Resend with a valid |
401 Unauthorized |
| Check your |
401 Unauthorized |
| The Base64-encoded client credentials in the |
401 Unauthorized |
| The |
401 Unauthorized |
| This request was declined due to risk issues. |
401 Unauthorized |
| Incorrect device information. |
401 Unauthorized |
| Invalid refresh token passed when trying to get an AT from RT. |
401 Unauthorized |
| Incorrect refresh token. |
401 Unauthorized |
| Authorization code not passed or invalid. |
401 Unauthorized |
| Use a new authorization code. |
401 Unauthorized |
| |
401 Unauthorized |
| Check your permissions and try again. |
401 Unauthorized |
| Legal mandate to clear off One Touch in a country-specific pre-configuration period. Current expiry is set at six months. |
403 Forbidden |
| The client is not authorized to access this resource although it might have valid credentials. For example, the client does not have the correct OAuth 2.0 scope. Additionally, a business-level authorization error might have occurred. For example, the account holder does not have sufficient funds. |
In this example, an invalid client ID is passed in the request to get an access token.
curl -v https://api-m.sandbox.paypal.com/v1/oauth2/token \\
-H "Accept: application/json" \\
-H "Accept-Language: en_US" \\
-u "bad_client_id:secret" \\
-d "grant_type=client_credentials"This unsuccessful request returns the HTTP 401 Unauthorized status code and a JSON response body that lists the error name and the error description.
{
"error": "invalid_client",
"error_description": "Client Authentication failed"
}Hypermedia as the Engine of Application State (HATEOAS) is a constraint of the REST application architecture that distinguishes it from other network application architectures.
This excerpt from a sample response shows an array of HATEOAS links:
{
"links": [
{
"href": "https://api-m.paypal.com/v1/payments/sale/36C38912MN9658832",
"rel": "self",
"method": "GET"
},
{
"href": "https://api-m.paypal.com/v1/payments/sale/36C38912MN9658832/refund",
"rel": "refund",
"method": "POST"
},
{
"href": "https://api-m.paypal.com/v1/payments/payment/PAY-5YK922393D847794YKER7MUI",
"rel": "parent_payment",
"method": "GET"
}
]
}Use the links in this example, as follows:
GET method and the target href of the self link.POST method and the target href of the refund link.GET method and the target href of the parent_payment link.The elements in each link object in the links array are:
| Element | Required | Description |
href | Required | The complete target URL, or link, to combine with the HTTP
|
rel | Required | The link relationship type, or how the
|
method | Optional | The HTTP method. If present, use this method to make a request to the
target URL. If absent, the default method is |