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.

Feature summary

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

e-Mandates

As part of the SEPA scheme rules you must create an e-Mandate to show your customer consents to the payment.

Creditor Identifier, Creditor Name and Creditor Address

Creditor information is a set of mandatory information that you must display to your customers when the SEPA Direct Debit e-Mandate is present. We will act as a creditor for you and will collect the SEPA Direct Debit transactions.

You must display the following creditor information on your payment page:

Creditor Identifier: GB30ZZZSDDSELN00000031394541WPAY
Creditor Name: Worldpay Ltd
Creditor Address: Walbrook Building, London, EC4N 8AF

Note

Worldpay appears as the creditor on your customer's bank statement, so you may want to advise your customers of this. This is because we hold the relationship between our bank (the creditor bank) and your customer's bank (the debtor bank). Your name will also appear on the statement narrative as the Creditor Reference Party.

Your customer must accept the e-Mandate using a tickbox.

You must display the official wording below to your customers so they can agree to be debited. This is the official wording you must use to constitute a SEPA-compliant mandate. Without this official wording, your customers can easily reverse the direct debit with their bank.

You can copy the below text:

By signing this mandate form, you authorise (A) Worldpay to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from Worldpay. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights are explained in a statement that you can obtain from your bank.

Note

You can find translations of the official wording here: https://www.europeanpaymentscouncil.eu/other/core-sdd-mandate-translations

Mandate IDs

Each SEPA e-Mandate must have its own unique mandate identifier (mandateId). A unique reference which identifies each e-Mandate signed by your customer.
The mandateId must:

  • contain no more than 35 characters
  • conform to the SEPA character requirements
  • be unique by creditor (in this case Worldpay), as per SEPA regulations

Format for mandate IDs:

Because all mandateIds must be unique by creditor, you must use an e-Mandate prefix that we (as your creditor) assign as part of your mandateId.

M-\<your merchant number assigned by worldpay\>-\<a unique reference assigned by you\>

Example:

M-123456789-A79ZH34KJZ

  • Prefix M tells us that this is a mandateId created by you
  • unique 9-digit number assigned by us - you can retrieve this from your Implementation Manager
  • Your reference, which must be specifically unique for each new e-Mandate: Only use letters, numbers, and hyphens

Acceptance countries

  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Liechtenstein
  • Lithuania
  • Luxembourg
  • Malta
  • Norway
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Sweden
  • Switzerland
  • Spain
  • The Netherlands
  • UK

Your customer language codes

LanguageCode
Dutchnl
Englishen
Frenchfr
Germande
Italianit
Spanishes

Get Started

Get started using our API Reference and set your headers.


Request

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

Example requests

application/json
{ "transactionReference": "Memory265-13/08/1876", "merchant": { "entity": "default" }, "instruction": { "method": "sepa", "value": { "amount": 250, "currency": "GBP" }, "narrative": { "line1": "MindPalace" }, "paymentInstrument": { "type": "direct", "iban": "DE36200400000628808808", "accountHolderName": "Shelock Holmes", "language": "en", "billingAddress": { "address1": "221B Baker Street", "postalCode": "NW1 6XE", "city": "London", "state": "Greater London", "countryCode": "GB" } }, "customerAgreement": { "mandate": { "type": "oneTime", "mandateId": "M-100229092-1727782857791" } }, "customer": { "email": "moriarty@example.com" } } }

Parameters

transactionReferencestring[ 1 .. 64 ] characters^[a-zA-Z0-9\-_/!@#$%()*=.:;?\[\]{}~+]*$required
merchantobject(MerchantV2)required
merchant.​entitystring[ 1 .. 32 ] characters^([a-zA-Z0-9]*)$required

Used to route the request in Access Worldpay, created as part of on-boarding.

Example: "default"
instructionobject(InstructionV2)required

Object that contains the payment type and details.

instruction.​methodstringrequired

The type of instrument.

Value"paypal"
Discriminator
instruction.​valueobject(Value)required

The value of the payment.

instruction.​value.​amountinteger(int64)[ 1 .. 2147483647 ]required

The amount in the lowest denomination of the currency e.g. pennies for GBP, cents for USD.

Example: 1234
instruction.​value.​currencystringrequired
Enum"AED""AFN""ANG""AOA""ARS""AUD""AWG""AZN""BAM""BBD"
instruction.​narrativeobject(NarrativeBase)required
instruction.​narrative.​line1string[ 1 .. 24 ] characters^[a-zA-Z0-9\\-\\.\\,\\ ]*$required

The description shown on your customer's bank statement for the payment.

Example: "Joe Plumbing Ltd"
instruction.​paymentInstrumentobject(PayPalInstrumentV2)required
instruction.​paymentInstrument.​typestringrequired

The type of instruction.

Value"direct"
instruction.​paymentInstrument.​billingAddressobject(PayPalBillingAddressV2)
instruction.​settlementobject(Settlement)

Indicates whether the transaction should be sent for settlement now = true, or later = false at a time of your choosing.

instruction.​resultUrlsobject(ResultUrls)
instruction.​shippingobject(Shipping)
instruction.​customerobject(Customer)

Response

Successful 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 link to query the payment status

Example response

{
  "paymentId": "uK9Oh5zz4yKhGuFofhhnC7KnABEsnvjTFefo7uUYYarwh_KRcHUrrs1qJtQso9gjnhxT5oAgkJfCp1iX6U1upLOpzqHmhG8uXdBKXQ0rnmce4brW4F54BCV6GtAu0zUbgUZHQIK3iu8VcHfOiFVHyN-y7ZDRr24t7o6s_bHlZxo9g_WHOCgZdL-FywMmqkQA",
  "lastEvent": "sentForAuthorization",
  "_links": {
    "self": {
      "href": "https://preprod.access.worldpay.com/apmPayments/uK9Oh5zz4yKhGuFofhhnC7KnABEsnvjTFefo7uUYYarwh_KRcHUrrs1qJtQso9gjnhxT5oAgkJfCp1iX6U1upLOpzqHmhG8uXdBKXQ0rnmce4brW4F54BCV6GtAu0zUbgUZHQIK3iu8VcHfOiFVHyN-y7ZDRr24t7o6s_bHlZxo9g_WHOCgZdL-FywMmqkQA"
    }
  },
  "_actions": {},
  "redirect": "",
  "paymentInstrument": {
    "method": "sepa",
    "type": "direct"
  }
}

Errors

Check out our API reference for the full error code schema.

Next Steps


Manage your SEPA payment