# Error Code Reference

A comprehensive list of all the errors that can be thrown by the Cash App Pay API

## Overview

This reference describes every error that can occur within the Cash App Pay APIs, why it happened, and how to resolve it.

### Error Schema

Errors in the Cash App Pay API are returned in every endpoint with the same format: an array of error objects at the top level of the response. Here's an example:

**Example Error**

```
{
  "errors": [
    {
      "category": "INVALID_REQUEST_ERROR",
      "code": "MISSING_REQUIRED_FIELD",
      "detail": "Missing required parameter 'amount'",
      "field": "amount"
    }
  ]
}
```

Each error has the following fields:

| Field Name                      | Description                                                                                                                                                                                                                                                                                                                                  |                                                                     |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| category <br />string, required | Contains a high-level grouping of the error that occurred from the following values: <br />  - API\_ERROR <br />  - AUTHENTICATION\_ERROR <br /> - BRAND\_ERROR <br /> - DISPUTE\_ERROR  <br /> - GRANT\_ERROR  <br /> - MERCHANT\_ERROR <br /> - INVALID\_REQUEST\_ERROR  <br /> - PAYMENT\_PROCESSING\_ERROR   <br /> - RATE\_LIMIT\_ERROR | This field is versioned, and can safely be used for error handling. |
| code  <br />string, required    | Contains a stable error code from the list of codes on this page. <br />This field is versioned, and can safely be used for error handling.                                                                                                                                                                                                  |                                                                     |
| detail <br /> string, optional  | Describes the error in human-readable US English, with description of why it occurred and how to resolve it.   <br />This field is not structured or versioned, and may change at any time. Do not rely on the detail field for error handling; instead, rely on the code field.                                                             |                                                                     |
| field   <br />string, optional  | Contains the name of the field that caused and / or is related to this error, in [JSON dot notation format](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics#dot_notation).                                                                                                                                          |                                                                     |

### Retry Behaviors

All requests to the Cash App Pay API are idempotent, but you should only retry requests in certain cases. There are 3 types of retry behaviors documented below:

| Retry Type                 | Description                                                                                                                                                                                                                                                                                                                                                      |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Retryable                  | The error can be resolved by retrying the request as-is, possibly after waiting a short period of time. No changes to the request are necessary to retry and possibly get a different response. <br /><br />  This retry behavior is typically associated with rate limiting, internal server errors, or waiting for automated state transitions.                |
| Retryable with New Payload | The error can be resolved by retrying the request, but requires changing the request payload first. This retry behavior is typically associated with validation failures, where the API client isn't sending valid data.                                                                                                                                         |
| Permanent (Do Not Retry)   | The error cannot be resolved by retrying the request in any capacity. This behavior is typically associated with payment or refund declines, where the API client sent a valid request, but Cash App Pay rejected it. <br /> <br /> The API client will need to create a new request and grant to proceed instead of attempting to modify/reuse an existing one. |

<Note>
  For more information about handling errors in your code, see [error handling](/cash-app-pay-partner-api/guides/technical-guides/api-fundamentals/errors/error-handling).
</Note>

## Authentication Errors

The following errors occur *before* a request is processed by the Cash App API, during authentication and authorization. They are typically related to issues with the credentials passed to the API.

All validation errors have a category of `AUTHENTICATION_ERROR`.

| Error Code                                                                                                                                   | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="UNAUTHORIZED" href="#UNAUTHORIZED">**UNAUTHORIZED**</a> <br />HTTP 401   <br />Retryable with New Payload                             | The Cash App Pay API could not authenticate your request. This is typically due to:  <br /> - Using sandbox credentials in production (or vice versa) <br />- Using an invalid syntax for the authorization header   <br />- Using a mismatched client ID / API key pair <br /> <br />To resolve this issue, double-check that you've set your credentials in the authorization header properly for the endpoint you're calling.  <br /><br /> If you can't resolve it with your existing credentials, reach out to Cash App Pay support and we'll issue new credentials for you or look into why your requests aren't being authenticated properly. |
| <a id="ACCESS_TOKEN_REVOKED" href="#ACCESS_TOKEN_REVOKED">**ACCESS\_TOKEN\_REVOKED**</a>  <br /> HTTP 401  <br /> Retryable with New Payload | The client ID and API key provided were both valid and in the correct format, but the API key was revoked and may no longer be used to make calls.  <br /><br /> Refresh your API credentials to get a new API key and resolve this issue.                                                                                                                                                                                                                                                                                                                                                                                                           |
| <a id="ACCESS_TOKEN_EXPIRED" href="#ACCESS_TOKEN_EXPIRED">**ACCESS\_TOKEN\_EXPIRED**</a>    <br />HTTP 401  <br />Retryable with New Payload | The client ID and API key provided were both valid and in the correct format, but the API key has expired and may no longer be used to make calls.   <br /> Refresh your API credentials to get a new API key and resolve this issue.                                                                                                                                                                                                                                                                                                                                                                                                                |
| <a id="CLIENT_DISABLED" href="#CLIENT_DISABLED">**CLIENT\_DISABLED**</a>     <br /> HTTP 401  <br />Retryable                                | The client ID and API key provided were both valid and in the correct format, but the API client has been disabled by Cash App Pay and is not allowed to make API calls.     <br /> Reach out to Cash App Pay support if your API client has been improperly disabled, and they can get it re-enabled for you.                                                                                                                                                                                                                                                                                                                                       |
| <a id="FORBIDDEN" href="#FORBIDDEN">**FORBIDDEN**</a> <br /> HTTP 403 <br />Retryable with New Payload                                       | The access token and client ID provided were valid, but don't have access to the requested resource. Typically, this is caused by passing a resource ID that isn't valid or managed by this API client.                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| <a id="INSUFFICIENT_SCOPES" href="#INSUFFICIENT_SCOPES">**INSUFFICIENT\_SCOPES**</a>  <br /> HTTP 403 <br /> Retryable with New Payload      | The client ID and API key provided were both valid and in the correct format, and the client itself has access to the requested resource. However, this specific access token does not have the required permissions to perform the current action on the resource. <br /><br />Use a different API key that has permissions for the endpoint you're calling to resolve this.                                                                                                                                                                                                                                                                        |

## Validation Errors

The Cash App Pay API validates all requests sent by API clients to ensure they match the documented schemas. If a request does not match the schema, a validation error will be returned.

All validation errors have a category of `INVALID_REQUEST_ERROR`.

<Warning title="Do not automatically retry validation errors">
  Validation errors will continue to return the same error code if the API client continues to make requests with the same payload. Retrying the request will not change the response
</Warning>

### General Validation Errors

The following errors may occur when the request is unable to be parsed due to invalid data being passed by the API client. These errors may occur on any request or field, regardless of the field's data type.

| Error Code                                                                                                                                          | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EXPECTED\_JSON\_BODY   <br />HTTP 400 <br /> Retryable with New Payload                                                                             | The API client sent a request without a JSON payload to an endpoint that requires a payload, or the JSON provided in the payload was unparseable. <br /> <br />The API client should make sure that it is passing a valid JSON payload to the endpoint. <br /> <br />If you're not sure if your JSON is valid, try using an online JSON validation tool (there are many of them) to give you feedback.                                                                                                                           |
| MISSING\_REQUIRED\_PARAMETER   <br /> HTTP 400      <br /> Retryable                                                                                | The API client did not provide a required query or body parameter.<br /> <br />Refer to the `field` parameter on the error object to see which field should have been present, but was not found in the payload.                                                                                                                                                                                                                                                                                                                 |
| <a id="CONFLICTING_PARAMETERS" href="#CONFLICTING_PARAMETERS">**CONFLICTING\_PARAMETERS**</a>  <br /> HTTP 400 <br /> Retryable with New Payload    | The API client sent a request payload that repeats parameters in the body that would overwrite each other (i.e., duplicate keys).       <br /><br /> Refer to the `field` parameter on the error object to see which field had duplicates in the request payload.                                                                                                                                                                                                                                                                |
| <a id="UNKNOWN_QUERY_PARAMETER" href="#UNKNOWN_QUERY_PARAMETER">**UNKNOWN\_QUERY\_PARAMETER**</a> <br /> HTTP 400 <br /> Retryable with New Payload | The API client sent a query parameter that does not exist in this version of the API.  <br /><br /> Refer to the `field` parameter on the error object to see which field could not be recognized.  <br /><br />The Cash App Pay API returns errors for unknown fields to prevent API clients from setting a field that isn't supported in a given API version, which could cause data integrity issues.                                                                                                                         |
| <a id="UNKNOWN_BODY_PARAMETER" href="#UNKNOWN_BODY_PARAMETER">**UNKNOWN\_BODY\_PARAMETER**</a>    <br /> HTTP 400  <br />Retryable with New Payload | The API client sent a field in the request payload that does not exist in this version of the API.  <br /><br /> Refer to the `field` parameter on the error object to see which field could not be recognized.    <br /><br /> The Cash App Pay API returns errors for unknown fields to prevent API clients from setting a field that isn't supported in a given API version, which could cause data integrity issues.                                                                                                         |
| <a id="INVALID_CONTENT_TYPE" href="#INVALID_CONTENT_TYPE">**INVALID\_CONTENT\_TYPE**</a>  <br />HTTP 400  <br /> Retryable with New Payload         | The API client specified a Content-Type header on the request that is not supported by the endpoint. <br /> Two content types are used in the API: <br /> - application/json, the standard type for all endpoints except file uploads <br /> - multipart/form-data, for file uploads only; part of the request is a JSON payload, the other part is a binary representation of the file.      <br /><br />The API client must set one of these content types as the header on each request. No other content types are accepted. |
| <a id="MISSING_REGION" href="#MISSING_REGION">**MISSING\_REGION**</a>   <br /> HTTP 400  <br /> Retryable with New Payload                          | The API client did not set the required X-Region header. <br /><br /> The API uses regions to provide lower latencies for API clients, enforce idempotency, and respect data sovereignty. Regions (in the form of an IATA airport code) must be specified on each request using the X-Region header. See [Regions and Localization](/cash-app-pay-partner-api/guides/technical-guides/api-fundamentals/requests/regions-and-localization)   for more information.                                                                |
| <a id="INVALID_REGION" href="#INVALID_REGION">**INVALID\_REGION**</a>     <br /> HTTP 400 <br /> Retryable with New Payload                         | The API client set the required X-Region header to an unrecognized code. <br /><br /> The API client should change the X-Region header value to a valid code from the [Regions and Localization](/cash-app-pay-partner-api/guides/technical-guides/api-fundamentals/requests/regions-and-localization) page.                                                                                                                                                                                                                     |
| <a id="FEATURE_DISABLED" href="#FEATURE_DISABLED">**FEATURE\_DISABLED**</a> <br /> HTTP 400 <br /> Retryable with New Payload                       | The API client set a field that requires a feature which is currently disabled for them. <br /><br /> The API client should stop using the functionality described in the message of the error and reach out to Cash App Pay support to request access if necessary.                                                                                                                                                                                                                                                             |

### String Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts string values.

| Error Code                                                                                                                             | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="EXPECTED_STRING" href="#EXPECTED_STRING">**EXPECTED\_STRING**</a><br />HTTP 400<br />Retryable with New Payload                 | The API client passed a non-string value to a field that only accepts strings.<br /><br />Refer to the `field` parameter on the error object to see which field should have been a string, but received a different data type.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| <a id="VALUE_TOO_LONG" href="#VALUE_TOO_LONG">**VALUE\_TOO\_LONG**</a><br />HTTP 400<br />Retryable with New Payload                   | The API client passed a string with too many characters to a field that has a maximum character length requirement.<br /><br />Refer to the `field` parameter on the error object to see which field had too many characters. The API documentation for that field should include the maximum character length it requires.                                                                                                                                                                                                                                                                                                                                                                                                          |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| VALUE\_TOO\_SHORT<br />HTTP 400<br />Retryable with New Payload                                                                        | The API client passed a string with too few characters to a field that has a minimum character length requirement.<br /><br />Refer to the `field` parameter on the error object to see which field had too few characters. The API documentation for that field should include the minimum character length it requires.                                                                                                                                                                                                                                                                                                                                                                                                            |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| <a id="VALUE_EMPTY" href="#VALUE_EMPTY">**VALUE\_EMPTY**</a><br />HTTP 400<br />Retryable with New Payload                             | The API client passed an empty string or whitespace-only string to a field that requires a non-empty value.<br /><br />Refer to the `field` parameter on the error object to see which field failed validation. The API client must pass at least one non-whitespace character to pass this validation.                                                                                                                                                                                                                                                                                                                                                                                                                              | INVALID\_ENUM\_VALUE<br />HTTP 400<br />Retryable with New Payload | The API client passed a value which was not in the set of allowed values for the given field.<br /><br />Refer to the \`field parameter on the error object to see which field failed validation. The API documentation for that field should include a list of valid values for the API client to provide to the field. | VALUE\_REGEX\_MISMATCH<br />HTTP 400<br />Retryable with New Payload | The API client passed a value which did not match a regular expression the API used to validate the value.<br /><br />Refer to the `field` parameter on the error object to see which field failed validation. The API documentation for that field should include a sample of the regular expression used to validate it. |
| <a id="INVALID_TIME" href="#INVALID_TIME">**INVALID\_TIME**</a><br />HTTP 400<br />Retryable with New Payload                          | The API client passed a value which could not be parsed by the server to a field accepting RFC-3339 formatted dates and / or timestamps, or the passed timestamp was not using UTC.<br /><br />Refer to the `field` parameter on the error object to see which field has an invalid date or timestamp. The API requires all time-related values to comply with [RFC-3339](https://datatracker.ietf.org/doc/html/rfc3339), which is a more restrictive subset of the [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) standard:<br />- Dates are formatted as YYYY-MM-DD.<br />- Timestamps are formatted as YYYY-MM-DDTHH:MM:DDZ.<br />Note that all timestamps must be in UTC time, or they will fail validation. |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| INVALID\_EMAIL\_ADDRESS<br />HTTP 400<br />Retryable with New Payload                                                                  | The API client passed a value which could not be parsed by the server to a field accepting well-formatted email addresses.<br />Refer to the `field` parameter on the error object to see which field has an invalid email address. At a minimum, the API requires email addresses to contain at least one character followed by an @ sign and then at least one more character, i.e. a\@b.                                                                                                                                                                                                                                                                                                                                          |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| <a id="INVALID_PHONE_NUMBER" href="#INVALID_PHONE_NUMBER">**INVALID\_PHONE\_NUMBER**</a><br />HTTP 400<br />Retryable with New Payload | The API client passed a value which could not be parsed by the server to a `field` accepting well-formatted phone numbers.<br /><br />Refer to the `field` parameter on the error object to see which field has an invalid phone number. We recommend using [libphonenumber](https://github.com/google/libphonenumber) to validate phone numbers before passing them to the API.                                                                                                                                                                                                                                                                                                                                                     |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |
| INVALID\_URL<br />HTTP 400<br />Retryable with New Payload                                                                             | The API client passed a value which could not be parsed by the server to a field accepting well-formatted URL.<br />Refer to the `field` parameter on the error object to see which field has an invalid URL. At a minimum, the API requires URLs to start with http\:// or https\:// and contain a domain and / or IP address.                                                                                                                                                                                                                                                                                                                                                                                                      |                                                                    |                                                                                                                                                                                                                                                                                                                          |                                                                      |                                                                                                                                                                                                                                                                                                                            |

### Integer Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts integer values.

| Error Code                                                                                                                | Description and Resolution                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="EXPECTED_INTEGER" href="#EXPECTED_INTEGER">**EXPECTED\_INTEGER**</a><br />HTTP 400<br />Retryable with New Payload | The API client passed a non-integer value to a field that only accepts integers.<br />Refer to the `field` parameter on the error object to see which field should have been a integer, but received a different data type.        |
| <a id="VALUE_TOO_HIGH" href="#VALUE_TOO_HIGH">**VALUE\_TOO\_HIGH**</a><br />HTTP 400<br />Retryable with New Payload      | The API client passed a larger integer than allowed to an integer field.<br />Refer to the `field` parameter on the error object to see which integer field requires a smaller value, then retry the request with a valid integer. |
| <a id="VALUE_TOO_LOW" href="#VALUE_TOO_LOW">**VALUE\_TOO\_LOW**</a><br />HTTP 400<br />Retryable with New Payload         | The API client passed a smaller integer than allowed to an integer field.<br />Refer to the `field` parameter on the error object to see which integer field requires a larger value, then retry the request with a valid integer. |

### Boolean Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts boolean values.

| Error Code                                                                                                                | Description and Resolution                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="EXPECTED_BOOLEAN" href="#EXPECTED_BOOLEAN">**EXPECTED\_BOOLEAN**</a><br />HTTP 400<br />Retryable with New Payload | The API client passed a non-boolean value to a field that only accepts booleans.<br />Refer to the `field` parameter on the error object to see which field should have been a boolean, but received a different data type. |

### Array Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts array values.

| Error Code                                                                  | Description and Resolution                                                                                                                                                                                                                                                                                                  |
| --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **EXPECTED\_ARRAY**<br />HTTP 400<br />Retryable with New Payload           | The API client passed a non-array value to a field that only accepts arrays.<br /><br />Refer to the `field` parameter on the error object to see which field should have been an array, but received a different data type.                                                                                                |
| **ARRAY\_LENGTH\_TOO\_LONG**<br />HTTP 400<br />Retryable with New Payload  | The API client passed more than the minimum number of elements to an array field.<br /><br />Refer to the `field` parameter on the error object to see which array field requires fewer elements.                                                                                                                           |
| **ARRAY\_LENGTH\_TOO\_SHORT**<br />HTTP 400<br />Retryable with New Payload | The API client passed fewer than the minimum number of elements to an array field.<br /><br />Refer to the `field` parameter on the error object to see which array field requires additional elements.                                                                                                                     |
| **INVALID\_ARRAY\_TYPE**<br />HTTP 400<br />Retryable with New Payload      | The API client passed an array to an array field, which is valid, but the data type within the array did not match the expected data type.<br /><br />Refer to the `field` parameter on the error object to see which array field has an invalid data type, then use the detail field to see what the correct data type is. |

### Object Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts nested objects.

| Error Code                                                         | Description and Resolution                                                                                                                                                                                                      |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **EXPECTED\_OBJECT**<br />HTTP 400<br />Retryable with New Payload | The API client passed a non-object value to a field that only accepts objects.<br /><br />Refer to the `field` parameter on the error object to see which field should have been an object, but received a different data type. |

### Map Validation Errors

The following errors may occur when a request fails validation due to invalid data being passed to a field that accepts maps.

| Error Code                                                                | Description and Resolution                                                                                                                                             |
| ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **TOO\_FEW\_MAP\_ENTRIES**<br />HTTP 400<br />Retryable with New Payload  | The API client did not add enough keys to the map.<br /><br />Refer to the `field` parameter on the error object to see which field was not provided with enough keys. |
| **TOO\_MANY\_MAP\_ENTRIES**<br />HTTP 400<br />Retryable with New Payload | The API client added too many keys to the map.<br /><br />Refer to the `field` parameter on the error object to see which field has too many map keys.                 |

## Common Runtime Errors

The following error codes are re-used throughout the Cash App Pay API and handle common errors, such as missing resources, pagination problems, and idempotency key reuse.

All of the following errors have a category of `INVALID_REQUEST_ERROR`.

| Error Code                                                                   | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **NOT\_FOUND**<br /> HTTP 404 <br />Retryable with New Payload               | The API client requested a resource that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct ID in the request.<br /><br />Unless the ID parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request.                                                                                                                                                                                                       |
| **CONFLICT**<br />HTTP 409<br />Retryable                                    | The action to perform on the resource cannot be completed due to a conflict with the current state of the resource or its related resources.                                                                                                                                                                                                                                                                                                                                                                                                         |
| **INVALID\_CURSOR**<br />HTTP 400<br />Retryable with New Payload            | The API client provided a cursor to a paginated endpoint that could not be parsed by the API.The API client should ensure that it is passing the correct cursor in the request.<br /><br />If the API client can't identify a valid cursor to provide, it should restart pagination by passing a blank cursor in the request and getting a new, valid cursor from the response.<br /><br />Unless the cursor parameter is changed, the endpoint will continue to respond with an "invalid cursor" error and the client should not retry the request. |
| **IDEMPOTENCY\_KEY\_REUSED**<br />HTTP 400<br />Retryable with New Payload   | The idempotency key provided by the API client has already been used with a different request payload on this endpoint.<br /><br />The API client must retry the request with a different idempotency key.                                                                                                                                                                                                                                                                                                                                           |
| **INVALID\_STATE\_TRANSITION**<br />HTTP 400<br />Retryable with New Payload | The API client is attempting a change not allowed by the state machine for the resource.<br /><br />This error indicates that the API client is referring to stale data or has a bug in its business logic. The API client should not retry the request.                                                                                                                                                                                                                                                                                             |
| **CLIENT\_NOT\_FOUND**<br />HTTP 400<br />Retryable with New Payload         | The API client passed a client ID value in the request payload that did not match the API client's ID, OR no client could be found for the given client ID in the request payload.<br /><br />The API client must retry the request with a different (and valid) client ID.                                                                                                                                                                                                                                                                          |
| **IDEMPOTENCY\_PAYLOAD\_MISMATCH**<br />HTTP 400                             | A previous idempotency key was already used to perform an action on the given resource with the given payload. <br /><br />The action cannot be performed again with a new idempotency key.                                                                                                                                                                                                                                                                                                                                                          |

## Rate Limit Errors

The Cash App Pay API rate limits OLAP (online analytical processing) requests to guarantee that the Cash App Pay service stays fast and stable. These include operations such as:

* Listing payments for an API client by reference ID
* Retrieving a list of active grants approved by a given customer
* ...and any other "list" or "search" endpoints in the API

*Reach out to Cash App Pay support at any time to request rate limit increases on these endpoints, and we will be happy to adjust them for you.*

<Note title="Payment processing requests are never rate-limited">
  **OLTP** (online transaction processing) requests related to payment acceptance are **never** rate-limited. This includes, but is not limited to:

  * Creating, reading, voiding, and capturing individual Payments
  * Creating, reading, voiding, and capturing individual Refunds
  * Creating, upserting, reading, and updating individual Bbrands
  * Creating, upserting, reading, and updating individual Merchants
  * Creating, reading, and updating Customer Requests
  * Reading and revoking Individual Grants

  Refer to the API reference pages for any endpoint to see if it's rate limited.
</Note>

| Error Code                                     | Description and Resolution                                                                                                                                                                                                                                                                                                                       |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **RATE\_LIMITED**<br />HTTP 429<br />Retryable | The API client is making too many requests too quickly and should reduce the number of calls it's making to the API.<br /><br />Rate-limited requests are not checked for validity, so errors may be encountered when they are retried later on.<br /><br />The API client should retry the requests at a slower pace using exponential backoff. |

## Payment Processing Errors

The following error codes may occur in payment processing flows. In addition to these errors, [grant errors](#grant-errors) may occur during payment processing, while using grants to create a payment.

All payment processing errors have a category of `PAYMENT_PROCESSING_ERROR`.

| Error Code                                                                                                                                                                                               | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="MERCHANT_NOT_FOUND" href="#MERCHANT_NOT_FOUND">**MERCHANT\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload                                                                         | The API client provided a merchant ID in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct merchant ID in the request.<br /><br />Unless the merchant ID parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request.                                                                                                                                                                                                                                                                                                             |
| <a id="PAYMENT_NOT_FOUND" href="#PAYMENT_NOT_FOUND">**PAYMENT\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload                                                                            | The API client provided a payment ID or idempotency key in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct payment ID or idempotency key in the request.<br /><br />Unless the payment ID or idempotency key parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request.                                                                                                                                                                                                                                                       |
| <a id="REFUND_NOT_FOUND" href="#REFUND_NOT_FOUND">**REFUND\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload                                                                               | The API client provided a refund ID or idempotency key in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct refund ID or idempotency key in the request.<br /><br />Unless the refund ID or idempotency key parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request.                                                                                                                                                                                                                                                          |
| <a id="CUSTOMER_DISABLED" href="#CUSTOMER_DISABLED">**CUSTOMER\_DISABLED**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                                               | The customer the API client is trying to take a payment or issue a refund for is deactivated in Cash App Pay and cannot send or receive funds. The payment or refund is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.                                                                                                                                                                                                                                                                                                                                                 |
| <a id="MERCHANT_DISABLED" href="#MERCHANT_DISABLED">**MERCHANT\_DISABLED**</a><br />HTTP 400<br />Retryable                                                                                              | The merchant the API client is trying to take a payment or issue a refund for is deactivated in Cash App Pay and cannot send or receive funds. The payment or refund is declined.<br /><br />The API client should consider this a retryable decline. Retrying the request when a merchant has become active will change the response. Grants are not consumed by this decline.<br /><br />Merchants can be deactivated by Cash App or by the API client. API client-initiated deactivations can be reversed using the [UpdateMerchant](/cash-app-pay-partner-api/api-reference/network-api/update-merchant) endpoint. Cash App-initiated deactivations are permanent and cannot be reversed. |
| <a id="MERCHANT_PENDING" href="#MERCHANT_PENDING">**MERCHANT\_PENDING**</a><br />HTTP 400<br />Retryable                                                                                                 | The merchant the API client is trying to take a payment or issue a refund for is still being onboarded to Cash App Pay.<br /><br />The API client should consider this a retryable decline. Retrying the request once the merchant is active will change the response. Grants are not consumed by this decline.<br /><br />The API client must wait for the merchant to move from a status of PENDING to ACTIVE before using it to take payments or issue refunds. This generally happens within 15 minutes of merchant creation, but may take longer in rare cases.                                                                                                                          |
| <a id="PAYMENT_DECLINED_COMPLIANCE" href="#PAYMENT_DECLINED_COMPLIANCE">**PAYMENT\_DECLINED\_COMPLIANCE**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                | Cash App Pay detected a violation of terms of service, Program Rules, or applicable laws for the payment the API client is trying to create or capture. The payment is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.<br /><br />No detail will be given as to what caused the compliance decline in the API; reach out to Cash App Pay support if you need to know more about an individual decline.                                                                                                                                                                  |
| <a id="PAYMENT_DECLINED_INSUFFICIENT_FUNDS" href="#PAYMENT_DECLINED_INSUFFICIENT_FUNDS">**PAYMENT\_DECLINED\_INSUFFICIENT\_FUNDS**</a><br />HTTP 400<br />Permanent (Do Not Retry)                       | The customer the API client is attempting to take a payment from does not have sufficient funds to complete the payment.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.                                                                                                                                                                                                                                                                                                                                                                                                          |
| <a id="PAYMENT_DECLINED_LIMIT_REACHED" href="#PAYMENT_DECLINED_LIMIT_REACHED">**PAYMENT\_DECLINED\_LIMIT\_REACHED**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                      | The customer the API client is attempting to take a payment from has reached the maximum amount of money they're allowed to spend from their account in a given time period.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.                                                                                                                                                                                                                                                                                                                                                      |
| <a id="PAYMENT_DECLINED_OTHER" href="#PAYMENT_DECLINED_OTHER">**PAYMENT\_DECLINED\_OTHER**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                               | The API declined the payment for an unknown reason. Used as a fallback when a more specific reason is not applicable.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.                                                                                                                                                                                                                                                                                                                                                                                                             |
| <a id="PAYMENT_DECLINED_RISK" href="#PAYMENT_DECLINED_RISK">**PAYMENT\_DECLINED\_RISK**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                                  | Cash App Pay detected this payment as having a high likelihood of fraud. The payment is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.<br /><br />No detail will be given as to what caused the risk decline in the API; reach out to Cash App Pay support if you need to know more about an individual decline.                                                                                                                                                                                                                                                       |
| <a id="PAYMENT_DECLINED_CUSTOMER_BLOCKED_MERCHANT" href="#PAYMENT_DECLINED_CUSTOMER_BLOCKED_MERCHANT">**PAYMENT\_DECLINED\_CUSTOMER\_BLOCKED\_MERCHANT**</a><br />HTTP 400<br />Permanent (Do Not Retry) | The customer the API client is attempting to take a payment from has blocked the merchant from sending them payments. The payment is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Reach out to Cash App Pay support if you need to know more about an individual decline.                                                                                                                                                                                                                                                                                                                                 |
| <a id="PAYMENT_INVALID_AMOUNT_MISMATCH" href="#PAYMENT_INVALID_AMOUNT_MISMATCH">**PAYMENT\_INVALID\_AMOUNT\_MISMATCH**</a><br />HTTP 400<br />Retryable with New Payload                                 | The amount the API client intended to created the payment with did not match the amount shown to the customer during the customer request for payment.<br /><br />The API client should consider this a retryable decline. Retrying the request with an amount that matches the one shown on the customer request will change the response. Grants are not consumed by this decline.                                                                                                                                                                                                                                                                                                          |
| <a id="PAYMENT_INVALID_CURRENCY_MISMATCH" href="#PAYMENT_INVALID_CURRENCY_MISMATCH">**PAYMENT\_INVALID\_CURRENCY\_MISMATCH**</a><br />HTTP 400<br />Retryable with New Payload                           | The currency the API client intended to created the payment with did not match the currency shown to the customer during the customer request for payment, or the currency of the merchant did not match the payment’s currency.<br /><br />The API client should consider this a retryable decline. Retrying the request with a currency that matches the one shown on the customer request and the one on the merchant will change the response. Grants are not consumed by this decline.                                                                                                                                                                                                   |
| <a id="PAYMENT_INVALID_TOO_LARGE" href="#PAYMENT_INVALID_TOO_LARGE">**PAYMENT\_INVALID\_TOO\_LARGE**</a><br />HTTP 400<br />Retryable with New Payload                                                   | The API declined the payment due to the amount being too high. The maximum payment size may be adjusted to prevent fraud, though this is not equivalent to a risk decline.<br /><br />The API client should consider this a retryable decline. Retrying the request with a lower amount may change the response. Grants are not consumed by this decline.                                                                                                                                                                                                                                                                                                                                     |
| <a id="PAYMENT_INVALID_TOO_SMALL" href="#PAYMENT_INVALID_TOO_SMALL">**PAYMENT\_INVALID\_TOO\_SMALL**</a><br />HTTP 400<br />Retryable with New Payload                                                   | The API declined the payment due to the amount being too low (below \$0.01 USD).<br /><br />The API client should consider this a retryable decline. Retrying the request with a larger amount may change the response. Grants are not consumed by this decline.                                                                                                                                                                                                                                                                                                                                                                                                                              |
| <a id="REFUND_DECLINED_COMPLIANCE" href="#REFUND_DECLINED_COMPLIANCE">**REFUND\_DECLINED\_COMPLIANCE**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                   | Cash App Pay detected a violation of terms of service, Program Rules, or applicable laws for the refund the API client is trying to create or capture. The refund is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.<br /><br />No detail will be given as to what caused the compliance decline in the API; reach out to Cash App Pay support if you need to know more about an individual decline.                                                                                                                                                                    |
| <a id="REFUND_DECLINED_OTHER" href="#REFUND_DECLINED_OTHER">**REFUND\_DECLINED\_OTHER**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                                  | The API declined the refund for an unknown reason. Used as a fallback when a more specific reason is not applicable.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.                                                                                                                                                                                                                                                                                                                                                                                                              |
| <a id="REFUND_DECLINED_RISK" href="#REFUND_DECLINED_RISK">**REFUND\_DECLINED\_RISK**</a><br />HTTP 400<br />Permanent (Do Not Retry)                                                                     | Cash App Pay detected this refund as having a high likelihood of fraud. The payment is declined.<br /><br />The API client should consider this a permanent decline. Retrying the request will not change the response. Grants are consumed by this decline.<br /><br />No detail will be given as to what caused the risk decline in the API; reach out to Cash App Pay support if you need to know more about an individual decline.                                                                                                                                                                                                                                                        |
| <a id="REFUND_INVALID_CURRENCY_MISMATCH" href="#REFUND_INVALID_CURRENCY_MISMATCH">**REFUND\_INVALID\_CURRENCY\_MISMATCH**</a><br />HTTP 400<br />Retryable with New Payload                              | The currency the API client intended to create the refund with is invalid for one or more of the following reasons:<br />- The currency of the merchant does not match the currency of the refund<br />- The currency of the payment being refunded does not match the currency of the refund<br /><br />The API client should consider this a retryable decline. Retrying the request with a correctly-matched currency changes the response.                                                                                                                                                                                                                                                |
| <a id="REFUND_INVALID_PAYMENT_UNCAPTURED" href="#REFUND_INVALID_PAYMENT_UNCAPTURED">**REFUND\_INVALID\_PAYMENT\_UNCAPTURED**</a><br />HTTP 400<br />Retryable with New Payload                           | The API declined the refund because the linked payment has not been captured.<br /><br />The API client should void the original payment instead of issuing a refund.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| <a id="REFUND_INVALID_TOO_LARGE" href="#REFUND_INVALID_TOO_LARGE">**REFUND\_INVALID\_TOO\_LARGE**</a><br />HTTP 400<br />Retryable with New Payload                                                      | The API declined the payment due to the amount being too high. This could be due to a disputed payment which the merchant lost. The maximum payment size can be adjusted to prevent fraud, though this is not equivalent to a risk decline.<br /><br />The API client should consider this a retryable decline. Retrying the request with a lower amount may change the response. Grants are not consumed by this decline.                                                                                                                                                                                                                                                                    |
| <a id="REFUND_INVALID_TOO_SMALL" href="#REFUND_INVALID_TOO_SMALL">**REFUND\_INVALID\_TOO\_SMALL**</a><br />HTTP 400<br />Retryable with New Payload                                                      | The API declined the refund due to the amount being too low (below \$0.01 USD).<br /><br />The API client should consider this a retryable decline. Retrying the request with a larger amount may change the response. Grants are not consumed by this decline.                                                                                                                                                                                                                                                                                                                                                                                                                               |
| <a id="REFUND_INVALID_SCOPE_MISMATCH" href="#REFUND_INVALID_SCOPE_MISMATCH">**REFUND\_INVALID\_SCOPE\_MISMATCH**</a><br />HTTP 400                                                                       | A payment/refund cannot be processed for this client because it has missing bank account configurations necessary for settlement purposes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| <a id="MISSING_SETTLEMENT_CONFIGURATION" href="#MISSING_SETTLEMENT_CONFIGURATION">**MISSING\_SETTLEMENT\_CONFIGURATION**</a><br />HTTP 400	<br />                                                        | A payment/refund cannot be processed for this client because it has missing configurations necessary for reporting purposes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

## Merchant & Brand Registration Errors

The following error codes may occur while managing merchants and brands on Cash App Pay.

All merchant registration errors have a category of `MERCHANT_ERROR` or `BRAND_ERROR`.

| Error Code                                                                                                                                                                   | Description and Resolution                                                                                                                                                                                                                                                                                                                                               |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a id="BRAND_NOT_FOUND" href="#BRAND_NOT_FOUND">**BRAND\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload                                                      | The API client provided a brand ID in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct brand ID in the request.<br /><br />Unless the brand ID parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request. |
| <a id="MERCHANT_MISSING_ADDRESS_OR_SITE" href="#MERCHANT_MISSING_ADDRESS_OR_SITE">**MERCHANT\_MISSING\_ADDRESS\_OR\_SITE**</a><br />HTTP 400<br />Retryable with New Payload | The API client tried to create or update a merchant and set both the address and site URL fields to null. Merchants require an address or site URL.<br /><br />The API client should set an address or site URL in the payload to resolve this error, then retry the request.                                                                                            |

## Grant Errors

The following error codes may occur while using any endpoint that interacts with grants, including ones used to create payments or refunds.

All grant errors have a category of `GRANT_ERROR`.

| Error Code                                                                                                                                                | Description and Resolution                                                                                                                                                                                                                                                                                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <a id="GRANT_ACTION_TYPE_MISMATCH" href="#GRANT_ACTION_TYPE_MISMATCH">**GRANT\_ACTION\_TYPE\_MISMATCH**</a><br />HTTP 400<br />Retryable with New Payload | The API found the provided grant and attempted to use it, but failed due to the grant's action not being compatible with the endpoint being called. The grant was not consumed.<br /><br />The API client should send the customer through the customer request flow with the correct action type for the endpoint it wants to call and generate a valid grant.          |
| <a id="GRANT_CONSUMED" href="#GRANT_CONSUMED">**GRANT\_CONSUMED**</a><br />HTTP 400<br />Retryable with New Payload                                       | The API found the provided grant and attempted to use it, but failed due to the grant being previously used (for one-time grants).<br /><br />The API client should send the customer through the customer request flow again to generate a fresh, unused, grant.                                                                                                        |
| <a id="GRANT_EXPIRED" href="#GRANT_EXPIRED">**GRANT\_EXPIRED**</a><br />HTTP 400<br />Retryable with New Payload                                          | The API found the provided grant and attempted to use it, but failed due to the grant having expired.<br /><br />The API client should send the customer through the customer request flow again to generate a fresh grant.                                                                                                                                              |
| <a id="GRANT_NOT_FOUND" href="#GRANT_NOT_FOUND">**GRANT\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload                                   | The API client provided a grant ID in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct grant ID in the request.<br /><br />Unless the grant ID parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request. |
| <a id="GRANT_REVOKED" href="#GRANT_REVOKED">**GRANT\_REVOKED**</a><br />HTTP 400<br />Retryable with New Payload                                          | The API found the provided grant and attempted to use it, but failed due to the grant having been revoked.<br /><br />The API client should send the customer through the customer request flow again to generate a fresh grant.                                                                                                                                         |

## Dispute Errors

The following error codes may occur while using any endpoint that responds to disputes.

All dispute errors have a category of `DISPUTE_ERROR`.

| Error Code                                                                                                                        | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="DISPUTE_MISSING_EVIDENCE" href="#DISPUTE_MISSING_EVIDENCE">**DISPUTE\_MISSING\_EVIDENCE**</a><br />HTTP 400<br />Retryable | The request to challenge the dispute was valid and a dispute existed for the provided ID, but no evidence was found to challenge the dispute with. Since no evidence results in an automatic loss of the dispute, API clients are not allowed to "challenge" a dispute without evidence.<br /><br />If you want to respond to a dispute with no evidence, you should instead call the [AcceptDispute](/cash-app-pay-partner-api/api-reference/network-api/accept-dispute) endpoint, which makes the intent to "lose" the dispute explicit. Otherwise, upload evidence for the dispute and then re-attempt challenging it. |

## Webhook Errors

The following error codes may occur while using any webhook related endpoints.

All webhook errors have a category of `WEBHOOK_ERROR`.

| Error Code                                                                                                                                                | Description and Resolution                                                                                                                                                                                                                                                                                                                                                                                |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="WEBHOOK_ENDPOINT_NOT_FOUND" href="#WEBHOOK_ENDPOINT_NOT_FOUND">**WEBHOOK\_ENDPOINT\_NOT\_FOUND**</a><br />HTTP 400<br />Retryable with New Payload | The API client provided a webhook endpoint ID in the request that could not be found or isn't owned by the client.<br /><br />The API client should ensure that it is passing the correct webhook endpoint ID in the request.<br /><br />Unless the webhook endpoint ID parameter is changed, the endpoint will continue to respond with a "not found" error and the client should not retry the request. |
| <a id="WEBHOOK_ENDPOINT_TOO_MANY" href="#WEBHOOK_ENDPOINT_TOO_MANY">**WEBHOOK\_ENDPOINT\_TOO\_MANY**</a><br />HTTP 400                                    | The maximum number of webhook endpoints for the client has been reached. Delete existing webhook endpoints before trying to create new ones.                                                                                                                                                                                                                                                              |

## Customer Errors

The following error codes may occur while using any customer-related endpoints.

All customer errors have a category of `CUSTOMER_ERROR`.

| Error Code                                                                                                                                       | Description and Resolution                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| <a id="CUSTOMER_DELETED_ACCOUNT" href="#CUSTOMER_DELETED_ACCOUNT">**CUSTOMER\_DELETED\_ACCOUNT**</a><br />HTTP 400<br />Permanent (Do Not Retry) | The customer account has been deleted. This is a permanent operation that cannot be revoked. |

## API Errors

In the rare event that the Cash App Pay APIs experience issues, the error codes below will be returned.

All server errors (ones not caused by the API client) have a category of `API_ERROR`.

| Error Code                                                                                                               | Description and Resolution                                                                                                                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="INTERNAL_SERVER_ERROR" href="#INTERNAL_SERVER_ERROR">**INTERNAL\_SERVER\_ERROR**</a><br />HTTP 500<br />Retryable | A general server error occurred, due to an issue with the API.<br /><br />The API client should retry its request. If errors continue, reach out to Cash App Pay support.                                       |
| <a id="SERVICE_UNAVAILABLE" href="#SERVICE_UNAVAILABLE">**SERVICE\_UNAVAILABLE**</a><br />HTTP 503<br />Retryable        | The API being called is experiencing an outage.<br /><br />The API client should retry its request. If errors continue, reach out to Cash App Pay support.                                                      |
| <a id="GATEWAY_TIMEOUT" href="#GATEWAY_TIMEOUT">**GATEWAY\_TIMEOUT**</a><br />HTTP 504<br />Retryable                    | The API was unable to process the request in a reasonable period of time and terminated the request.<br /><br />The API client should retry its request. If errors continue, reach out to Cash App Pay support. |