Recipients
Create a Recipient
Register a bank account for local or international payouts
POST
Note – SCA triggered by this endpointRegistering a bank account as a Recipient always requires the user to authenticate using SCA on a Mangopay-hosted webpage, unless your platform is using a proxy and user consent.To let the user complete the SCA session, your platform needs to retrieve the returned
PendingUserAction.RedirectUrl, add an encoded returnUrl query parameter, and redirect the user. Read more about how to redirect them in the SCA session guide.If SCA is not successfully completed, the Recipient Status becomes CANCELED and you need to create a new Recipient to try again.In Sandbox, you can bypass SCA by including the word accept in the Email value of the Natural User or the LegalRepresentative.Email value of the Legal User – for example accept@example.com or john.doe+accept@example.com.Status as PENDING regardless of whether SCA is required (because RecipientScope is OWNER) or not. In all cases, your integration should rely on the RECIPIENT_ACTIVE webhook to know when the recipient is ACTIVE.
Verification of Payee (VOP) impacts SEPA local schemes, which means Recipients with Currency value EUR and PayoutMethod value LocalBankTransfer. Read more →
Path parameters
The unique identifier of the user.
Body parameters
Possible values:
USER_PRESENT, USER_NOT_PRESENTDefault value: USER_PRESENTThe SCA context of the request, which is required if the user’s UserCategory is OWNER:USER_PRESENT– The user is taking the SCA-triggering action of registering an external account as a Recipient. The platform must redirect the user using thePendingUserAction.RedirectUrlreturned so that the user can complete the SCA session.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. If the user has not given (or has revoked) their consent, thenUSER_NOT_PRESENTreturns a 403 error.
ScaContext is not returned in the API response as it does not form part of the Recipient data – it’s only related to the action being performed to register the account.Length: 1–50; cannot contain:
&,'/ (pattern:^(?!.*[&,'/]).{1,50}$)A user-friendly name to identify the account. This value cannot be changed once the recipient is created.Possible values:
InternationalBankTransfer, LocalBankTransferThe payout method of the recipient:InternationalBankTransfer– The account can receive non-local currencies via SWIFT or else uses local rails for local currencies by default.LocalBankTransfer– The account can only receive the corresponding localCurrencyfor theCountry(e.g.EURto a SEPA country,GBPto a UK account,PLNto a Polish IBAN, etc.)
Possible values:
Individual, BusinessThe recipient type:Individual– An account held by a natural person, requiring theIndividualRecipientproperty.Business– An account held by a legal entity, requiring theBusinessRecipientproperty.
Possible values:
AED, AUD, CAD, CHF, CNH, CZK, DKK, EUR, GBP, HKD, HUF, ILS, JPY, MXN, NOK, NZD, PLN, RON, SAR, SEK, SGD, TRY, USD, ZARThe currency of the recipient.Format: Two-letter country code (ISO 3166-1 alpha-2 format)The destination country of the payout method.
Possible values:
PAYIN, PAYOUTDefault value: PAYOUTThe scope of the recipient:PAYOUT– Usable for payouts and in pay-in use cases. APAYOUTrecipient can only be created by a user with theUserCategoryOWNERand requires SCA. You need to use the returnedPendingUserAction.RedirectUrlvalue, adding your encodedreturnUrlas a query parameter, to redirect the user to the hosted SCA session so they can complete the necessary steps.PAYIN- Not usable for payouts but only usable for pay-in use cases, such as direct debit and refunds using payouts. APAYINrecipient can be created by a user with theUserCategoryPAYERorOWNER, and does not require SCA.
Max. length: 255 (pattern:
^.{0,255}$)Custom data that you can add to this object. This value cannot be changed once the recipient is created.- Individual
- Business
The account holder if the
RecipientType is Individual.Only one of IndividualRecipient or BusinessRecipient is required.- InternationalBankTransfer
- LocalBankTransfer
The account details if
PayoutMethodType is InternationalBankTransfer.Only one of InternationalBankTransfer or LocalBankTransfer is required.The InternationalBankTransfer depends on the Currency and Country.Responses
201
201
Max length: 128 characters (see data formats for details)The unique identifier of the object.
Possible values:
PENDING, CANCELED, ACTIVE, DEACTIVATEDThe status of the recipient:PENDING– ForPAYOUTscope recipients, the user must complete SCA before the recipient can becomeACTIVE. ForPAYINscope recipients, the recipient creation is in progress.CANCELED– SCA was not successfully completed and the recipient creation request was canceled. To retry, create another recipient to retrieve anotherPendingUserAction.RedirectUrl. TheCANCELEDstatus does not apply ifRecipientScopeisPAYIN.ACTIVE– Recipient creation was successful (including SCA ifRecipientScopeisPAYOUT) and the recipient is ready to be used for payouts .DEACTIVATED– The recipient has been permanently deactivated and can no longer be used.
The date and time at which the object was created.
Length: 1–50; cannot contain:
&,'/ (pattern:^(?!.*[&,'/]).{1,50}$)A user-friendly name to identify the account. This value cannot be changed once the recipient is created.Possible values:
InternationalBankTransfer, LocalBankTransferThe payout method of the recipient:LocalBankTransfer– The account can only receive the corresponding localCurrencyfor theCountryvia the domestic payment rail (e.g.EURvia a SEPA local scheme to a SEPA country,GBPvia FPS to aGBaccount,USDvia ACH to aUSaccount, etc). Payouts in non-local currencies return an error.InternationalBankTransfer– The account can receive both non-local currencies via SWIFT and also local currency via domestic rails.
Possible values:
Individual, BusinessThe recipient type:Individual– An account held by a natural person, requiring theIndividualRecipientproperty.Business– An account held by a legal entity, requiring theBusinessRecipientproperty.
Possible values:
AED, AUD, CAD, CHF, CNH, CZK, DKK, EUR, GBP, HKD, HUF, ILS, JPY, MXN, NOK, NZD, PLN, RON, SAR, SEK, SGD, TRY, USD, ZARThe currency of the recipient.Format: Two-letter country code (ISO 3166-1 alpha-2 format)The destination country of the payout method.
The unique identifier of the user.
Possible values:
PAYIN, PAYOUTDefault value: PAYOUTThe scope of the recipient:PAYOUT– Usable for payouts and in pay-in use cases. APAYOUTrecipient can only be created by a user with theUserCategoryOWNERand requires SCA. You need to use the returnedPendingUserAction.RedirectUrlvalue, adding your encodedreturnUrlas a query parameter, to redirect the user to the hosted SCA session so they can complete the necessary steps.PAYIN- Not usable for payouts but only usable for pay-in use cases, such as direct debit and refunds using payouts. APAYINrecipient can be created by a user with theUserCategoryPAYERorOWNER, and does not require SCA.
PAYIN and PAYOUT scopes can be created for either InternationalBankTransfer or LocalBankTransfer, and for either IndividualRecipient or BusinessRecipient, and for any Currency.Max. length: 255 (pattern:
^.{0,255}$)Custom data that you can add to this object. This value cannot be changed once the recipient is created.The unique identifier of the user.
Possible values:
PAYIN, PAYOUTDefault value: PAYOUTThe scope of the recipient:PAYOUT– Usable for payouts and in pay-in use cases. APAYOUTrecipient can only be created by a user with theUserCategoryOWNERand requires SCA. You need to use the returnedPendingUserAction.RedirectUrlvalue, adding your encodedreturnUrlas a query parameter, to redirect the user to the hosted SCA session so they can complete the necessary steps.PAYIN- Not usable for payouts but only usable for pay-in use cases, such as direct debit and refunds using payouts. APAYINrecipient can be created by a user with theUserCategoryPAYERorOWNER, and does not require SCA.
PAYIN and PAYOUT scopes can be created for either InternationalBankTransfer or LocalBankTransfer, and for either IndividualRecipient or BusinessRecipient, and for any Currency.Max. length: 255 (pattern:
^.{0,255}$)Custom data that you can add to this object. This value cannot be changed once the recipient is created.- Individual
- Business
The account holder if the
RecipientType is Individual.- InternationalBankTransfer
- LocalBankTransfer
The account details if
PayoutMethodType is InternationalBankTransfer.Object containing the link needed for SCA redirection if triggered by the API call (otherwise returned
null).Information about the Verification of Payee (VOP) check performed on the Recipient. Because VOP only applies to SEPA local schemes, this object is returned
null if the Recipient’s Currency is not EUR or its PayoutMethod is not LocalBankTransfer.400 - Parameter or data errors
400 - Parameter or data errors
Example 400 error:The following
Errors values may be returned for a given parameter:REQUIRED– Value is required but not present in the request.LENGTH_MORE_THAN_MAX– String length is greater than required length.LENGTH_LESS_THAN_MIN– String length is less than required length.INVALID_FORMAT– Value doe not match expected pattern.NOT_IN_ALLOWED_VALUES– Value is not a validPayoutMethodType,RecipientType,CurrencyorCountry.UNSUPPORTED_COUNTRY– Country not allowed (see country restrictions article for details).UNSUPPORTED_CURRENCY– Currency is a valid ISO 4217 format but not yet supported for Recipients.UNSUPPORTED_PAYOUT_METHOD_FOR_CURRENCY– Payout method is not supported for theCurrencyandCountrycombination.CLIENT_NOT_FOUND–ClientIdmaking the request does not exist.USER_NOT_FOUND–UserIdfor which the request is made does not exist.INVALID_SORT_CODE– Sort code for this account is not valid.INVALID_ACCOUNT_NUMBER– Account number is not valid.INVALID_IBAN– IBAN is not valid.INVALID_BIC– BIC is not valid.IBAN_DOES_NOT_CORRESPOND_TO_ACCOUNT_COUNTRY– IBAN or account number does not match theCountryvalue (for example,CountryisGBbut the IBAN starts withFR).BIC_DOES_NOT_CORRESPOND_TO_ACCOUNT_COUNTRY– Bank identifier does not match theCountryvalue (for example,CountryisJPbut the BIC indicates US).UNSUPPORTED_IBAN– IBAN is valid but not supported:- If
LocalBankTransfer, the IBAN country is not part of SEPA and the local currency is not EUR. - If
InternationalBankTransfer, the IBAN country is not GB or is not part of SEPA and local currency is not EUR.
- If
INVALID_ACCOUNT_NUMBER_AND_SORT_CODE_COMBINATION– GB sort code and account number combination is not valid.
400 - LocalBankTransfer EUR not available because bank not part of SCT
400 - LocalBankTransfer EUR not available because bank not part of SCT
LocalBankTransfer request in EUR if the IBAN is not reachable on SEPA Credit Transfer (SCT), particularly relevant for accounts registered in countries that operate other local schemes: CH, CZ, DK, GB, HU, NO, PL, RO, SE.400 - User is PAYER but RecipientScope set to PAYOUT
400 - User is PAYER but RecipientScope set to PAYOUT
RecipientScope is set to PAYOUT but the user’s UserCategory is PAYER. A user must be an OWNER to register a Recipient that can be used for payouts.400 - Legal User is missing LegalRepresentative.Email
400 - Legal User is missing LegalRepresentative.Email
LegalRepresentative.Email, which is required to perform SCA. Prior to the introduction of SCA, it was possible to create a Legal User without the legal representative’s email.401 - Consent not given for proxy when USER_NOT_PRESENT sent
401 - Consent not given for proxy when USER_NOT_PRESENT sent