- Added
FAT_ZEBRAto thePayment.Processorenum.
- Added
trackingTokento theDevicerequest object. This is the token generated by the Device Tracking Add-on for explicit device linking.
- Added
anonymizerproperty toIpAddressresponse model. This contains information about whether the IP address is an anonymous network, including confidence score, VPN provider name, and various anonymizer flags. - Added
BANQUEST,SUMMIT_PAYMENTS, andYAADPAYto thePayment.Processorenum.
- BREAKING: Removed deprecated
TransactionReport.Builder(InetAddress, Tag)constructor. UseBuilder(Tag)andipAddress(InetAddress)instead. - BREAKING: Removed deprecated
getUrl()methods fromHttpExceptionandInvalidRequestException. Useuri()instead. - BREAKING: Removed deprecated constructors from
FactorsResponse,InsightsResponse, andPhoneclasses. - BREAKING: Removed deprecated
Subscoresclass andFactorsResponse.getSubscores()method. UsegetRiskScoreReasons()instead. - BREAKING: Java 17 is now required (previously Java 11).
- BREAKING: Updated
geoip2dependency to 5.0.0-SNAPSHOT. This introduces several breaking changes due to changes in the geoip2 library:- The
IpAddressclass no longer extendsInsightsResponsefrom geoip2. It now uses composition instead. All public methods remain the same, but code relying onIpAddressbeing anInsightsResponsewill need to be updated. - The
GeoIp2Locationclass no longer extendsLocationfrom geoip2. It now stores location data directly. All public methods remain the same, but code relying onGeoIp2Locationbeing aLocationwill need to be updated. - Removed the
getMaxMind()method from theIpAddressclass as this data is not populated in minFraud responses.
- The
- BREAKING: Converted all response classes to Java records. This change makes
these classes more concise and provides better immutability guarantees.
- All
get*()accessor methods in response classes are now deprecated and will be removed in 5.0.0. Use the automatically generated record accessor methods instead (e.g., useriskScore()instead ofgetRiskScore()). - The response class hierarchy has been flattened.
InsightsResponseno longer extendsScoreResponse, andFactorsResponseno longer extendsInsightsResponse. Instead,InsightsResponseandFactorsResponsenow include all fields from their former parent classes directly. - All response classes now implement
JsonSerializableinstead of extendingAbstractModel. ThetoJson()method remains available for serialization. - Removed the
AbstractAddressinterface.
- All
- BREAKING: Updated all request classes to use record-style method naming. The
getprefix has been removed from all accessor methods (e.g., useuserId()instead ofgetUserId()). This applies to all request classes includingAccount,Billing,CreditCard,CustomInputs,Device,Email,Event,Order,Payment,Shipping,ShoppingCartItem,Transaction, andTransactionReport. Unlike response classes, no deprecated helper methods were added as these methods are primarily used for serialization. - BREAKING: Updated exception classes to use record-style method naming. The
getprefix has been removed from all accessor methods. ForHttpException, usehttpStatus()anduri()instead ofgetHttpStatus()andgetUri(). ForInvalidRequestException, usecode(),httpStatus(), anduri()instead ofgetCode(),getHttpStatus(), andgetUri(). No deprecated helper methods were added. - Added
CREDIT_APPLICATION,FUND_TRANSFER, andSIM_SWAPto theEvent.Typeenum. - Added the input
/event/party. This is the party submitting the transaction. You may provide this using thepartymethod onEvent.Builder. - Added the input
/payment/method. This is the payment method associated with the transaction. You may provide this using themethodmethod onPayment.Builder. - Added new email domain fields to the
EmailDomainresponse model:classification- A classification of the email domain. Possible values areBUSINESS,EDUCATION,GOVERNMENT, andISP_EMAIL.risk- A risk score associated with the email domain, ranging from 0.01 to 99. Higher scores indicate higher risk.volume- The activity on the email domain across the minFraud network, expressed in sightings per million. This value ranges from 0.001 to 1,000,000.visit- AnEmailDomainVisitobject containing information about an automated visit to the email domain, including:status- The status of the domain based on the automated visit. Possible values areLIVE,DNS_ERROR,NETWORK_ERROR,HTTP_ERROR,PARKED, andPRE_DEVELOPMENT.lastVisitedOn- The date when the automated visit was last completed.hasRedirect- Whether the domain redirects to another URL.
- Added support for forward-compatible enum deserialization. Enums in response
models will now return
nullfor unknown values instead of throwing an exception. This allows the client to handle new enum values added by the server without requiring an immediate client update. This required addingREAD_ENUMS_USING_TO_STRINGandREAD_UNKNOWN_ENUM_VALUES_AS_NULLto the JacksonObjectMapperconfiguration. - Added
SECUREPAYto thePayment.Processorenum. WebServiceClient.Buildernow has anhttpClient()method to allow passing in a customHttpClient.
commons-validatorhas been removed as a dependency. This module now does its own email and domain name validation. This was done to reduce the number of dependencies and any security vulnerabilities in them. The new email validation of the local part is somewhat more lax than the previous validation.
- First release using Central Portal instead of Legacy OSSRH.
- Update
geoip2dependency.
- Updated
pom.xmlto fix issue with javadoc generation during the release process.
- Added support for the
/billing_phone/matches_postaland/shipping_phone/matches_postaloutputs. These are available as thematchesPostalmethod oncom.maxmind.minfraud.response.Phone. - Added
CRYPTOMUSto thePayment.Processorenum.
- The minFraud Factors subscores have been deprecated. They will be removed in March 2025. Please see our release notes for more information.
- Added
EPAYCOto thePayment.Processorenum.
- Added support for the new risk reasons outputs in minFraud Factors. The risk reasons output codes and reasons are currently in beta and are subject to change. We recommend that you use these beta outputs with caution and avoid relying on them for critical applications.
- Updated
TransactionReportto make theipAddressparameter optional. Now thetagand at least one of the following parameters must be supplied:ipAddress,maxmindId,minfraudId,transactionId. - The
TransactionReport.Builder(INetAddress, Tag)constructor has been deprecated in favor of the newTransactionReport.Builder(Tag)constructor. - Added
getBillingPhoneandgetShippingPhonemethods to the minFraud Insights and Factors response models. These contain objects with information about the respective phone numbers. Please see our developer site for more information. - Added
PAYCONEXto thePayment.Processorenum.
- Added
PXP_FINANCIALandTRUSTPAYto thePayment.Processorenum. - Equivalent domain names are now normalized when
hashAddressis used. For example,googlemail.comwill becomegmail.com. - Periods are now removed from
gmail.comemail address local parts whenhashAddressis used. For example,f.o.o@gmail.comwill becomefoo@gmail.com. - Fastmail alias subdomain email addresses are now normalized when
hashAddressis used. For example,alias@user.fastmail.comwill becomeuser@fastmail.com. - Additional
yahoo.comemail addresses now have aliases removed from their local part whenhashAddressis used. For example,foo-bar@yahoo.comwill becomefoo@yahoo.comfor additionalyahoo.comdomains. - Duplicate
.coms are now removed from email domain names whenhashAddressis used. For example,example.com.comwill becomeexample.com. - Certain TLD typos are now normalized when
hashAddressis used. For example,example.comcomwill becomeexample.com. - Additional
gmail.comdomain names with leading digits are now normalized whenhashAddressis used. For example,100gmail.comwill becomegmail.com. - Additional
gmail.comtypos are now normalized whenhashAddressis used. For example,gmali.comwill becomegmail.com. - When
hashAddressis used, all trailing periods are now removed from an email address domain. Previously only a single period was removed. - When
hashAddressis used, the local part of an email address is now normalized to NFC.
- Updated
geoip2dependency to version that includes theisAnycastmethod oncom.maxmind.geoip2.record.Traits. This returnstrueif the IP address belongs to an anycast network. This is available in minFraud Insights and Factors.
- Updated
geoip2to 4.1.0 to prevent exception when deserializing the newSatellitevalue to theConnectionTypeenum. Pull request by Neal Zhu. GitHub #278. - Jackson was updated to 2.15.2.
com.maxmind.geoip2is now a transitive dependency of this Java module.- Added
PLACETOPAYto thePayment.Processorenum.
- This library is now a Java module.
- Removed deprecated
last4Digitsmethod onCreditCard.BuilderandgetLast4Digitsmethod onCreditCard. UselastDigitsandgetLastDigitsinstead. - Removed deprecated
connectTimeout(int),readTimeout(int), andproxy(Proxy)onWebServiceClient.Builder. UseconnectTimeout(Duration),requestTimeout(Duration), andproxy(ProxySelector)instead. WebServiceClientno longer implementsCloseableand theClosemethod has been removed. This method was deprecated when the library switched to usingjava.net.http.HttpClient.
- Added
GOOGLE_PAYandSHOPIFY_PAYMENTSto thePayment.Processorenum. - Updated Jackson and GeoIP2 dependencies.
- Added the input
/credit_card/country. This is the country where the issuer of the card is located. This may be passed instead of the/credit_card/issuer_id_numberif you do not wish to pass partial account numbers or if your payment processor does not provide them. You may provide this using thecountrymethod onCreditCard.Builder.
- Java 11 or greater is now required.
- Apache HttpClient has been replaced with
java.net.http.HttpClient. - The
close()method onWebServiceClientis now deprecated. It no longer does anything. - On
WebServiceClient.Builder:connectTimeout(int)has been deprecated in favor ofconnectTimeout(Duration).readTimeout(int)has been deprecated in favor ofrequestTimeout(Duration).proxy(Proxy)has been deprecated in favor ofproxy(ProxySelector).
- On
HttpExceptionandInvalidRequestException,getUrl()has been deprecated in favor ofgetUri(). Constructors that took aURLhave been replaced with the equivalent taking aURI. - Deprecated constructors on model classes were removed.
- Removed deprecated response methods:
Email.getAddressMd5()Subscores.getEmailTenure()Subscores.getIpTenure()
- Removed
GeoIp2Countryand its associatedisHighRisk()method.IpAddress.getCountry()now returns acom.maxmind.geoip2.record.Country. - Removed deprecated
Payment.Processor.VERAPAYenum value. UseVEREPAYinstead. Email.getDomain()will now return an empty object rather than null if there is no domain data. This is match other response model class getters.- Upgraded the
geoip2dependency to 2.16.1. This adds mobile country code (MCC) and mobile network code (MNC) to minFraud Insights and Factors responses. These are available atresponse.getIpAddress.getTraits.getMobileCountryCode()andresponse.getIpAddress.getTraits.getMobileNetworkCode(). We expect this data to be available by late January 2022. - The following payment processors were added to the
Payment.Processorenum:BOACOMPRABOKUCOREGATEWAYFISERVNEOPAYNEOSURFOPENBUCKSPAYSERAPAYVISIONTRUSTLYWINDCAVE
com.maxmind.minfraud.request.CreditCard.last4Digitshas been deprecated in favor oflastDigitsand will be removed in a future release.lastDigits/last4Digitsalso now supports two digit values in addition to the previous four digit values.- Eight digit
com.maxmind.minfraud.request.CreditCard.issuerIdNumberinputs are now supported in addition to the previously accepted six digitissuerIdNumber. In most cases, you should send the last four digits forcom.maxmind.minfraud.request.CreditCard.last4Digits. If you send aissuerIdNumberthat contains an eight digit IIN, and if the credit card brand is not one of the following, you should send the last two digits forlastDigits:DiscoverJCBMastercardUnionPayVisa
- Apache Commons Codec is no longer used for generating MD5s.
- The following payment processors were added to the
Payment.Processorenum:CARDKNOXCREDITGUARDCREDORAXDATACAPDLOCALONPAYSAFECHARGE
- Documented the new
testdisposition action. - Added support for the
/disposition/rule_labeloutput in Score, Insights and Factors. This is available atresponse.getDisposition().getRuleLabel(), and is the label of the custom rule that was triggered by the transaction. - Added support for the
/credit_card/was_3d_secure_successfulinput in Score, Insights and Factors. This input should indicate whether or not the outcome of 3D-Secure verification (e.g. Safekey, SecureCode, Verified by Visa) was successful.trueif customer verification was successful, orfalseif the customer failed verification. If 3-D Secure verification was not used, was unavailable, or resulted in another outcome other than success or failure, do not include this field. Use thewas3dSecureSuccessful(Boolean)method oncom.maxmind.minfraud.request.CreditCard.Builderto set it.
- The following payment processors were added to the
Payment.Processorenum:APPLE_PAYAPS_PAYMENTS
- Added additional normalizing of the email address if
hashAddressis enabled. - Added support for the IP address risk reasons in the minFraud Insights and
Factors responses. This is available at
response.getIpAddress().getRiskReasons(). It is a list ofIpRiskReasonobjects.
- The HTTP client now allows up to 20 connections to be active at once. Previously the limit was 2. Reported by mjancewicz. GitHub #110.
TSYSwas added to thePayment.Processorenum.- The device IP address is no longer a required input.
- The following payment processors were added to the
Payment.Processorenum:CASHFREEFIRST_ATLANTIC_COMMERCEKOMOJUPAYTMRAZORPAYSYSTEMPAY
- Added support for three new Factors outputs:
/subscores/device(the risk associated with the device),/subscores/email_local_part(the risk associated with the part of the email address before the @ symbol) and/subscores/shipping_address(the risk associated with the shipping address).
- Added support for Report Transaction API. Report Transaction requests can be
created via
TransactionReport.Builder(). - Updated Jackson dependencies to 2.11.0.
- Added support for the new credit card output
/credit_card/is_business. This indicates whether the card is a business card. It may be accessed viaresponse.getCreditCard().isBusiness()on the minFraud Insights and Factors response objects.
- Added support for the new email output
/email/domain/first_seenThis can be accessed viaresponse.getEmail().getDomain().getFirstSeen(). - Added
Device.getLastSeenDateTime(),Device.getLocalDateTime(),Email.getFirstSeenDate(), andGeoIp2Location.getLocalDateTime()methods that returnjava.timeobjects rather than strings. - The request event time is now stored internally as a
ZonedDateTime. AnEvent.Builder.time(ZonedDateTime)method was also added to the event builder. - The following payment processors were added to the
Payment.Processorenum:CARDPAYEPX
- Added support for the new email output
/email/is_disposable. This can be accessed via theisDisposable()method on theEmailresponse object.
- IMPORTANT: Java 8 is now required. If you need Java 7 support, please continue using 1.9.0.
- Added constructor to
com.maxmind.minfraud.request.Email.Builderthat allows validation to be disabled. - The client-side validation for numeric custom inputs has been updated to match the server-side validation. The valid range is -9,999,999,999,999 to 9,999,999,999,999. Previously, larger numbers were allowed.
- Responses with chunked encoding are now handled correctly.
- The following payment processors were added to the
Payment.Processorenum:AFFIRMAFTERPAYCETELEMDATACASHDOTPAYECOMMPAYG2A_PAYGOCARDLESSINTERACKLARNAMERCANETPAYEEZYPAYLIKEPAYMENT_EXPRESSPAYSAFECARDSMARTDEBITSYNAPSEFIVEREPAY
- Deprecated
VERAPAYin thePayment.Processorenum. This was a misspelling ofVEREPAY. - Deprecated
getEmailTenure()andgetIpTenure()methods ofcom.maxmind.minfraud.response.Subscores. - Deprecated the
isHighRisk()method ofcom.maxmind.minfraud.response.GeoIP2Country.
- Renamed MaxMind user ID to account ID in the code and added support for the
new
ACCOUNT_ID_REQUIREDerror code. - The following payment processors were added to the
Payment.Processorenum:CCAVENUECT_PAYMENTSDALENYSONEYPOSCONNECT
- Added new type to the
Event.Typeenum:PAYOUT_CHANGE - Added support for new Device output:
/device/local_time
- Added support for new CreditCard output:
/credit_card/is_virtual
- Updated
geoip2dependency. This version adds theisInEuropeanUnion()method tocom.maxmind.geoip2.record.Countryandcom.maxmind.minfraud.response.GeoIp2Country. This returnstrueif the country is a member state of the European Union. - The web service client now correctly handles a proxy of
Proxy.NO_PROXY. PR by Ernest Sadykov. GitHub #32. - The following payment processors were added to the
Payment.Processorenum:CYBERSOURCETRANSACT_PROWIRECARD
- The following payment processors were added to the
Payment.Processorenum:BPOINTCHECKOUT_COMEMERCHANTPAYHEARTLANDPAYWAY
- Updated
geoip2dependency to add support for GeoIP2 Precision Insights anonymizer fields. - Replaced use of deprecated
com.fasterxml.jackson.databind.util.ISO8601DateFormatwithcom.fasterxml.jackson.databind.util.StdDateFormatwherewithColonInTimeZoneis set totrue.
- Behavior change! Default to sending the plain text email address rather
than its MD5 hash. Previously only the MD5 hash of the email address
would be sent, and sending the plain text email address was not possible.
If you wish to send only the MD5 hash of the email address, you must now
call
hashAddress()on theEmailbuilder in addition toaddress(). - When sending a hashed email address, the address is now lower-cased before the MD5 is calculated.
- Update Jackson and WireMock dependencies.
- Corrected serialization of
/event/timeinput to be valid RFC 3339. Reported by Luis Rojas. GitHub #26.
- Added support for custom inputs. These can be set up from your account portal.
- Added support for new Device inputs. These are:
/device/session_age/device/session_id
- Added support for new Email outputs. These are:
/email/first_seen
- The following payment processors were added to the
Payment.Processorenum:AMERICAN_EXPRESS_PAYMENT_GATEWAYBLUESNAPCOMMDOOCUROPAYMENTSEXACTOCEANPAYMENTPAYMENTWALLPAYZASECURETRADINGSOLIDTRUST_PAYVANTIVVERICHECKVPOS
- Added the following new values to the
Payment.Processorenum:EBS,HIPAY, andLEMON_WAY. - Updated the docs for
com.maxmind.minfraud.response.AbstractAddressnow thatisPostalInCitymay be returned for addresses world-wide. - Updated dependencies.
- The disposition was added to the minFraud response models. This is used to return the disposition of the transaction as set by the custom rules for the account.
- Added
/credit_card/tokeninput. Use thetoken(String)method oncom.maxmind.minfraud.request.CreditCard.Builderto set it. - All validation regular expressions are now pre-compiled.
- Non-ASCII characters are now correctly encoded as UTF-8 in the request body. Reported by Julien Guery. GitHub #17.
- Added two new types to the
Event.Typeenum:EMAIL_CHANGEandPASSWORD_RESET. - Update Jackson and WireMock dependencies.
- First production release.
- Connections will now be reused between requests made with the same
WebServiceClientobject. WebServiceClientnow implementsCloseable.- You are now able to set a proxy to use via the
WebServiceClient.Builderproxy(Proxy)method. - Updated dependencies.
- Added the following new values to the
Payment.Processorenum:CONCEPT_PAYMENTS,ECOMM365,ORANGEPAY, andPACNET_SERVICES.
- BREAKING CHANGE:
getCreditsRemaining()has been removed from the web service models and has been replaced bygetQueriesRemaining(). - Added
getQueriesRemaining()andgetFundsRemaining(). Note thatgetFundsRemaining()will not be returned by the web service until our new credit system is in place. - Added
getLastSeen()andgetConfidence()to theDeviceresponse model. - This API now throws an
IllegalArgumentExceptionwhennullvalues are passed to constructors or methods that require non-null values.
- Added support for the minFraud Factors.
- Added IP address risk to the minFraud Score model.
- Handle
PERMISSION_REQUIREDerrors by throwing aPermissionRequiredException. - Updated dependency.
- Added the following new values to the
Payment.Processorenum:CCNOW,DALPAY,EPAY(replacesEPAYEU),PAYPLUS,PINPAYMENTS,QUICKPAY, and `VERAPAY
- Added support for new minFraud Insights outputs. These are:
/credit_card/brand/credit_card/type/device/id/email/is_free/email/is_high_risk
- The
Warning.getInput()method has been replaced byWarning.getInputPointer(), which returns a JSON Pointer rather than array. - The
ScoreResponse.getId()andInsightsResponse.getId()methods now returnUUIDobjects instead of strings.
- Added support for
is_giftandhas_gift_messageto the order input object. - Jackson now uses the constructors to deserialize to the response model classes rather than overriding the access modifiers on them.
- A null pointer bug was fixed in
getInput()of theWarningmodel when theinputarray is not present in the JSON object. - Update GeoIP2 and other dependencies.
- First beta release.
- Add org.sonatype.oss to the Maven configuration.
- Initial release