Releases: Adyen/adyen-java-api-library
Adyen Java API Library v42.0.1
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 🖇️
- [checkout] Code generation: update services and models by @AdyenAutomationBot in #1974
- Release v42.0.1 by @AdyenAutomationBot in #1975
Full Changelog: v42.0.0...v42.0.1
Adyen Java API Library v42.0.0
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 ofCloudDeviceApiwith built-in Nexo message encryption/decryption. RequiresEncryptionCredentialDetails.
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 aPredefinedContentreference ID string.SaleDataHelper— ParsesSaleToAcquirerDatafrom aSaleDataobject, 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/deserializesSaleToAcquirerDatato/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
-
GrantOffersApimethod 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.mdinto standalone files (doc/TerminalApi.md,doc/CloudDeviceApi.md,doc/MigratingToCloudDeviceApi.md). -
TransfersApi.getAllTransfers()categoryparameter (#1937) — Javadoc updated to documentcardandtopUpas additional valid values. -
ScaAssociationManagementApientityTypeparameter (#1912) — Javadoc updated to includelegalEntityas a valid value.
Fixed
-
HTTP timeout not applied by default (#1795) — Timeout configuration was not being set as the default
RequestConfigon the HTTP client, soconnectionTimeoutMillis,readTimeoutMillis, andconnectionRequestTimeoutMillishad no effect. Fixed so all requests inherit the configured timeouts (default: 60 000 ms each). -
Socket timeout not set (#1795) —
SocketTimeoutwas not configured, leaving the client potentially hanging indefinitely on unresponsive hosts. -
TAPI unknown enum values threw exceptions (#1900) — All enum types in the
tapipackage now handle unknown values gracefully instead of throwing a deserialization exception, improving forward-compatibility with new API values. -
createBaseURLusedreplaceFirstinstead ofreplace(#1952) —String.replaceFirst()interprets its first argument as a regex, causing failures for strings containing regex special characters. Fixed to useString.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
-
TerminalCloudAPI(#1808) — Usecom.adyen.service.clouddevice.CloudDeviceApiinstead. See the Cloud Device API documentation and the migration guide. -
PosMobileApi.createCommunicationSession()(#1946) — Deprecated since POS Mobile API v68.
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.... |
Adyen Java API Library v41.1.1
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
New Features 💎
Checkout API
- Add attribute
merchantReferenceinCheckoutForwardRequest - In
StoredPaymentMethodDetailsadd several enum values to supportalipay_plus - Add attribute
cardBininsStoredPaymentMethodResource
Balance Platform API
- Add support for Get summary of tax forms for an account holder
Management API
- Add
HomeScreenSettingsandKioskModeSettingsinTerminalSettings
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
AMBERinResponseAdditionalDataCommon
Classic Payments API
- Added
RefusedandErrorenum values inModificationResult - Added enum
AMBERinResponseAdditionalDataCommon
Transfer Webhooks
- Add
InterchangeDatain the list ofEventsData - Add enum value
interchangeAdjustedinModification,TransferData,TransferEvent
Transfers API
- Add
InterchangeDatain the list ofEventsData - Add enum value
interchangeAdjustedinModification,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 🖇️
- chore(deps): update actions/cache digest by @renovate[bot] in #1627
- Add merge_group to javaci workflow by @gcatanese in #1713
- (feature) - update unit testing framework to Junit 5 and migrate existing tests by @thomasc-adyen in #1716
- Update Legal Entity Management API version in README by @gcatanese in #1717
- (chore) - remove Java 20 from CI and add Java 25 by @thomasc-adyen in #1718
- [balancecontrol] Code generation: update services and models - Only javadoc changes by @AdyenAutomationBot in #1730
- chore(deps): update dependency com.squareup.okio:okio to v3.16.4 by @renovate[bot] in #1356
- Release v41.1.0 by @AdyenAutomationBot in #1707
Other PRs
- [management] Code generation: update services and models by @AdyenAutomationBot in #1725
- [payout] Code generation: update services and models by @AdyenAutomationBot in #1731
- [payment] Code generation: update services and models by @AdyenAutomationBot in #1728
- [balanceplatform] Code generation: update services and models by @AdyenAutomationBot in #1729
- [recurring] Code generation: update services and models by @AdyenAutomationBot in #1724
- [transferwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1726
- [transfers] Code generation: update services and models by @AdyenAutomationBot in #1727
New Contributors
- @thomasc-adyen made their first contribution in #1716
Full Changelog: v41.0.0...v41.1.0
Adyen Java API Library v41.0.0
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:
- https://docs.adyen.com/api-explorer/transfers/4/overview
- https://docs.adyen.com/api-explorer/capital/1/overview
Breaking Changes 🛠
- [management] Code generation: update services and models by @AdyenAutomationBot in #1646
New Features 💎
- [capital] Code generation: update services and models by @AdyenAutomationBot in #1664
Fixes ⛑️
- Untrusted Actions Versioning by @gcatanese in #1614
- fix: prevent command injection in format workflow by @Copilot in #1618
Other Changes 🖇️
- Remove redundant secret exposure in Maven publish workflow by @Copilot in #1624
- Fix YAML formatting in release workflow by @Copilot in #1625
- AGENTS.md for contributors by @galesky-a in #1626
- chore(deps): update dependency org.junit.jupiter:junit-jupiter-params to v5.14.1 by @renovate[bot] in #1592
- fix(ci): format should apply to all sdk-automation branches by @galesky-a in #1654
- fix(ci): Trigger format workflow at will by @galesky-a in #1655
- fix(ci): ensure release workflow triggers only on merged requests by @galesky-a in #1661
- feat(ci): create in place formatting workflow for composable steps by @galesky-a in #1660
- [checkout] Code generation: update services and models by @AdyenAutomationBot in #1647
- [storedvalue] Code generation: update services and models by @AdyenAutomationBot in #1642
- [acswebhooks] Code generation: update services and models by @AdyenAutomationBot in #1639
- [transferwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1653
- [transfers] Code generation: update services and models by @AdyenAutomationBot in #1652
- FIX add Java 21 to CI version matrix by @jeandersonbc in #1667
- Introduce test coverage for new Capital API by @jeandersonbc in #1666
- chore(readme): added capital description by @jeandersonbc in #1670
- [balanceplatform] Code generation: update services and models by @AdyenAutomationBot in #1644
- [transactionwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1645
- [legalentitymanagement] Code generation: update services and models by @AdyenAutomationBot in #1650
- [checkout] Code generation: update services and models by @AdyenAutomationBot in #1668
- [negativebalancewarningwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1643
- [capital] Code generation: update services and models by @AdyenAutomationBot in #1673
- [balancecontrol] Code generation: update services and models by @AdyenAutomationBot in #1641
- [configurationwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1637
- [payment] Code generation: update services and models by @AdyenAutomationBot in #1649
- [relayedauthorizationwebhooks] Code generation: update services and models by @AdyenAutomationBot in #1669
- fix(recurring): use correct API endpoint by @jeandersonbc in #1674
- Release v41.0.0 by @AdyenAutomationBot in #1662
- Revert "Remove redundant secret exposure in Maven publish workflow" by @jeandersonbc in #1675
- fix(ci): enable workflow dispatch for publishing artifacts by @jeandersonbc in #1677
- Revert "chore(release): bump to 41.0.0" by @jeandersonbc in #1678
- Release v41.0.0 by @AdyenAutomationBot in #1676
New Contributors
- @Copilot made their first contribution in #1624
- @galesky-a made their first contribution in #1626
- @jeandersonbc made their first contribution in #1667
Full Changelog: v40.1.0...v41.0.0
Adyen Java API Library v40.1.0
💎 New Features
Checkout API
- Add support for /forward endpoint
- Add support for
ExternalTokenDetailspayment method - In
FundingSourceEnumadd enum valuePREPAIDinApplePayDetails,ApplePayDonations,CardDonations, andCardDetails
- In
CardDetailsandCardDonationsaddbillingSequenceNumberattribute - In
PaymentRequestaddPaymentValidations - In
PaymentResponseandPaymentDetailsResponseaddPaymentValidationsResponse - In
CheckoutBankTransferActionadd attributesbankCode,branchCode, - In
GenericIssuerPaymentMethodDetailsadd enumONLINEBANKING_IN - In
ResponseAdditionalDataSepaaddsepadirectdebitSepadirectdebitDueDateattribute - In
StoredPaymentMethodResourceaddmandateattribute - In
WeChatPayMiniProgramDetailsaddstoredPaymentMethodIdattribute
Classic Payments API
- In
PaymentRequestadd enumPREPAID - In
ResponseAdditionalDataSepaaddsepadirectdebitSepadirectdebitDueDateattribute
BalancePlatform
- remove
DeviceInfofields:cardCaptureTechnology,deviceName,imei,isoDeviceType,msisdn,osVersion,paymentTypes,serialNumber,storageTechnology - in
BalanceaddpendingAvailableattribute - in
BulkAddressaddnameattribute - in
CreateSweepConfigurationV2andUpdateSweepConfigurationV2add enumReasonEnum.SCHEMEADVICE
Payout API
- In add
ResponseAdditionalDataSepaaddsepadirectdebitSepadirectdebitDueDateattribute
Legal Entity Management API
- Add
requestPeriodicReviewmethod inLegalEntitiesApi
Management API
- In
AffirmInfoaddPricePlanEnumenums - In
PaymentMethodaddsvsandvalueLinkattributes - In
PaymentMethodResponseadd enumsKLARNA_B2B,SVS,VALUELINK - In
PaymentMethodSetupInfoaaddsvsandvalueLinkattributes - In
PaymentMethodSetupInfoadd enumsKLARNA_B2B,SVS,VALUELINK
Transfers API
- In
UltimatePartyIdentificationaddfundingInstrumentattribute - In
BankAccountV3addstoredPaymentMethodIdattribute - In
Transfer,TransferDataandTransferEventadd add enumReasonEnum.SCHEMEADVICE
Transfer Webhooks
- In
BankAccountV3addstoredPaymentMethodIdattribute - Add new event
balancePlatform.balanceAccount.balance.block.released
Other Changes 🖇️
- Add support for explicit null serialization in payment requests #1603
- Update Apache HttpClient 5.5 #1596
- Add support for
WWW-Authenticateheader in BalancePlaftorm SCA Associations Management #1585 - Add
AGENTS.MD#1566 - Update README file: Include additional HTTP headers with the API request by @gcatanese in #1578
- Improve comments related to HTTP headers by @gcatanese in #1587
Fixes ⛑️
-
Correct LIVE url for SessionAuthentication API by @gcatanese in #1580
-
BalancePlatform TransferLimits: update order of path params for deletePendingTransferLimit and getSpecificTransferLimit by @gcatanese in #1583
-
Release v40.1.0 by @AdyenAutomationBot in #1579
Full Changelog: v40.0.0...v40.1.0
Adyen Java API Library v40.0.1
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
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:capabilityattribute has been removedSourceOfFunds:acquiringBusinessLineIdattribute has been removedSourceOfFunds:adyenProcessedFundsattribute 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
PaymentRequestadd attributesdkData
Recurring API
- In
Recurringadd enum valuesEXTERNALandONECLICK_RECURRING
Management API
- Add
CardRegionEnumenums inSplitConfigurationRuleclass
Other Changes 🖇️
- Add api-library-maintainers to CODEOWNERS by @gcatanese in #1572
- Improve POSSDK live endpoint construction by @gcatanese in #1570
- Terminal API test by @gcatanese in #1573
- Release v40.0.0 by @AdyenAutomationBot in #1569
Full Changelog: v39.5.0...v40.0.0
Adyen Java API Library v39.5.0
New Features 💎
Checkout API
- Add support for UPI QR Code
- In
PaymentDetailsadd enumIRIS - In
UpiIntentDetailsadd attributebillingSequenceNumber
Classic Payments
- In
Recurringadd enum valuesEXTERNALandONECLICK_RECURRING
Payout API
- Add
ResponseAdditionalDataSwish
Terminal API
- Validate location header upon
308response status #1561 - Update the validation of
Common Nameof a Terminal API certificate #1564
Management API
- Add enum value
BR_SCHEMESinPaymentMethodResponseandPaymentMethodSetupInfo
Management Webhooks
- In
TerminalAssignmentNotificationRequestadd attributeassignedToStoreId - Add enum value
dataReviewinVerificationErrorandVerificationErrorRecursive
PRs 🖇️
- Validate location header 308 by @gcatanese in #1561
- Code generation: update services and models by @AdyenAutomationBot in #1560
Fixes ⛑️
- TerminalCommonNameValidator: Update validation regex by @gcatanese in #1564
Other Changes 🖇️
- Code generation: update services and models by @AdyenAutomationBot in #1563
- Code generation: update services and models by @AdyenAutomationBot in #1565
- Release v39.5.0 by @AdyenAutomationBot in #1562
Full Changelog: v39.4.0...v39.5.0
Adyen Java API Library v39.4.0
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
bankTransferenum value inPaymentDetails
Balance Platform
- Add
TransferLimitsBalanceAccountLevelApito manageTransfer limits - balance account level - Add
TransferLimitsBalancePlatformLevelApito manageTransfer limits - balance platform level - In
BulkAddressadd attributesline1,line2,line3 - Add enum value
dataReviewinVerificationErrorandVerificationErrorRecursive
Legal Entity Management (v3)
- In
OrganizationadddateOfInitiationOfLegalProceeding,economicSector,globalLegalEntityIdentifier, etc.. - In
Organizationadd enumsInstitutionalSectorEnumandStatusOfLegalProceedingEnum
Classic Payments
- Add
ResponseAdditionalDataSwish
Transfer API
- Add enum value
AcceptedinConfirmationTrackingData
Configuration Webhooks
- In
BulkAddressadd attributesline1,line2,line3 - In
NetworkTokenNotificationDataV2add attributeschemeRiskScore - Add
deviceIdattribute inDevice - Add enum value
dataReviewinVerificationErrorandVerificationErrorRecursive
Transfer Webhooks
- Add enum value
AcceptedinConfirmationTrackingData
Dispute Webhooks
- Add
otherenum value inDisputeEventNotification
PRs 🖇️
- Code generation: update services and models by @AdyenAutomationBot in #1552
- Code generation: update services and models by @AdyenAutomationBot in #1557
- Add Open Banking API by @gcatanese in #1558
Other Changes 🖇️
- Improve test code and snippets by @gcatanese in #1553
- Add test with idempotency key by @gcatanese in #1555
- Javadoc improvements by @gcatanese in #1556
- Release v39.4.0 by @AdyenAutomationBot in #1554
Full Changelog: v39.3.0...v39.4.0