# Error types, codes, and objects

## Change event error object

When DigitalRiver.js detects a problem with an [element](https://docs.digitalriver.com/commerce-api/resources/reference/elements), its [change event](https://docs.digitalriver.com/commerce-api/resources/elements#change) returns an `error` contains a `type`, `code`, and `message`.

{% tabs %}
{% tab title="Change Event Error object" %}

```javascript
{
    "type": "validation_error",
    "code": "invalid_card_number",
    "message": "Your card number is invalid."
}
```

{% endtab %}
{% endtabs %}

## Create source error object

If a problem occurs during the tokenization request, the [`createSource` ](https://docs.digitalriver.com/commerce-api/resources/digitalriver-object#digitalriver-createsource-element-sourcedata)method and [`on source`](https://docs.digitalriver.com/commerce-api/resources/elements#source) event returns an error with a `type` and an array of `errors[]`, each containing a detailed `message`.

{% tabs %}
{% tab title="Create Source Error object" %}

```javascript
{
    "type": "bad_request",
    "errors": [{
           "code": "invalid_parameter",
           "parameter": "owner.firstName",
           "message": "'' is not a valid owner.firstname."
    },
    {
            "code": "currency_unsupported",
            "parameter": "currency",
            "message": "currency 'xyz' is not supported."
    }]
}
```

{% endtab %}
{% endtabs %}

## Error types

The following table contains a list of DigitalRiver.js error types.

| Type                    | Description                                                                                                                                                                                                                                                                                             |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `bad_request`           | The server could not process the request due to a client error (for example, malformed request syntax). Correct the problem and try again.                                                                                                                                                              |
| `not_found`             | The server can't find the requested resource. No indication is given of whether the condition is temporary or permanent.                                                                                                                                                                                |
| `request_timeout`       | The client did not produce the request within the time that the server was prepared to wait. Resend the request without modifications at any later time.                                                                                                                                                |
| `internal_server_error` | The server encountered an unexpected problem that prevented it from fulfilling the request.                                                                                                                                                                                                             |
| `unauthorized`          | The request requires user authentication. Resend the request with valid user authentication.                                                                                                                                                                                                            |
| `too_many_requests`     | The user sent too many requests in a given amount of time ("rate limiting"). The response should include details explaining the condition and may include a Retry-After header indicating how long to wait before sending a new request.                                                                |
| `conflict`              | <p>There is a request conflict with the current state of the server.</p><p>Conflicts are most likely to occur in response to a PUT request. For example, you may get a 409 response when uploading a file that is older than the one already on the server resulting in a version control conflict.</p> |
| `validation_error`      | <p>Errors triggered by our client-side libraries when failing to validate fields (for example, when a card number or expiration date is invalid or incomplete).</p><p>Used by: DigitalRiver.js</p>                                                                                                      |
| `no_network`            | There is no network coverage or cellular data connection.                                                                                                                                                                                                                                               |

## Error codes

The following table contains a list of DigitalRiver.js error codes.

{% hint style="info" %}
You must only indicate that the payment has been declined, and you must not share the code or descriptions below with the customer.
{% endhint %}

| Code                                       | Description                                                                                                                                                                        |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `address_mismatch`                         | There is a problem with your address.                                                                                                                                              |
| `invalid_expiration_date`                  | The card is expired, or the expiration date is invalid.                                                                                                                            |
| <p></p><p><code>invalid\_format</code></p> | The format of your request is invalid.                                                                                                                                             |
| `invalid_parameter`                        | The parameter is invalid. Check the [Commerce API reference](https://app.gitbook.com/o/-LqC_Nsz4Z-JxICCsFw3/s/oUderMtztdH7OKDXmYbI/) to see which values are valid and try again.  |
| `invalid_string_empty`                     | The string value is empty. Provide a valid string value and try again.                                                                                                             |
| `method_not_allowed`                       | The method is not allowed. Provide a valid method value and try again.                                                                                                             |
| `missing_parameter`                        | A parameter is missing. Check the [Commerce API reference](https://app.gitbook.com/o/-LqC_Nsz4Z-JxICCsFw3/s/oUderMtztdH7OKDXmYbI/) to see which values are required and try again. |
| `not_found`                                | The item requested was not found.                                                                                                                                                  |
| `source_not_found`                         | The source you have requested was not found.                                                                                                                                       |
| `unknown_error`                            | An unknown error has occurred.                                                                                                                                                     |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.digitalriver.com/commerce-api/resources/reference/error-types-codes-and-objects.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
