Scope
When a Mangopay Account holder (OWNER) transfers funds to another Mangopay Account holder, they must authenticate using SCA.
This means that when an OWNER user initiates a transfer to a wallet held by another OWNER user, the first user must authenticate the request.
Action required
On transfers between oneOWNER user and another, your platform needs to implement SCA redirection to Mangopay’s hosted webpage.
1. Send ScaContext on Owner-initiated transfers
On the POST Create a Transfer endpoint, Mangopay has introduced the body parameterScaContext, which your platform needs to send on all transfers initiated by users whose UserCategory is OWNER.
The ScaContext parameter has the values:
USER_PRESENT– The user is taking the SCA-triggering action of initiating a transfer. The platform must redirect the user using thePendingUserAction.RedirectUrlreturned so that the user can complete the SCA session (unless Mangopay applied an exemption for low-amount and low-risk transfers, so no redirection link was returned).USER_NOT_PRESENT– The platform is taking the action under proxy from the user and the user has previously given consent to Mangopay (via the SCA hosted experience) to allow the action.
ScaContext parameter should be considered mandatory and the relevant value must be sent on all transfers initiated by OWNER users. You do not need to send ScaContext if the UserCategory is PAYER.
USER_NOT_PRESENT requires proxy
To use theUSER_NOT_PRESENT value, your platform must put in place a proxy in your legal documentation, and you must obtain the User’s consent. For more information, see the proxy management guide.
The introduction of Mangopay’s proxy management system makes it possible to apply SCA correctly in all cases. If the proxy action is activated for your platform and you send USER_NOT_PRESENT, but the user hasn’t given consent via the hosted SCA experience, then the request will fail.
In this case, your platform has two options:
- Obtain consent from the user by calling POST Manage proxy consent for a User, and then retry the transfer with 
USER_NOT_PRESENT - Retry the action with the user on session to authenticate, by setting 
ScaContexttoUSER_PRESENTand redirecting the user on thePendingUserAction.RedirectUrlreturned 
USER_PRESENT case.
Example API request with user present
See API request example with user present
See API request example with user present
2. Redirect the user for SCA if required
For requests made withScaContext set to USER_PRESENT, the user is on session and can perform SCA. On a given transfer request, it is possible that Mangopay can apply an SCA exemption if the transaction is considered low risk or for a low amount.
If SCA is required for the transfer request, the API response contains PendingUserAction.RedirectUrl, as shown in the example below. If an exemption was applied (for USER_PRESENT), then the RedirectUrl is not returned because no redirection is necessary.
Example API response
In Sandbox, the Transaction Risk Analysis (TRA) exemption is systematically applied for amounts of 500 EUR or less (or equivalent in other currencies). So in the examples below, settingDebitedFunds.Amount to more than 50000 triggers SCA (see SCA triggers in Sandbox below for details).
- SCA redirection required
 - Exemption applied
 
Caution – Encode and add your returnUrl before redirectionYou must add your 
returnUrl before you redirect the user on the RedirectUrl value, otherwise the hosted web page cannot return them upon completion.For more details, see How to redirect a user for SCA.returnUrl, regardless of the outcome.
3. Ensure your integration relies on transfer status and webhooks
The introduction of SCA makes reliance on the Transfer’sStatus essential.
Whereas previously, a Transfer’s Status would typically pass to SUCCEEDED quickly, with SCA it will remain in CREATED until the user completes SCA.
This means that your platform needs to rely on the existing webhook event types for the outcome of the transfer:
TRANSFER_NORMAL_SUCCEEDEDTRANSFER_NORMAL_FAILED
Status changes to FAILED and there are two new SCA-related functional errors that may be returned in ResultCode and ResultMessage:
ResultCode | ResultMessage | Description | 
|---|---|---|
007101 | Transfer authentication failed. Please retry with a new request. | The user reached the maximum number of retries for one of the authentication factors, so the SCA session failed. | 
007102 | Transfer authentication expired. Please initiate a new request. | The user did not complete all steps required within 10 minutes, so the SCA session expired. | 
Testing
SCA triggers in Sandbox
While in Production, Mangopay will apply the exemptions for low-risk or low-amount transfers (read more), the behavior in Sandbox is described below for your integration and testing. In Sandbox, SCA is triggered on POST Create a Transfer when all of the following are true:DebitedWalletIdandCreditedWalletIdbelong to differentOWNERusers.- The type of users owning the wallets is Natural or Soletrader (in any combination for debited and credited user).
 DebitedFunds.Amountis greater than 500 EUR or equivalent. So ifCurrencyisEUR, this meansAmountmust be50001or more.ScaContextisUSER_PRESENT
- The legal user’s 
LegalPersonTypeisBUSINESS,PARTNERSHIP, orORGANIZATION - The amount is less than 500 EUR or equivalent
 ScaContextisUSER_NOT_PRESENTor not sent (in which case it isnull)
Postman
The Mangopay API Postman collection contains a dedicated folder for SCA on transfers and wallet access, has the calls needed to set up two Owner users, get funds into their wallets via a direct card pay-in, and then transfer between them using theScaContext value USER_PRESENT.
See the Postman guide for details on how to fork the collection and set up your environment with your ClientId and API key.