Last Updated: 13 November 2024 | Change Log

SEPA

A secure and globally accepted direct debit.

Note

Make yourself familiar with our API Principles to ensure a resilient integration.

Product Overview

Why use SEPA

SEPA Direct Debit is an easy way to take bank payments from your customers, using an IBAN (International Bank Account Number).

The SEPA scheme is a set of rules that dictate how payments must be processed and settled in the SEPA (Single Euro Payment Area) region. As part of these rules, you must create an e-Mandate with your customer to consent to payments.

Feature summary

Payment typeAcceptance currencyRecurringReversePartial ReverseDisputes
Bank TransferEUR (Euro)
  • Refunds - Yes
  • Cancel - No
  • Partial refund - Yes
  • Partial cancel- No

Acceptance countries

  • Austria
  • Belgium
  • France
  • Germany
  • Ireland
  • Italy
  • Netherlands
  • Spain

e-Mandates

Each SEPA e-Mandate must have its own unique mandate identifier (mandateId). When your customer makes a SEPA payment they are redirected to our Hosted Payment Pages (HPP). There, the mandate is created, and your customer enters their payment details. The mandateId is created by us in the following format:

  • W-MERCHANTNUMBER-RANDOMCHARACTERS - Example: W-123456789-A79ZH34KJZ

Hosted Payment Page

Below is an example of our Hosted Payment Page that captures your customer's payment information and creates a mandate:

Best Practice

To get the most from SEPA DD, refer to the section: Best practice and some recommendations.

Customer language codes

LanguageCode
Dutchnl
Englishen
Frenchfr
Germande
Italianit
Spanishes

Set your headers

Setting your headers is an important part of an API request. The headers represent the meta-data associated with your API request.

Authorization: {your_credentials}
Content-Type: application/json
WP-Api-Version: 2023-06-01
HeaderDescription
AuthorizationWe use the Authorization header to identify and authenticate you within Access Worldpay. You must use the Authorization header for any request you send to our APM API, unless you are using client certificate authentication over TLS. If you must use this, read our reference guide on Authenticating with SSL/TLS.
Content-TypeWe require the Content-Type header if the request you're sending includes a request body, and if the HTTP method is a POST or a PUT.
WP-Api-VersionWe use the WP-Api-Version header to identify which version of our APM API you are using. You must use the WP-Api-Version header for any request you send to our API.

If you're using both the Content-Type and WP-Api-Version headers, they must match.

Note

Replace {your_credentials} with your base64-encoded Basic Auth username and password. To get your Access Worldpay credentials contact your Implementation Manager.

Take a payment

POST https://try.access.worldpay.com/apmPayments

Example request

{
   "transactionReference": "Memory265-13/08/1876",
    "merchant":
    {
        "entity": "default"
    },
    "instruction":
    {
        "narrative":
        {
            "line1": "Mind Palace LTD"
        },
        "value":
        {
            "amount": 1234,
            "currency": "EUR"
        },
        "paymentInstrument":
        {
            "type": "sepa",
            "country": "DE",
            "language": "de",
            "shopperEmailAddress": "email@example.com",
            "mandateType": "onetime",
            "successURL": "https://example.com/success",
            "pendingURL": "https://example.com/pending",
            "failureURL": "https://example.com/failure",
            "cancelURL": "https://example.com/cancel"
       }
    }
}

Parameters

ParameterRequired?DescriptionData typeLength
merchantAn object that contains information about the merchant.ObjectN/A
merchant.entityDirect your payment to assist with billing, reporting and reconciliation. This is mandatory for Authentication and Queries.
Contact your Implementation Manager for more details.
StringMust be between 1 and 32 characters.
transactionReferenceA unique reference generated by you that is used to identify a payment throughout its lifecycle. See transaction reference format.StringMust be between 1 to 64 characters.
instructionAn object that contains all the information related to the payment.ObjectN/A
instruction.narrativeAn object that helps your customers better identify you on their statement.ObjectSee our formatting rules
instruction.narrative.line1The first line of the narrative which appears on your customer's statement (If a character is not supported it is replaced with a space.).
See narrative line1 format for more details.
Object24
instruction.valueAn object that contains information about the payment transaction.ObjectN/A
instruction.value.currencyThe payment currency. Refer to the individual APM page for supported currencies.Integer3
instruction.value.amountThe payment amount. This is a whole number with an exponent e.g. if exponent is two, 250 is 2,50. You can find the relevant exponent in our currency table.IntegerN/A
instruction.paymentInstrumentAn object that contains information about the payment method.ObjectN/A
instruction.paymentInstrument.typeAn object that contains the payment type and details. It defines which alternative payment method you wish to use. For SEPA the value is "sepa".ObjectN/A
instruction.paymentInstrument.countryAn object that contains the country of your customer. Follows alpha 2 ISO 3166-1 standard.Object2
instruction.paymentInstrument.languageAn object that contains the language of your customer. Follows ISO 639-1 standard.String2
instruction.paymentInstrument.shopperEmailAddressThe email adddress of your customer.StringN/A
instruction.paymentInstrument.mandateTypeMust be set to “onetime”StringN/A
instruction.paymentInstrument.cancelURLWhen your customer cancels a transaction, we redirect your customer to that cancel URL.StringN/A
instruction.paymentInstrument.failureURLWhen a payment fails, we redirect your customer to the failure URL.StringN/A
instruction.paymentInstrument.pendingURLWhen we receive the payment result for a pending payment transaction, we redirect your customer to that pending URL.StringN/A
instruction.paymentInstrument.successURLWhen we receive the payment result for a successful payment, we redirect your customer to that success URL.StringN/A

Recommendation
We suggest you provide the cancelURL,failureURL, pendingURL and successURL attribute to redirect your customer to, once you have received the payment result.

Response

Successful request response

  • an HTTP code 201
  • an id which is unique to the payment - we recommend storing the "id" as this can be used to manage the payment later
  • a url to redirect your customer to the APM provider to complete the payment
  • a link to query the payment status

Example Response

{
    "paymentId": "nFxASqw-LV9HE_rr1mMONJmqBDeXmnv5dzt9IxAXgXbfpu0O_8mOnTpFSIM9gnTSygCKQgvlwQdUbu5rExIpJA_5Uq2LEGXXAanycRpxfDPNA-E70zIWdnaMb2gJhC8AIhbOkM6xDiVNu90YCXo2snTzi_k1sEOQnKIAJNTW3Qc",
    "lastEvent": "pending",
    "_links": {
        "self": {
            "href": "https://access.worldpay.com/apmPayments/nFxASqw-LV9HE_rr1mMONJmqBDeXmnv5dzt9IxAXgXbfpu0O_8mOnTpFSIM9gnTSygCKQgvlwQdUbu5rExIpJA_5Uq2LEGXXAanycRpxfDPNA-E70zIWdnaMb2gJhC8AIhbOkM6xDiVNu90YCXo2snTzi_k1sEOQnKIAJNTW3Qc"
        }
    },
    "_actions": {},
    "url": "https://payments.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey="
}
Note

In case of an error, you can get further information in our error reference.

Next Steps


Manage your SEPA payment