Skip to main content

[2.60.1] - 2026-02-19

Added - ChargeBearer body parameter on payouts

On POST Create a Payout, platforms can now request to pay all SWIFT fees using the OUR value of the new ChargeBearer property (API release note):
  • Added ChargeBearer param (String) to PayOutPaymentDetailsBankWire class
  • Updated the PayOutSerializer to include ChargeBearer on PayOutPaymentDetailsBankWire serialization
  • Updated the PayOutDeserializer to deserialize the ChargeBearer and include it in PayOutPaymentDetailsBankWire
  • Updated tests

Added - AuthenticationType response property on card pay-ins

The AuthenticationResult.AuthenticationType response property is now returned on card pay-ins (API release note):
  • Added the AuthenticationResult class
  • Added AuthenticationResult param (Object containing AuthenticationType) to CardPreauthorization, CardValidation, Deposit, PayIn classes
  • Updated tests

Added - TelephoneOrder body parameter on recurring card pay-ins (CIT and MIT)

To support the TelephoneOrder property on POST Create a Recurring PayIn (MIT) and POST Create a Recurring PayIn (CIT):
  • Added PaymentCategory (String) to RecurringPayInCIT and RecurringPayInMIT classes
  • Updated the RecurringPayInDeserializer to deserialize the PaymentCategory and include it in PayInPaymentDetailsCard
  • Updated tests

[2.60.0] - 2026-02-12

Users

Possible breaking change – User serializer for natural Owner users

Caution - Possible breaking change
  • In the UserSerializer, the Birthday property of the NaturalUser now defaults to NULL instead of 0 if not set. This change prevents inadvertently updating the Birthday for OWNER Users, but it may introduce an error when creating an Owner user if you didn’t previously set the Birthday.

FX

Breaking change – Custom fees

To support percentage-based FX fees (API release note):
Caution - Breaking change
  • The CreateInstantConversion.Fees type is now CustomFees instead of Money, to support the new FX fees structure of Type (PERCENTAGE | FIXED) and Value
  • Added Fees to CreateConversionQuote
  • Added Fees and RequestedFees to ConversionQuote
  • Added RequestedFees to Conversion

Added – User margin

To support the FX user margin (API release note):
  • Added UserMargin to CreateInstantConversion and CreateConversionQuote
  • Added MarginsResponse to Conversion and ConversionQuote

Echo

Breaking change - Settlement upload endpoints

To support the new behavior of the POST Create a Settlement endpoint to obtain an UploadUrl:
  • Updated settlement_sample.csv and tests
  • Added FileName and UploadUrl to Settlement
Caution - Breaking change
  • Replaced upload method in SettlementApi with generateUploadUrl:
Java
// null idempotencyKey in this example
Settlement settlement = api.getSettlementApi().generateUploadUrl(settlementFileName, null); 
Caution - Breaking change
  • Replaced update method in SettlementApi with generateNewUploadUrl:
Java
Settlement dto = new Settlement().setFileName("new_file_name_settlement.csv");
dto.setId(existingSettlement.getSettlementId()); 
Settlement newUploadUrl = api.getSettlementApi().generateNewUploadUrl(dto);

Added - GET validations for a Settlement endpoint

To support the GET View validations for a Settlement endpoint:
  • Added SettlementValidation, SettlementValidationFooter, SettlementValidationLine classes
  • Added getValidations method to SettlementApi
Java
// in this example, Pagination is null
SettlementValidation validation = api.getSettlementApi().getValidations(settlement.getSettlementId(), null);

Added - PUT Cancel a Settlement endpoint

To support the PUT Cancel a Settlement endpoint:
  • Added cancel method to SettlementApi
Java
// in this case, the IdempotencyKey is null
Settlement canceled = api.getSettlementApi().cancel(settlement.getSettlementId(), null);

Added – Intent unfunded amounts and source wallet

  • Added SplitOriginWalletId to PayInIntentLineItem and PayInIntentSplit
  • Added UnfundedSellerAmount to PayInIntentLineItem
  • Added UnfundedAmount to PayInIntent

Added – POST Create an Intent Refund

To support POST Create an Intent Refund:
  • Added Refund and Capture to PayInIntent
  • Added createPayInIntentRefund method to PayInApi:
Java
// idempotencyKey is null in this example
api.getPayInApi().createPayInIntentRefund(intentId, refundToBeCreated, null);

Added – POST Reverse an Intent Refund

To support POST Reverse an Intent Refund:
  • Added reversePayInIntentRefund method to PayInApi:
Java
// idempotencyKey is null in this example
PayInIntent reverseResult = api.getPayInApi().reversePayInIntentRefund(intent.getId(), intent.getRefund().getId(), reverseToBeCreated, null);

Added – POST Create an Intent Dispute

To support POST Create an Intent Dispute:
  • Added Dispute to PayInIntent
  • Added createPayInIntentDispute method to PayInApi:
Java
// idempotencyKey is null in this example
PayInIntent disputeResult = api.getPayInApi().createPayInIntentDispute(intent.getId(), intent.getCapture().getId(), disputeToBeCreated, null);

Added - PUT Update an Intent Dispute

To support PUT Update an Intent Dispute:
  • Added Decision to PayInIntent
  • Added updatePayInIntentDisputeOutcome method to PayInApi:
Java
PayInIntent dto = new PayInIntent().setDecision("DEFENDED");
PayInIntent updatedDispute = api.getPayInApi().updatePayInIntentDisputeOutcome(intent.getId(), intent.getCapture().getId(), intent.getDispute().getId(), dto);

[2.59.0] - 2026-01-30

Added

Support for new SCA status endpoint

The SDK now supports the new GET View the SCA status of a User endpoint. New method in UserApi:
Java
import com.mangopay.entities.subentities.ScaStatus;

/**
    * Get SCA status
    * @param userId User identifier
    * @return ScaStatus instance
    * @throws Exception
    */
   ScaStatus getScaStatus(String userId) throws Exception;
New ScaStatus class:
Java
package com.mangopay.entities.subentities;

import com.google.gson.annotations.SerializedName;
import com.mangopay.core.Dto;

public class ScaStatus extends Dto {
    @SerializedName("UserStatus")
    private String userStatus;

    @SerializedName("IsEnrolled")
    private Boolean isEnrolled;

    @SerializedName("LastEnrollmentDate")
    private Long lastEnrollmentDate;

    @SerializedName("LastConsentCollectionDate")
    private Long lastConsentCollectionDate;

    @SerializedName("ConsentScope")
    private ConsentScope consentScope;

    public String getUserStatus() {
        return userStatus;
    }

    public ScaStatus setUserStatus(String userStatus) {
        this.userStatus = userStatus;
        return this;
    }

    public Boolean getEnrolled() {
        return isEnrolled;
    }

    public ScaStatus setEnrolled(Boolean enrolled) {
        isEnrolled = enrolled;
        return this;
    }

    public Long getLastEnrollmentDate() {
        return lastEnrollmentDate;
    }

    public ScaStatus setLastEnrollmentDate(Long lastEnrollmentDate) {
        this.lastEnrollmentDate = lastEnrollmentDate;
        return this;
    }

    public Long getLastConsentCollectionDate() {
        return lastConsentCollectionDate;
    }

    public ScaStatus setLastConsentCollectionDate(Long lastConsentCollectionDate) {
        this.lastConsentCollectionDate = lastConsentCollectionDate;
        return this;
    }

    public ConsentScope getConsentScope() {
        return consentScope;
    }

    public ScaStatus setConsentScope(ConsentScope consentScope) {
        this.consentScope = consentScope;
        return this;
    }
}
New ConsentScope class:
Java
package com.mangopay.entities.subentities;

import com.google.gson.annotations.SerializedName;
import com.mangopay.core.Dto;

public class ConsentScope extends Dto {
    @SerializedName("ContactInformationUpdate")
    private String contactInformationUpdate;

    @SerializedName("RecipientRegistration")
    private String recipientRegistration;

    @SerializedName("Transfer")
    private String transfer;

    @SerializedName("ViewAccountInformation")
    private String viewAccountInformation;

    public String getContactInformationUpdate() {
        return contactInformationUpdate;
    }

    public ConsentScope setContactInformationUpdate(String contactInformationUpdate) {
        this.contactInformationUpdate = contactInformationUpdate;
        return this;
    }

    public String getRecipientRegistration() {
        return recipientRegistration;
    }

    public ConsentScope setRecipientRegistration(String recipientRegistration) {
        this.recipientRegistration = recipientRegistration;
        return this;
    }

    public String getTransfer() {
        return transfer;
    }

    public ConsentScope setTransfer(String transfer) {
        this.transfer = transfer;
        return this;
    }

    public String getViewAccountInformation() {
        return viewAccountInformation;
    }

    public ConsentScope setViewAccountInformation(String viewAccountInformation) {
        this.viewAccountInformation = viewAccountInformation;
        return this;
    }
}
New test in UserApiImplTest:
Java
    @Test
    public void getScaStatus() throws Exception {
        ScaStatus scaStatus = api.getUserApi().getScaStatus(ACTIVE_USER_NATURAL_SCA_ID);

        assertNotNull(scaStatus);
        assertEquals(true, scaStatus.getEnrolled());
        assertNotNull(scaStatus.getLastEnrollmentDate());
        assertNotNull(scaStatus.getConsentScope().getContactInformationUpdate());
        assertEquals("ACTIVE", scaStatus.getUserStatus());
    }

New event types

New EventType:
Java
package com.mangopay.core.enumerations;
/**
 * Event types enumeration.
 */
public enum EventType {
    SCA_CONTACT_INFORMATION_UPDATE_CONSENT_GIVEN,
    SCA_CONTACT_INFORMATION_UPDATE_CONSENT_REVOKED,
    SCA_TRANSFER_CONSENT_GIVEN,
    SCA_TRANSFER_CONSENT_REVOKED,
    SCA_RECIPIENT_REGISTRATION_CONSENT_GIVEN,
    SCA_RECIPIENT_REGISTRATION_CONSENT_REVOKED,
    SCA_VIEW_ACCOUNT_INFORMATION_CONSENT_GIVEN,
    SCA_VIEW_ACCOUNT_INFORMATION_CONSENT_REVOKED,
    SCA_EMAIL_VERIFIED,
    SCA_PHONE_NUMBER_VERIFIED
}

RecipientId property on payouts

New RecipientId property added to PayOutPaymentDetailsBankWire.

Fixed

Fixed PayOut serializer to include PaymentRef

The PayOut serializer now returns the PaymentRef object.

[2.58.1] - 2026-01-16

Fixed

  • Checks for null when parsing error responses from the API, resolving JsonNull unsupported operation exception on some HTTP 401 responses

[2.58.0] - 2025-12-02

Changed

  • Migrated to V4 naming convention

[2.57.1] - 2025-11-25

Added

[2.57.0] - 2025-10-27

Added

Changed

  • x-tenant-id deprecated as no longer necessary for UK platforms; the parameter is ignored by Mangopay

[2.56.0] - 2025-10-01

Added

[2.55.3] - 2025-09-23

Added

  • Support for ProfilingAttemptReference on all payment methods for Mangopay’s Fraud Prevention solution
  • Webhook event types for Echo, Mangopay’s solution for third-party PSP integrations: INTENT_AUTHORIZED,INTENT_CAPTURED,INTENT_REFUNDED,INTENT_REFUND_REVERSED,INTENT_DISPUTE_CREATED,INTENT_DISPUTE_DEFENDED,INTENT_DISPUTE_WON,INTENT_DISPUTE_LOST,INTENT_SETTLED_NOT_PAID,INTENT_PAID,SPLIT_CREATED,SPLIT_PENDING_FUNDS_RECEPTION,SPLIT_AVAILABLE,SPLIT_REJECTED,SPLIT_REVERSED
  • Support for VirtualAccountPurpose on Banking Alias object

[2.55.2] - 2025-09-02

Added

  • Support for missing webhook event types

Changed

  • OAuth token refresh buffer before expiry updated to 30s

Fixed

  • Tests

[2.55.1] - 2025-08-14

Added

[2.55.0] - 2025-08-07

Added

Support for new Splits endpoints for Echo (API release note): New ReportTypes for Echo (API release note):
  • ECHO_INTENT
  • ECHO_INTENT_ACTION
  • ECHO_SETTLEMENT
  • ECHO_SPLIT

[2.54.1] - 2025-07-28

Added

[2.54.0] - 2025-07-18

Added

Endpoints for Mangopay Echo, a solution for platforms working with another third-party PSP for funds acquisition (including via the Mirakl Connector):

[2.53.0] - 2025-06-24

Changed

  • Minimum language version changed to Java 8.0 or higher
  • Java sourceCompatibility changed to 1.8
  • README updated

Added

  • New endpoint POST Create a Bizum PayIn
  • New webhook event types for SCA enrollment – API release planned for Monday, note that these are triggered on enrollment not authentication:
    • SCA_ENROLLMENT_SUCCEEDED
    • SCA_ENROLLMENT_FAILED
    • SCA_ENROLLMENT_EXPIRED
  • New webhook event types for UserCategory change – API release planned for Monday:
    • USER_CATEGORY_UPDATED_TO_OWNER
    • USER_CATEGORY_UPDATED_TO_PAYER
    • USER_CATEGORY_UPDATED_TO_PLATFORM
  • Support for PLATFORM value to UserCategory enum

[2.52.2] - 2025-06-12

Updated

  • release configurations

[2.52.1] - 2025-06-12

Added

[2.52.0] - 2025-06-10

Added

Endpoints for new Reporting Service feature: Webhook event types for new Reporting Service:
  • REPORT_GENERATED
  • REPORT_FAILED

[2.51.1] - 2025-06-06

Added

Fixed

  • Status enum value on Identity Verification object changed from OUTDATED to OUT_OF_DATE