# SEPA Cross Border Payments
source: https://developer.mastercard.com/ob-accept-payments/documentation/payments/single-immediate-payments/sepa-cross-border-payments/index.md

Some ASPSPs are participants of international payment schemes, such as Single Euro Payment Area (SEPA) for payments in euros (€).

It is possible using our payment initiation APIs to request a payment between source and destination IBANs in different countries, provided that:

1. both ASPSPs are participants in the SEPA scheme; and
2. the payment is made in euros.

## How to initiate a Cross-border payment {#how-to-initiate-a-cross-border-payment}

For a full guide on how to create a payment, refer to [Single Immediate Payments](https://developer.mastercard.com/ob-accept-payments/documentation/payments/single-immediate-payments/single-immediate-payments/index.md). On this page, we describe the specifics for creating a Cross-border payment.

##### Understanding which providers support Cross-border payments {#understanding-which-providers-support-cross-border-payments}

To support provision of Cross-border payments, we offer a Get providers endpoint `/providers`. Refer to our [API reference](https://developer.mastercard.com/ob-accept-payments/documentation/api-reference/index.md) for full details. You can use this endpoint to understand which providers support Cross-border payments. Below you can see an extract from a Get providers response that explains what payment execution methods a particular provider supports.

In this example, provider DE_ExampleBank supports both standard and instant cross border payments through the SepaCreditTransfer payment rail:

```json
       {
           "id": "DE_ExampleBank",
           "name": "Example Bank",
           "countryCode": "DE",
           "paymentRails": [
               {
                   "id": "SepaCreditTransfer",
                   "features": [
                       "Payments"
                   ],
                   "executionMethods": [
                       "Standard",
                       "Instant"
                   ],
                   "executionMethodsCrossBorder": [
                       "Standard",
                       "Instant"
                   ],
                   "requiresSourceAccount": true
               }
           ],
```

##### SepaCreditTransfer Payment Rail Specifics {#sepacredittransfer-payment-rail-specifics}

When creating a Cross-border payment, you need to use the SepaCreditTransfer paymentRail in your request when using the `/payments` endpoint. For full details refer to our [API reference](https://developer.mastercard.com/ob-accept-payments/documentation/api-reference/index.md).

A selection of fields are shown here that are important to consider for SEPA cross-border payments.

| **Payment status**  |                        **Description**                        |           **Validation**           |                                                                                                                  **Validation Description**                                                                                                                   | **Required** |
|---------------------|---------------------------------------------------------------|------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|
| **currency**        | The currency that will be used for this specific paymentRail. | `^EUR$`                            | Must be EUR.                                                                                                                                                                                                                                                  | Yes          |
| **reference**       | Payment reference field.                                      | `^[A-Za-z0-9 ?:().,'\/\-]{0,140}$` | Must be a string between 1 and 140 characters in length. Mastercard Open Finance Pay may trim this field based on ASPSP requirements to give your payment the best chance at success. More information on this can be found below.                            | Yes          |
| **amount**          | The payment amount in the specified currency.                 | `>0`                               | Must be a number greater than 0.                                                                                                                                                                                                                              | Yes          |
| **executionMethod** | The execution type that should be used for the payment.       | N/A                                | If you do not pass a value, the value will default to InstantPreferred. When using InstantPreferred, we will try to initiate an instant payment. If this is not possible we will fallback to a standard payment. More information on this can be found below. | No           |

##### Selecting the correct executionMethod {#selecting-the-correct-executionmethod}

Setting the correct executionMethod is an important step. The executionMethod you choose can vary depending on the context of the payment that you are trying to initiate.

There are three options to choose from:

1. **InstantPreferred** This is our *default* value, it is the executionMethod that we will use if you do not specify an executionMethod in your payment request. When the executionMethod is set to InstantPreferred, Mastercard Open Finance Pay will attempt to initiate an instant SEPA payment. If this is not possible, we will fallback to a standard SEPA payment initiation. In this scenario, if you are using the Mastercard hosted Bank Selection screen, the PSU will be able to choose from all of our supported providers on the Bank Selector.
2. **Instant** When the executionMethod is set to Instant, the payment initiation will only be done via SEPA instant. If you pass in a providerId that does not support instant payments, then your payment request will fail. In this scenario if you are using the Mastercard hosted Bank Selection screen, the PSU will only see providers that support instant payments on the Bank selector. Note: When you request an Instant Execution, we will request an instant payment with the provider. However, it is still up to the provider which execution method is ultimately used. This can result in scenarios where you request an instant execution and the payment ends up being a standard execution with the provider
3. **Standard** When the executionMethod is set to Standard, the payment will be initiated as a standard SEPA payment. In this scenario, if you are using the Mastercard hosted Bank Selection screen, the PSU will be able to choose from all of our supported providers on the Bank Selector.

If you want to check what executionMethod was used for a payment initiation, you can call our Get payment endpoint `/payments/{payment_id}`. Refer to our [API reference](https://developer.mastercard.com/ob-accept-payments/documentation/api-reference/index.md) for full details.

When you call the Get payment endpoint endpoint, you can refer to the these fields to understand the executionMethod used for the payment initiation:

1. **executionMethod** Here you will see either the executionMethod that you specified in your create payment request, or you will see that we used InstantPreferred as the default value.
2. **instructedExecutionMethod** Here you will see the actual executionMethod that was used for the payment initiation. When InstantPreferred was specified in the create payment request, you will be able to see the final executionMethod that was used for the payment initiation (either Instant or Standard).

##### Adjustments to the reference field: {#adjustments-to-the-reference-field}

When you create a payment you provide a reference. The standard length allowed for this field in a SEPA payment is between 1 and 140 characters. However, a minority of banks have specific requirements for this field. To reduce your overhead and give your payment the best chance at success, Mastercard Open Finance Pay will use our knowledge of specific provider requirements to validate the value that you pass in the reference field. If needed, we will adjust the length of the reference value to comply with the banks specific requirements.

To ensure you are updated of any adjustments to the reference field, you can call our Get payment endpoint `/payments/{payment_id}` (refer to our [API reference](https://developer.mastercard.com/ob-accept-payments/documentation/api-reference/index.md) for details) where we return these fields:

1. **reference** Here we return the same reference value that you passed in your create payment request.
2. **adjustedReference** Here we return the adjusted reference that we passed to the provider for payment initiation.

## Cross-border payments limitations {#cross-border-payments-limitations}

When accepting Cross-border payments, it is important to note the following limitations:

##### IBAN discrimination {#iban-discrimination}

Some financial institutions may practice [IBAN discrimination](https://www.ecb.europa.eu/paym/groups/pdf/efip/IBAN_discrimination_update.pdf), where they apply different rules and barriers to payments originating from other countries compared to domestic payments. This can include, and is not limited to, additional PSU approval/authorization steps. This is in conflict with European Commission's best practice guidance, but nonetheless IBAN discrimination does sometimes occur and may impact conversion rates.
Note: Where this does occur, it is outside of Mastercard Open Finance Pay control to resolve and Mastercard Open Finance Pay takes no liability for this.

##### Settlement time {#settlement-time}

The time period from requesting a payment initiation to payment settlement can differ when making a cross-border payment as compared to a domestic payment.
