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
  • 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

e-Mandates

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

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": "sentForAuthorisation",
  "_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 PayPal payment