# Version & compatibility requirements | Requirement | Value | Notes | | --- | --- | --- | | Java runtime | **17+** | The SDK targets Java 17 bytecode and is not compatible with older JVM versions. | | Kotlin | **2.4+** | Only relevant to Kotlin applications. The SDK is built with Kotlin 2.4.10. | | Build tool | Maven 3.9+ or Gradle | The SDK is built with Maven but can also be used in Gradle projects. | ## Configuration limitations The following SDK settings are currently managed internally and cannot be customized through the public client interface: - **HTTP transport.** The SDK uses Java's built-in `java.net.http.HttpClient`. Custom HTTP clients, such as OkHttp or Apache HttpClient, are not supported. - **Timeouts.** The connection timeout is fixed at 10 seconds, and the request timeout is fixed at 30 seconds. - **Retries.** The SDK does not automatically retry failed requests. See [Idempotency & retries](/docs/developer/sdk/errors-and-resilience/idempotency-and-retries). You can configure your OAuth client ID, client secret, and target [environment](/docs/developer/sdk/client/authentication) through `RatepayClient.Builder`. See [Client configuration](/docs/developer/sdk/client/client-configuration). ## JSON serialization The SDK uses Jackson to automatically serialize and deserialize JSON requests and responses. It is bundled within the SDK, so it's not listed as a Maven dependency. - **Field naming:** The API uses snake_case JSON fields, while the SDK exposes camelCase properties in Java and Kotlin. - **Unknown fields:** The SDK ignores unrecognized JSON fields in API responses to maintain forward compatibility. - **Unknown enum values:** Enums define an `UNKNOWN`, so they map unrecognized API values to it instead of throwing a deserialization exception.