Setup

Please follow the common Adyen instructions to get set up with SEPA.

Next, make sure to enable SEPA as a payment method on your configured account.

Usage

To create a SEPA payment, set the method to sepa when calling our transaction API.

{
    "amount": 1800,
    "currency": "EUR",
    "country": "DE",
    "intent": "capture",
    "payment_method": {
        "method": "sepa",
        "country": "DE",
        "currency": "EUR",
        "redirect_url": "https://example.com"
    }
}

Recurring payments

SEPA via Adyen supports recurring payments. To process a recurring payment, please be aware of the following limitations when storing a SEPA payment method for future use.

  • To store a SEPA payment for future use, set store: true on the transaction request.
  • When stored, a SEPA payment method is initially in a processing state until we receive a webhook from Adyen. You will need to set up the Adyen RECURRING_CONTRACT webhooks for us to receive this update.
  • A stored SEPA payment method in a processing state can not be used in Embed until it is ready and marked as succeeded

Once a SEPA payment method is successfully stored, you can use it to create a subsequent payment.

{
    "amount": 1800,
    "currency": "EUR",
    "country": "DE",
    "intent": "capture",
    "payment_method": {
        "method": "id",
        "id": "f758d736-9a81-4bd0-85a9-2d3ee361b863"
    },
    "is_subsequent_payment": true,
    "merchant_initiated": true,
    "payment_source": "recurring"
}

When processing a recurring payment please note the following.

  • SEPA supports the payment_source of recurring and instalment, which will map to Subscription on the Adyen API. In all other scenarios it will set the recurring processing mode as UnscheduledCardOnFile.
  • Until the first transaction is settled, a stored SEPA payment will use a different mandate for the subsequent request. In a production environment, this might lead to a subsequent payment failing if the original mandate has not been fully settled yet.

Auto-rescue

Adyen’s auto-rescue feature is supported by this connector. This feature will automatically retry customer-not-present direct debit transactions when they receive a chargeback.

To enable this feature, pass in the following connection options for Adyen when making a subsequent payment request.

POST /transactions

{
    "amount": 1299,
    "country": "DE",
    "currency": "EUR",
    "intent": "capture",
    "payment_method": {
        "method": "id",
        "id": "7f6fb9ca-eb1c-42c6-9b65-8f1c699b84bd"
    },
    "connection_options": {
        "adyen-sepa": {
            "autoRescue": true,
            "maxDaysToRescue": 5
        }
    },
    "payment_source": "card_on_file",
    "is_subsequent_payment": true,
    "merchant_initiated": true
}

Plase note that this feature only works for customer-not-present transaction where is_subsequent_payment is set to true.

The following fields will need to be set.

  • autoRescue - A boolean value that enables the feature. This defaults to false.
  • maxDaysToRescue - The rescue window, in days. You can specify between 1 and 42 days. Adyen recommends using a rescue window of one calendar month (30 days).
  • autoRescueScenario - This is one of the test scenarios as defined by Adyen. This will only work in sandbox.
  • ownerName - Set this to the type of chargeback that you want to simulate. Use a concatenation of chargeback and the reason code. For example, chargeback:MS03 or chargeback:AM04. This will only work in sandbox.

Auto-rescued SEPA transactions will always be capture_succeeded in our system as the payment will always be processed successfully initially. Instead, the auto-rescue will fight the chargeback by re-attempting the payment. Our system will not report on this attempts, but we may report the chargeback in our settlement reports.

Testing

In a test environment, you can simulate an SEPA payment. Adyen has extensive instructions on how to help with this.