**Last updated**: 17 November 2025 | [**Change log**](/products/apms/changelog/) # SEPA Direct Debit A secure and globally accepted direct debit. Note Make yourself familiar with our [API Principles](/products/reference/api-principles) to ensure a resilient integration. details summary Product Overview ### Why use SEPA Direct Debit SEPA Direct Debit is an easy way to take bank payments from your customers, using an IBAN (International Bank Account Number). The SEPA Direct Debit 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 type | Acceptance currency | Recurring | Reverse | Partial Reverse | Disputes | | --- | --- | --- | --- | --- | --- | | Bank Transfer | EUR (Euro) | ❌ | Refunds - Yes Cancel - No | Partial refund - YesPartial cancel- No | ✅ | ### Acceptance countries - Austria - Belgium - France - Germany - Ireland - Italy - Netherlands - Spain ### e-Mandates Each SEPA Direct Debit e-Mandate must have its own unique mandate identifier (`mandateId`). When your customer makes a SEPA Direct Debit 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: ![](/assets/sepa.dfcf14efa9dc36f911e79b98a6480ac6824a780f4b5ed19fdc4db4fe0a38cb47.c61d1628.png) Best practice To get the most from SEPA Direct Debit, refer to our [best practices and recommendations](/products/apms/sepa-best-practice). ### Customer language codes | Language | Code | | --- | --- | | Dutch | nl | | English | en | | French | fr | | German | de | | Italian | it | | Spanish | es | ## 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 ``` | Header | Description | | --- | --- | | `Authorization` | We 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. | | `Content-Type` | We 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-Version` | We 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-bsh.securedataplatform.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 | Parameter | Required? | Description | Data type | Length | | --- | --- | --- | --- | --- | | `merchant` | ✅ | An object that contains information about the merchant. | Object | N/A | | `merchant.entity` | ✅ | Direct your payment to assist with billing, reporting and reconciliation. This is mandatory for Authentication and Queries.Contact your Implementation Manager for more details. | String | Must be between 1 and 32 characters. | | `transactionReference` | ✅ | A unique reference generated by you that is used to identify a payment throughout its lifecycle. See [transaction reference format](/products/reference/formatting#transaction-reference-format). | String | Must be between 1 to 64 characters. | | `instruction` | ✅ | An object that contains all the information related to the payment. | Object | N/A | | `instruction.narrative` | ✅ | An object that helps your customers better identify you on their statement. | Object | See our [formatting rules](/products/reference/formatting#narrative-format) | | `instruction.narrative.line1` | ✅ | The 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](/products/reference/formatting#narrative-line1) for more details. | Object | 24 | | `instruction.value` | ✅ | An object that contains information about the payment transaction. | Object | N/A | | `instruction.value.currency` | ✅ | The payment currency. Refer to the individual APM page for supported currencies. | Integer | 3 | | `instruction.value.amount` | ✅ | The 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](/products/reference/supported-countries-currencies#iso-currency-codes). | Integer | N/A | | `instruction.paymentInstrument` | ✅ | An object that contains information about the payment method. | Object | N/A | | `instruction.paymentInstrument.type` | ✅ | An object that contains the payment type and details. It defines which alternative payment method you wish to use. For SEPA Direct Debit the value is "sepa". | Object | N/A | | `instruction.paymentInstrument.country` | ❌ | An object that contains the country of your customer. Follows [alpha 2 ISO 3166-1](/products/reference/supported-countries-currencies#iso-country-codes) standard. | Object | 2 | | `instruction.paymentInstrument.language` | ❌ | An object that contains the language of your customer. Follows ISO 639-1 standard. | String | 2 | | `instruction.paymentInstrument.shopperEmailAddress` | ✅ | The email address of your customer. | String | N/A | | `instruction.paymentInstrument.mandateType` | ✅ | Must be set to “onetime” | String | N/A | | `instruction.paymentInstrument.cancelURL` | ❌ | When your customer cancels a transaction, we redirect your customer to that cancel URL. | String | N/A | | `instruction.paymentInstrument.failureURL` | ❌ | When a payment fails, we redirect your customer to the failure URL. | String | N/A | | `instruction.paymentInstrument.pendingURL` | ❌ | When we receive the payment result for a pending payment transaction, we redirect your customer to that pending URL. | String | N/A | | `instruction.paymentInstrument.successURL` | ❌ | When we receive the payment result for a successful payment, we redirect your customer to that success URL. | String | N/A | 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-bsh.securedataplatform.com/apmPayments/nFxASqw-LV9HE_rr1mMONJmqBDeXmnv5dzt9IxAXgXbfpu0O_8mOnTpFSIM9gnTSygCKQgvlwQdUbu5rExIpJA_5Uq2LEGXXAanycRpxfDPNA-E70zIWdnaMb2gJhC8AIhbOkM6xDiVNu90YCXo2snTzi_k1sEOQnKIAJNTW3Qc" } }, "_actions": {}, "url": "https://payments.worldpay-bsh.securedataplatform.com/app/hpp/integration/wpg/corporate?OrderKey=" } Note In case of an error, you can get further information in our [error reference](/products/reference/worldpay-error-responses). **Next Steps** [Manage your SEPA Direct Debit payment](/products/apms/20230601/manage)