Region | EU, UK |
---|---|
Currencies | See the currencies page for details |
Refunds | Not supported |
Disputes | Users authenticate directly with their bank, so there is no dispute process and a low risk of unrecognized or fraudulent payments |
Preauthorization | No |
Recurring payments | No |
BankName
in your API request, the user doesn’t have to choose it on the hosted page on redirection.You can also invite the user to select the Scheme
they wish to use, otherwise the instant one is used by default (if supported by the bank).To retrieve the supported banks, call the GET View supported banks for Pay by Bank endpoint, filtering on the user’s country. In the response, you can display the Name
to the user in the list, while the BankName
is the value to send in your payment request. For each bank, the list of Scheme
values supported is also returned.As well as the BankName
, you can also invite the user to provide their IBAN
and BIC
which preselects the account to be debited. Otherwise, the user selects the account to debit on the hosted page.In Germany (DE
), banks impose an additional authentication step that can be avoided if you also obtain and provide the user’s IBAN
and BIC
up front.ReturnURL
to which the user will be returned after payment (whatever the outcome).If the ReturnURL
redirects to your app, rather than a website, you need to also set the PaymentFlow
to APP
.You should also provide the BankName
, Scheme
and IBAN
and BIC
if you obtained them from the user.RedirectURL
in the API response.On the hosted page, the user initiates the payment by:Country
), unless specified in BankName
IBAN
and BIC
) – this is known as the account information service (AIS) that is authenticated in some countries, notably GermanyReturnURL
:PaymentFlow
is WEB
(default value)PaymentFlow
is APP
ProcessingStatus
is returned with its only value PENDING_SUCCEEDED
and the Status
is CREATED
.ProcessingStatus
is only returned if the payment initiation was successful, and it triggers a webhook for the dedicated event type:PAYIN_NORMAL_PROCESSING_STATUS_PENDING_SUCCEEDED
ProcessingStatus
only has one value, PENDING_SUCCEEDED
, which is temporarily returned until the final outcome is known. If it is not returned, then the payment was not initiated successfully by the user.When the bank wire from the user’s account is received on Mangopay’s account, the pay-in’s Status
changes from CREATED
to SUCCEEDED
and the ResultCode
changes to 000000
. This outcome triggers a webhook for the event type:PAYIN_NORMAL_SUCCEEDED
Scheme
that is used, it can take up to 72 hours for the pay-in to succeed.If the pay-in fails, it’s Status
changes to FAILED
and a ResultCode
and ResultMessage
are returned giving the reason (see Functional errors below). This outcome triggers a webhook for the event type:PAYIN_NORMAL_FAILED
RedirectUrl
to the Pay by Bank hosted experience, the user selects their bank (unless sent in BankName
) and chooses the account to be debited.
On the hosted Pay by Bank page, however, they are not able to select the scheme used for the payment.
You can send the Scheme
in your API request, and we recommend that you present this choice to the user beforehand.
To retrieve the banks supported by Pay by Bank, you can use the GET View supported banks for Pay by Bank endpoint.
Scheme
choice to the user (recommended) or not, you should communicate clearly which scheme is being used.Furthermore, it is possible for a bank to charge the user additional fees (separately) for an instant scheme, but this will become less common as markets adapt.Country
is DK
then there is no default and the Scheme
must be specified.
If your API call specifies the instant scheme but the bank doesn’t support it, then the non-instant scheme is used. However, the API returns the value that you sent, even after the funds arrive on Mangopay’s account and the Status
becomes SUCCEEDED
.
Scheme
values are available depending on the Country
:
Country | Supported Scheme values | Default value (if supported by the bank) |
---|---|---|
AT | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
DE | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
DK | DANISH_DOMESTIC_CREDIT_TRANSFER , INSTANT_DANISH_DOMESTIC_CREDIT_TRANSFER_STRAKS , INSTANT_DANISH_DOMESTIC_CREDIT_TRANSFER_INTRADAG | No default - must be specified |
EE | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
ES | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
FI | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
FR | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
GB | FASTER_PAYMENTS | FASTER_PAYMENTS |
IE | SEPA_CREDIT_TRANSFER | SEPA_CREDIT_TRANSFER |
IT | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
LT | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
NL | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
NO | NORWEGIAN_DOMESTIC_CREDIT_TRANSFER , INSTANT_NORWEGIAN_DOMESTIC_CREDIT_TRANSFER_STRAKS | INSTANT_NORWEGIAN_DOMESTIC_CREDIT_TRANSFER_STRAKS |
PL | SEPA_CREDIT_TRANSFER , INSTANT_POLISH_DOMESTIC_CREDIT_TRANSFER , POLISH_DOMESTIC_CREDIT_TRANSFER | INSTANT_POLISH_DOMESTIC_CREDIT_TRANSFER |
PT | SEPA_CREDIT_TRANSFER , SEPA_INSTANT_CREDIT_TRANSFER | SEPA_INSTANT_CREDIT_TRANSFER |
Status
changes to FAILED
, the following ResultCode
errors may be returned.
Functional errors