# CheckoutError
The Flow `CheckoutError` class is a sealed class that extends the standard Kotlin `Exception` class. There are four types as follows:
* `CheckoutError.Integration`
* `CheckoutError.Request`
* `CheckoutError.PaymentMethod`
* `CheckoutError.Submit`
Each type contains the following properties:
| Property | Type | Description |
| --- | --- | --- |
| `message` | `String` | A human-readable description of the error. The description is subject to change. For example, to improve clarity. To ensure you catch errors correctly, reference the values returned by the `type` and `code` fields instead. |
| `code` | `CheckoutErrorCode` | A code representing the error. To see how to resolve it, see [Error codes](https://www.checkout.com/docs/payments/accept-payments/accept-a-payment-on-your-mobile-app/flow-for-mobile-library-reference/android/error-codes.md). |
| `details` | `CheckoutErrorDetails` | Additional error properties.
All error types provide the following properties in the `CheckoutErrorDetails` object:
- `mobileSessionId`
- `paymentSessionId`
- `type`
- `CheckoutError.Request` |
## CheckoutError.Integration
Integration errors are caused by an invalid use of the Flow for mobile SDK.
`CheckoutError.Integration` contain the following properties within the `CheckoutErrorDetails.Integration` object:
| Property | Type | Description |
| --- | --- | --- |
| `mobileSessionId` | `String` | The unique identifier of the browser session that created the `FlowComponent`. |
| `paymentSessionId` | `String` | The unique identifier of the [payment session response](https://api-reference.checkout.com/tag/Flow/#operation/CreatePaymentSession!c=201&path=id&t=response). |
| `type` | `PaymentMethodName?` | The name of the payment method used for the payment, if applicable. |
## CheckoutError.Request
Request errors are caused by network request failures.
`CheckoutError.Request` contain the following properties within the `CheckoutErrorDetails.Request` object:
| Property | Type | Description |
| --- | --- | --- |
| `mobileSessionId` | `String` | The unique identifier of the browser session that created the FlowComponent. |
| `paymentSessionId` | `String` | The unique identifier of the provided [payment session response](https://api-reference.checkout.com/tag/Flow/#operation/CreatePaymentSession!c=201&path=id&t=response). |
| `type` | `PaymentMethodName?` | The name of the payment method used for the payment, if applicable. |
| `paymentId` | `String?` | The unique identifier for the declined payment request. |
| `requestErrorCodes` | `List\?` | Additional error codes returned from the network request. |
| `requestId` | `String?` | The unique identifier for the network request. |
| `status` | `Int?` | The HTTP response status code for the network request. |
## CheckoutError.PaymentMethod
Payment method errors are caused by unexpected failures when integrating a payment method's client-side library.
`CheckoutError.PaymentMethod` contain the following properties within the `CheckoutErrorDetails.`PaymentMethod object:
| Property | Type | Description |
| --- | --- | --- |
| `mobileSessionId` | `String` | The unique identifier of the browser session that created the `FlowComponent` |
| `paymentSessionId` | `String` | The unique identifier of the provided [payment session response](https://api-reference.checkout.com/#operatioCreatePaymentSession!c=201&path=id&t=response). |
| `type` | `PaymentMethodName` | The name of the payment method used for the payment, if applicable |
## CheckoutError.Submit
Submit errors are caused by invalid attempts to submit a payment request.
`CheckoutError.Submit` contain the following properties within the `CheckoutErrorDetails.Submit` object:
| Property | Type | Description |
| --- | --- | --- |
| `mobileSessionId` | `String` | The unique identifier of the browser session that created the `FlowComponent`. |
| `paymentSessionId` | `String` | The unique identifier of the provided [payment session response](https://api-reference.checkout.com/tag/Flow/#operation/CreatePaymentSession!c=201&path=id&t=response). |
| `type` | `PaymentMethodName` | The name of the payment method used for the payment, if applicable. |