Skip to content

Releases: Adyen/adyen-java-api-library

Adyen Java API Library v42.0.1

28 May 08:49

Choose a tag to compare

Summary

This patch-release aligns the library model in the Java library with response of POST /paymentMethods from Checkout/Payments API (see API Explorer). Adyen's backend was already including the cashapp tag in the response but it was not included in the corresponding OpenAPI specification.

What's Changed

Other Changes 🖇️

Full Changelog: v42.0.0...v42.0.1

Adyen Java API Library v42.0.0

21 May 12:20

Choose a tag to compare

This release delivers a modernized foundation for point-of-sale and financial services integrations. The highlight is the new Cloud Device API, a first-class replacement for the legacy TerminalCloudAPI that brings built-in Nexo message encryption, device management, and a cleaner service design. Two new services expand platform capabilities: Direct Debit Mandates for Balance Platform and Dynamic Offers for Capital. This release also drops JAXB dependencies, making it compatible with Jakarta +9 versions.


What's new

Cloud Device API (#1808, #1835, #1867, #1906, #1914)

Two new services replace the deprecated TerminalCloudAPI:

  • CloudDeviceApi — Send synchronous and asynchronous Terminal API messages, query connected devices and device status.
  • EncryptedCloudDeviceApi — Variant of CloudDeviceApi with built-in Nexo message encryption/decryption. Requires EncryptionCredentialDetails.

New supporting security classes: NexoSecurityManager, NexoCryptoPrimitives, NexoDerivedKeyGenerator, NexoSecurityException, EncryptionCredentialDetails.

New documentation: doc/CloudDeviceApi.md, doc/MigratingToCloudDeviceApi.md, doc/TerminalApi.md.

New services

  • DirectDebitMandatesApi (Balance Platform, v2) (#1800) — Create, retrieve, update, and cancel direct debit mandates.
  • DynamicOffersApi (Capital, v1) (#1793) — Calculate preliminary offers, create static offers from dynamic offers, and list all dynamic offers.

New models

Area Notable additions
checkout AlmaDetails, AppIdentifierInfo, ConfidenceScore, DirectDebitAuDetails, KlarnaNetworkDetails, PixPayByBankDetails, PixPayByBankRiskSignals, ScreenDimensions
management ApplePayResponseInfo, GooglePayResponseInfo, KlarnaResponseInfo, MCResponseInfo, VisaResponseInfo, SepaDirectDebitResponseInfo, PayByBankPlaidResponseInfo, Dcc, GenericPmWithTdiUpdateInfo, and ~50 additional *ResponseInfo/*UpdateInfo types
configurationwebhooks Mandate notification types (Mandate, MandateBankAccount, MandateNotificationData, MandateNotificationRequest), payout schedule notification types, ResultDetails
balanceplatform ListMandatesResponse, Mandate, MandateBankAccount, MandatePartyIdentification, MandateStatus, MandateType, MandateUpdate, UKLocalMandateAccountIdentification
capital CalculateGrantOfferRequest, CalculatedGrantOffer, CreateGrantOfferRequest, DynamicOffer, DynamicOfferRepayment, GetDynamicOffersResponse
transferwebhooks FundingInstrument, UltimatePartyIdentification
tapi Full TAPI model package (SaleToPOIRequest, SaleToPOIResponse, PaymentRequest, PaymentResponse, and all transaction/terminal types)
clouddevice CloudDeviceApiRequest, CloudDeviceApiResponse, CloudDeviceApiAsyncResponse, DeviceStatus, DeviceStatusResponse, ConnectedDevicesResponse, and security message types

TAPI utility helpers (#1913)

New classes in com.adyen.util.tapi:

  • PredefinedContentHelper — Parses and manages key-value pairs within a PredefinedContent reference ID string.
  • SaleDataHelper — Parses SaleToAcquirerData from a SaleData object, auto-detecting Base64-encoded JSON or form-encoded key-value pairs.
  • SaleToAcquirerData — POJO representing the sale information passed to the acquirer (shopper email, recurring contract, metadata, etc.).
  • SaleToAcquirerDataParser — Serializes/deserializes SaleToAcquirerData to/from Base64 JSON or form-encoded format.

Client now implements Closeable (#1795)

Client implements java.io.Closeable, enabling use in try-with-resources for proper HTTP connection cleanup:

try (Client client = new Client(config)) {
    // use client
}

The underlying HTTP client is now lazily initialized and shared across requests (thread-safe, double-checked locking).


Changed

  • GrantOffersApi method names (#1793) — All references to "grant offer" have been renamed to "static offer" to align with the API spec (getAllGrantOffers → now returns static offers, getGrantOffer → now described as "Get the details of a static offer"). Method names are unchanged but Javadoc and semantics now reflect "static offers" vs the new dynamic offers.

  • Terminal API documentation restructured (#1909) — Terminal API usage docs moved from the main README.md into standalone files (doc/TerminalApi.md, doc/CloudDeviceApi.md, doc/MigratingToCloudDeviceApi.md).

  • TransfersApi.getAllTransfers() category parameter (#1937) — Javadoc updated to document card and topUp as additional valid values.

  • ScaAssociationManagementApi entityType parameter (#1912) — Javadoc updated to include legalEntity as a valid value.


Fixed

  • HTTP timeout not applied by default (#1795) — Timeout configuration was not being set as the default RequestConfig on the HTTP client, so connectionTimeoutMillis, readTimeoutMillis, and connectionRequestTimeoutMillis had no effect. Fixed so all requests inherit the configured timeouts (default: 60 000 ms each).

  • Socket timeout not set (#1795) — SocketTimeout was not configured, leaving the client potentially hanging indefinitely on unresponsive hosts.

  • TAPI unknown enum values threw exceptions (#1900) — All enum types in the tapi package now handle unknown values gracefully instead of throwing a deserialization exception, improving forward-compatibility with new API values.

  • createBaseURL used replaceFirst instead of replace (#1952) — String.replaceFirst() interprets its first argument as a regex, causing failures for strings containing regex special characters. Fixed to use String.replace().

Breaking Changes

1. Region.IN enum value removed (#1837)

The Region.IN (India) value has been removed from com.adyen.enums.Region.

// Before — no longer compiles
config.setTerminalApiRegion(Region.IN);

// After — remove or replace with the appropriate region
config.setTerminalApiRegion(Region.APSE);

2. GrantOffersApi.getAllGrantOffers() now requires accountHolderId (#1793)

The no-argument overload has been removed. accountHolderId is now a required parameter.

// Before
GrantOffers offers = grantOffersApi.getAllGrantOffers();

// After
GrantOffers offers = grantOffersApi.getAllGrantOffers("YOUR_ACCOUNT_HOLDER_ID");

3. PaymentMethodsMerchantLevelApi.getApplePayDomains() return type changed (#1971)

The return type changed from ApplePayInfo to ApplePayResponseInfo.

// Before
ApplePayInfo info = paymentMethodsApi.getApplePayDomains(merchantId, paymentMethodId);

// After
ApplePayResponseInfo info = paymentMethodsApi.getApplePayDomains(merchantId, paymentMethodId);

4. JAXB annotations removed from nexo models (#1807, #1802)

All javax.xml.bind annotations (@XmlElement, @XmlType, @XmlEnum, etc.) have been removed from the nexo model classes. Serialization now uses Gson's @SerializedName annotations exclusively. This resolves the class-loading conflicts on clients using Jakarta +9

The javax.xml.bind:jaxb-api compile dependency has been removed and replaced by commons-codec. A Maven Enforcer rule now blocks javax.xml.bind:jaxb-api from the dependency tree.


Deprecated


Dependency Updates

Dependency Previous Updated
com.fasterxml.jackson (monorepo) 2.12.7 2.21.3
com.google.code.gson:gson 2.11.0 2.14.0
commons-codec:commons-codec 1.22.0 (new compile dep)
org.apache.httpcomponents.client5:httpclient5 5.5 5.6.1
io.swagger.core.v3:swagger-annotations 2.2.30 2.2.49
org.junit.jupiter:junit-jupiter 5.11.4 5.14.4
org.mockito (monorepo) 5.21.0 5.23.0
`com.squareup....
Read more

Adyen Java API Library v41.1.1

08 Apr 14:22
8406355

Choose a tag to compare

What's Changed

Fixes ⛑️

Correct Classic Recurring URL #1897:

  • test: https://pal-test.adyen.com/pal/servlet/Recurring/v68
  • live: https://{prefix}-pal-live.adyenpayments.com/pal/servlet/Recurring/v68

Full Changelog: v41.1.0...v41.1.1

Adyen Java API Library v41.1.0

05 Mar 08:37

Choose a tag to compare

New Features 💎

Checkout API

  • Add attribute merchantReference in CheckoutForwardRequest
  • In StoredPaymentMethodDetails add several enum values to support alipay_plus
  • Add attribute cardBin ins StoredPaymentMethodResource

Balance Platform API

Management API

  • Add HomeScreenSettings and KioskModeSettings in TerminalSettings

Recurring API

Recurring endpoint has been updated to:

  • (on TEST) paltokenization-test.adyen.com/paltokenization/servlet/Recurring/v68
  • (on LIVE) myprefix-paltokenization-live.adyenpayments.com/paltokenization/servlet/Recurring/v68

Payout API

  • Added enum AMBER in ResponseAdditionalDataCommon

Classic Payments API

  • Added Refused and Error enum values in ModificationResult
  • Added enum AMBER in ResponseAdditionalDataCommon

Transfer Webhooks

  • Add InterchangeData in the list of EventsData
  • Add enum value interchangeAdjusted in Modification, TransferData, TransferEvent

Transfers API

  • Add InterchangeData in the list of EventsData
  • Add enum value interchangeAdjusted in Modification, Transfer, TransferData, TransferEvent

Note

Counterparty has been renamed to GrantCounterparty, however this change should not affect existing integrations since it belongs to a feature not yet being available.

If you use the Transfers API Capital endpoints you should consider migrating to the Capital API.

Fixes ⛑️

  • Update cache action version in action.yml by @gcatanese in #1720
  • Change JDK version to 21 and distribution to adopt by @gcatanese in #1721
  • Replace deprecated 'adopt' distribution with 'temurin' in GitHub Actions by @Copilot in #1723
  • Add Relayed Authorization Webhooks in README.md by @gcatanese in #1734

Other Changes 🖇️

Other PRs

New Contributors

Full Changelog: v41.0.0...v41.1.0

Adyen Java API Library v41.0.0

30 Jan 09:31

Choose a tag to compare

What's Changed

Important

This release was bumped as a major due to a breaking change in Management API that was introduced in v40.1.0.
If you are not using the affected change in Management API (see #1646) from v40.1.0, you should be able to adopt this newer version without breaking changes. We apologize for the confusion.

This release includes introduces the new Capital API since capital-related features from Transfers API have been deprecated.
Check API docs for further details:

Breaking Changes 🛠

New Features 💎

Fixes ⛑️

  • Untrusted Actions Versioning by @gcatanese in #1614
  • fix: prevent command injection in format workflow by @Copilot in #1618

Other Changes 🖇️

New Contributors

Full Changelog: v40.1.0...v41.0.0

Adyen Java API Library v40.1.0

16 Dec 10:13
34b432a

Choose a tag to compare

💎 New Features

Checkout API

  • Add support for /forward endpoint
  • Add support for ExternalTokenDetails payment method
  • In FundingSourceEnum add enum value PREPAID in ApplePayDetails, ApplePayDonations, CardDonations, and CardDetails
  • In CardDetails and CardDonations add billingSequenceNumber attribute
  • In PaymentRequest add PaymentValidations
  • In PaymentResponse and PaymentDetailsResponse add PaymentValidationsResponse
  • In CheckoutBankTransferAction add attributes bankCode, branchCode,
  • In GenericIssuerPaymentMethodDetails add enum ONLINEBANKING_IN
  • In ResponseAdditionalDataSepa add sepadirectdebitSepadirectdebitDueDate attribute
  • In StoredPaymentMethodResource add mandate attribute
  • In WeChatPayMiniProgramDetails add storedPaymentMethodId attribute

Classic Payments API

  • In PaymentRequest add enum PREPAID
  • In ResponseAdditionalDataSepa add sepadirectdebitSepadirectdebitDueDate attribute

BalancePlatform

  • remove DeviceInfo fields: cardCaptureTechnology, deviceName, imei, isoDeviceType, msisdn, osVersion, paymentTypes, serialNumber, storageTechnology
  • in Balance add pendingAvailable attribute
  • in BulkAddress add name attribute
  • in CreateSweepConfigurationV2 and UpdateSweepConfigurationV2 add enum ReasonEnum.SCHEMEADVICE

Payout API

  • In add ResponseAdditionalDataSepa add sepadirectdebitSepadirectdebitDueDate attribute

Legal Entity Management API

  • Add requestPeriodicReview method in LegalEntitiesApi

Management API

  • In AffirmInfo add PricePlanEnum enums
  • In PaymentMethod add svs and valueLink attributes
  • In PaymentMethodResponse add enums KLARNA_B2B, SVS, VALUELINK
  • In PaymentMethodSetupInfo aadd svs and valueLink attributes
  • In PaymentMethodSetupInfo add enums KLARNA_B2B, SVS, VALUELINK

Transfers API

  • In UltimatePartyIdentification add fundingInstrument attribute
  • In BankAccountV3 add storedPaymentMethodId attribute
  • In Transfer, TransferData and TransferEvent add add enum ReasonEnum.SCHEMEADVICE

Transfer Webhooks

  • In BankAccountV3 add storedPaymentMethodId attribute
  • Add new event balancePlatform.balanceAccount.balance.block.released

Other Changes 🖇️

Fixes ⛑️

Full Changelog: v40.0.0...v40.1.0

Adyen Java API Library v40.0.1

03 Dec 10:48

Choose a tag to compare

Adyen Java API Library v40.0.1

This release introduces minor improvements on a dependency.

  • Update Apache HttpClient 5.5 #1596

Adyen Java API Library v40.0.0

10 Oct 07:29
05ee44f

Choose a tag to compare

This release introduces major improvements, including support for LEM v4 and an updated Client setup.
Make sure to review the highlights below and check the breaking changes that may require updates in your integration.

Legal Entity Management API v4

LEM v4 enhances the onboarding process and ensures compliance with evolving regulatory data requirements across regions and products.

See the Onboarding v4 documentation for details, and review the API changes from v3 to v4 to understand the impact on your integration.

⚠️ Critical changes:

  • BusinessLine: capability attribute has been removed
  • SourceOfFunds: acquiringBusinessLineId attribute has been removed
  • SourceOfFunds: adyenProcessedFunds attribute is now required

See new fields and other details in #1542

🛠 Breaking Changes

Client Setup

The Client class has been updated to enforce best practices and remove deprecated methods.

You can now configure the client using the Config object for a cleaner and more consistent setup:

// setup using Config object
Config config = new Config()
    .environment(Environment.LIVE)
    .liveEndpointUrlPrefix("myCompany")
    .apiKey(apiKey);
Client client = new Client(config);

Several several legacy methods, deprecated already for 4-5 years, have been removed. See more details here #1525

Checkout API

New ShopperName class has been introduced, to be used when defining the name of the shopper. This affects several classes: CreateCheckoutSessionRequest, CreateCheckoutSessionResponse, DonationPaymentRequest, PaymentRequest.

The attribute shopperName has changed from

"shopperName"?: Name | null;

to

"shopperName"?: ShopperName | null;

💎 New Features

Checkout API

  • In PaymentRequest add attribute sdkData

Recurring API

  • In Recurring add enum values EXTERNAL and ONECLICK_RECURRING

Management API

  • Add CardRegionEnum enums in SplitConfigurationRule class

Other Changes 🖇️

Full Changelog: v39.5.0...v40.0.0

Adyen Java API Library v39.5.0

29 Sep 10:17
d6eb3ea

Choose a tag to compare

New Features 💎

Checkout API

  • Add support for UPI QR Code
  • In PaymentDetails add enum IRIS
  • In UpiIntentDetails add attribute billingSequenceNumber

Classic Payments

  • In Recurring add enum values EXTERNAL and ONECLICK_RECURRING

Payout API

  • Add ResponseAdditionalDataSwish

Terminal API

  • Validate location header upon 308 response status #1561
  • Update the validation of Common Name of a Terminal API certificate #1564

Management API

  • Add enum value BR_SCHEMES in PaymentMethodResponse and PaymentMethodSetupInfo

Management Webhooks

  • In TerminalAssignmentNotificationRequest add attribute assignedToStoreId
  • Add enum value dataReview in VerificationError and VerificationErrorRecursive

PRs 🖇️

Fixes ⛑️

  • TerminalCommonNameValidator: Update validation regex by @gcatanese in #1564

Other Changes 🖇️

Full Changelog: v39.4.0...v39.5.0

Adyen Java API Library v39.4.0

16 Sep 14:23
f52c682

Choose a tag to compare

New Features 💎

Add support for Open Banking API v1: it provides secure endpoints to share financial data and services with third parties. This API offers quick and reliable user verification.

Checkout API

  • Add bankTransfer enum value in PaymentDetails

Balance Platform

  • Add TransferLimitsBalanceAccountLevelApi to manage Transfer limits - balance account level
  • Add TransferLimitsBalancePlatformLevelApi to manage Transfer limits - balance platform level
  • In BulkAddress add attributes line1, line2, line3
  • Add enum value dataReview in VerificationError and VerificationErrorRecursive

Legal Entity Management (v3)

  • In Organization add dateOfInitiationOfLegalProceeding, economicSector, globalLegalEntityIdentifier, etc..
  • In Organization add enums InstitutionalSectorEnum and StatusOfLegalProceedingEnum

Classic Payments

  • Add ResponseAdditionalDataSwish

Transfer API

  • Add enum valueAccepted in ConfirmationTrackingData

Configuration Webhooks

  • In BulkAddress add attributes line1, line2, line3
  • In NetworkTokenNotificationDataV2 add attribute schemeRiskScore
  • Add deviceId attribute in Device
  • Add enum value dataReview in VerificationError and VerificationErrorRecursive

Transfer Webhooks

  • Add enum valueAccepted in ConfirmationTrackingData

Dispute Webhooks

  • Add other enum value in DisputeEventNotification

PRs 🖇️

Other Changes 🖇️

Full Changelog: v39.3.0...v39.4.0