- METHOD TYPEBank Transfer
- PAYMENTS
- PAYOUTS
- REFUNDS
- RECURRING
Introduction
SEPA (Single Euro Payments Area) Direct Debit is a bank debit payment method that allows a merchant to collect euro-denominated payments (one-off and recurring) directly from a customer bank account within the SEPA region. SEPA Direct Debit is widely used and trusted across Europe, particularly in markets such as Germany, the Netherlands, France, and Spain.
A customer authorizes payment by accepting a mandate/registration, which gives the merchant permission to debit the account. The mandate, once in place, can be reused to collect future payments, thus making SEPA Direct Debit well-suited for subscriptions, invoices, and ongoing billing.
As an asynchronous payment method, a payment is not immediately confirmed. Instead, the payment is processed through the banking network and the final result is provided at a later stage when funds are settled, the payment fails, or the payment is returned.
Supported Countries
- Andorra
- Austria
- Belgium
- Bulgaria
- Croatia
- Cyprus
- Czech Republic
- Denmark
- Estonia
- Finland
- France
- Germany
- Greece
- Hungary
- Iceland
- Ireland
- Italy
- Latvia
- Liechtenstein
- Lithuania
- Luxembourg
- Malta
- Monaco
- Netherlands
- Norway
- Poland
- Portugal
- Romania
- San Marino
- Slovakia
- Slovenia
- Spain
- Sweden
- Switzerland
- United Kingdom
- Vatican City
Supported Currencies
- EUR
REST API 1.0
Recurring Payment Flow
Use the recurring payment flow to create and approve a SEPA Direct Debit mandate that can be reused for future payments. Once the mandate is in place, a recurring or on-demand payment can be initiated without requiring additional customer input. The flow is typically used for subscriptions, installment plans, or any scenario in which payments are collected from the same customer over time.
To perform a registration request (mandate creation) using Nuvei REST API 1.0, do the following:
1) Registration
Registration Request
- Generate a
sessionToken.
- Send a
/paymentrequest that includes the following mandatory parameters:userTokenId– unique customer identifier in the merchant systemamount– must be0for registrationcurrencypaymentOption.alternativePaymentMethod.paymentMethod = "apmgw_Sepa"subMethod = "RECURRING"deviceDetails.ipAddressbillingAddresscontaining:firstNamelastNamephoneemailaddresscityzipcountry
Example /payment Request (Registration)
{
"sessionToken":"<sessionToken from /getSessionToken>",
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"clientRequestId":"<unique request ID in merchant system>",
"amount":"0",
"currency":"EUR",
"userTokenId":"<unique customer identifier in merchant system>",
"clientUniqueId":"<unique transaction ID in merchant system>",
"paymentOption":{
"alternativePaymentMethod":{
"paymentMethod":"apmgw_Sepa"
}
},
"subMethod":{
"subMethod":"RECURRING"
},
"deviceDetails":{
"ipAddress":"<customer's IP address>"
},
"billingAddress":{
"firstName":"John",
"lastName":"Smith",
"phone":"+40745111111",
"address":"Test",
"city":"Test",
"zip":"700111",
"email":"[email protected]",
"country":"RO"
},
"timeStamp":"<YYYYMMDDHHmmss>",
"checksum":"<calculated checksum>"
}
Registration Response
The response returns:
redirectUrl– Used to redirect the customer to approve the mandateuserPaymentOptionId(UPO) – Stored and reused for future recurring payments.
Example /payment Response (Registration)
{
"internalRequestId":11111111,
"status":"SUCCESS",
"errCode":0,
"reason":"",
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"version":"1.0",
"clientRequestId":"11111111111",
"sessionToken":"<sessionToken from /getSessionToken>",
"clientUniqueId":"{{clientUniqueId}}",
"orderId":"111111111",
"userTokenId":"<unique customer identifier in merchant system>",
"paymentOption":{
"redirectUrl":"https://globalep.smart2pay.com/SlimPay/Landing/PreapprovalLanding.aspx?ID=642877&Hash=CFC520DB8D2E065BF9109EBA6875BBEA",
"userPaymentOptionId":"1111111",
"card":{}
},
"transactionStatus":"REDIRECT"
}
Registration Response DMN
After the redirect flow is completed, Nuvei sends a Direct Merchant Notification (DMN) to urlDetails.notificationUrl.
The DMN confirms that the mandate is successfully created and approved.
Example Registration DMN with Status = APPROVED
'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=113324354111&userid=Test_7319951180&merchant_unique_id=2018032523452&customData=&productId=&first_name=John&middle_name=&last_name=Smith&[email protected]¤cy=EUR&clientUniqueId=2431314175242&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Test&address2=&country=Romania&state=&city=Iasi&zip=700111&phone1=%2B40745111111&phone2=&phone3=&client_ip=123.0.0.1&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Smart2Pay-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=RO74REVO000012947111111&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=11111&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Sepa&ID=&merchant_id=11112611926&responseTimeStamp=2026-04-29.09%3A30%3A09&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=Test_7319951180&userPaymentOptionId=1111111&TransactionID=321434507258731&externalTransactionId=1070111&APMReferenceID=B6042B764F2A3A9D3535D2872162D1CF&orderTransactionId=4113644525111&totalAmount=0.00&dynamicDescriptor=Test&item_name_1=NA&item_number_1=&item_amount_1=0.00&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20260429&type=DEPOSIT&clientRequestId=2026042111111&relatedTransactionId=&apmPayerInfo=%7B%22StatusInfo%22%3A%22%7B+StatusCode%3A+%2C+info%3A+%7D%22%2C%22AccountNumber%22%3A%22RO74REVO000012947111111%22%2C%22TransactionAmountLimit%22%3A%22%22%2C%22DailyAmountLimit%22%3A%22%22%2C%22MonthlyAmountLimit%22%3A%22%22%2C%22MandateDateSigned%22%3A%2200010101%22%7D&sessionId=89255b5843ff1ac27111111&responsechecksum=fb9e9c8a2434535435340a0f97f8ca&advanceResponseChecksum=cafdea3432edf43bf48a8ba7c58b8',
2) Subsequent Payment
Subsequent payments are initiated using a valid userPaymentOptionId (UPO) created in the registration process, together with the same userTokenId.
Subsequent Payment Request
Example /payment Request (Subsequent Payment)
{
"sessionToken":"<sessionToken from /getSessionToken>",
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"clientRequestId":"{{clientRequestId}}",
"amount":"0.10",
"currency":"EUR",
"userTokenId":"<unique customer identifier in merchant system>",
"clientUniqueId":"<unique transaction ID in merchant system>",
"paymentOption":{
"userPaymentOptionId":"1111111"
},
"deviceDetails":{
"ipAddress":"<customer's IP address>"
},
"billingAddress":{
"firstName":"John",
"lastName":"Smith",
"phone":"+40745111111",
"address":"Test",
"city":"Test",
"zip":"700111",
"email":"[email protected]",
"country":"RO"
},
"timeStamp":"<YYYYMMDDHHmmss>",
"checksum":"<calculated checksum>"
}
Subsequent Payment Response
Example /payment Response (Subsequent Payment)
{
"internalRequestId":1111111111,
"status":"SUCCESS",
"errCode":0,
"reason":"",
"merchantId":"<your merchantId>",
"merchantSiteId":"<your merchantSiteId>",
"version":"1.0",
"clientRequestId":"11111111111",
"sessionToken":"<sessionToken from /getSessionToken>",
"clientUniqueId":"<unique transaction ID in merchant system>",
"orderId":"111111111",
"userTokenId":"<unique customer identifier in merchant system>",
"paymentOption":{
"userPaymentOptionId":"1111111",
"card":{}
},
"transactionStatus":"PENDING",
"transactionId":"1110000000"
}
Subsequent Payment DMN
The final transaction outcome (APPROVED or DECLINED) is delivered asynchronously via DMN. After a transaction is processed, Nuvei sends a Direct Merchant Notification (DMN) to urlDetails.notificationUrl.
Example DMN with Status = APPROVED
If the DMN includes ‘Status = APPROVED‘, then the payment is successfully collected.
'ppp_status=OK&Status=APPROVED&ExErrCode=0&ErrCode=0&errApmCode=0&errApmDescription=&errScCode=0&errScDescription=&Reason=&ReasonCode=0&PPP_TransactionID=307111792111&userid=Test_7319951180&merchant_unique_id=2018032711111&customData=&productId=&first_name=John&middle_name=&last_name=Smith&[email protected]¤cy=EUR&clientUniqueId=2018032111111&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Test&address2=&country=Romania&state=&city=Iasi&zip=700111&phone1=%2B40745111111&phone2=&phone3=&client_ip=123.0.0.1&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Smart2Pay-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=RO71REVO0000229471111111&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=11111&merchant_status=&action=&requestVersion=&message=APPROVED&merchantLocale=&unknownParameters=&payment_method=apmgw_Sepa&ID=&merchant_id=311115636326&responseTimeStamp=2026-04-29.11%3A37%3A01&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=Test_7319951180&userPaymentOptionId=1111111&TransactionID=16201111130&externalTransactionId=1714234554&additionalExternalTransactionId=F8623245255454&APMReferenceID=3B945345drgdf9A23&orderTransactionId=115435343111&totalAmount=0.10&dynamicDescriptor=Test&item_name_1=NA&item_number_1=&item_amount_1=0.10&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20260429&type=DEPOSIT&clientRequestId=2026042111111&relatedTransactionId=&apmPayerInfo=%7B%22StatusInfo%22%3A%22%7B+StatusCode%3A+1000%2C+info%3A+test%2C+originalAmount%3A+0.1000%2C+ProcessedAmount%3A+0.1%2C+originalCurrency%3A+EUR%2C+ProcessedCurrency%3A+EUR+%7D%22%2C%22AccountNumber%22%3A%22RO71REVO000112947111111%22%2C%22AdditionalTransactionBankId%22%3A%22F86208F608B07423466BAE%22%7D&sessionId=8975effd64342345230f8c&responsechecksum=14a65d34219a601ac209&advanceResponseChecksum=c84a03249bd6c40f7bb87f6e2c0c3d',
Example of DMN with Status = DECLINED
If the DMN includes ‘R-Transaction’ and ‘Status = DECLINED’, the SEPA DD payment is returned or reversed by the customer’s bank after initial processing (for example, due to insufficient funds, mandate issues, or account restrictions). The R-Transaction reason code can be used by merchants to identify the failure cause.
'ppp_status=FAIL&Status=DECLINED&ExErrCode=0&ErrCode=227&errApmCode=227&errApmDescription=R-Transaction+%3A+AM04+-+Insufficient+funds.&errScCode=101414&errScDescription=Reversed+transaction&Reason=Reversed+transaction&ReasonCode=101414&PPP_TransactionID=307111792111&userid=Test_7319951180&merchant_unique_id=2018032711111&customData=&productId=&first_name=John&middle_name=&last_name=Smith&[email protected]¤cy=EUR&clientUniqueId=2018032111111&customField1=&customField2=&customField3=&customField4=&customField5=&customField6=&customField7=&customField8=&customField9=&customField10=&customField11=&customField12=&customField13=&customField14=&customField15=&invoice_id=&address1=Test&address2=&country=Romania&state=&city=Iasi&zip=700111&phone1=%2B40745111111&phone2=&phone3=&client_ip=127.0.0.1&nameOnCard=&cardNumber=&bin=&noCVV=&acquirerId=&acquirerBank=Smart2Pay-PI&expMonth=&expYear=&Token=&tokenId=&AuthCode=RO71REVO0000229471111111&AvsCode=&Cvv2Reply=&shippingCountry=&shippingState=&shippingCity=&shippingAddress=&shippingZip=&shippingFirstName=&shippingLastName=&shippingPhone=&shippingCell=&shippingMail=&total_discount=0.00&total_handling=0.00&total_shipping=0.00&total_tax=0.00&buyButtonProductBundleId=&merchant_site_id=11111&merchant_status=&action=&requestVersion=&message=DECLINED&merchantLocale=&unknownParameters=&payment_method=apmgw_Sepa&ID=&merchant_id=311115636326&responseTimeStamp=2026-04-29.13%3A32%3A11&buyButtonProductId=&webMasterId=&appliedPromotions=&uniqueCC=&transactionType=Sale&externalEmail=&cardCompany=&eci=&user_token_id=Test_7319951180&userPaymentOptionId=1111111&TransactionID=16201111130&externalTransactionId=1714234554&additionalExternalTransactionId=F8623245255454&APMReferenceID=3B945345drgdf9A23&orderTransactionId=115435343111&totalAmount=0.10&dynamicDescriptor=Test&item_name_1=NA&item_number_1=&item_amount_1=0.10&item_quantity_1=1&item_discount_1=0.00&item_handling_1=0.00&item_shipping_1=0.00&feeAmount=&amountWithoutFee=&houseNumber=&customCurrency=&externalToken_blockedCard=&externalToken_cardAcquirerId=&externalToken_cardAcquirerName=&externalToken_cardBin=&externalToken_cardBrandId=&externalToken_cardBrandName=&externalToken_cardExpiration=&externalToken_cardLength=&externalToken_cardMask=&externalToken_cardName=&externalToken_cardTypeId=&externalToken_cardTypeName=&externalToken_clubName=&externalToken_creditCompanyId=&externalToken_creditCompanyName=&externalToken_extendedCardType=&externalToken_Indication=&externalToken_tokenValue=&externalToken_tokenProvider=&ECIRaw=&cryptogram=&maskedNetworkTokenNumber=&upoRegistrationDate=20260429&type=DEPOSIT&clientRequestId=2026042111111&relatedTransactionId=&apmPayerInfo=%7B%22StatusInfo%22%3A%22%7B+StatusCode%3A+1000%2C+info%3A+test%2C+originalAmount%3A+0.1000%2C+ProcessedAmount%3A+0.1%2C+originalCurrency%3A+EUR%2C+ProcessedCurrency%3A+EUR+%7D%22%2C%22AccountNumber%22%3A%22RO71REVO000112947111111%22%2C%22AdditionalTransactionBankId%22%3A%22F86208F608B07423466BAE%22%7D&sessionId=8975effd64342345230f8c&responsechecksum=14a65d34219a601ac209&advanceResponseChecksum=c84a03249bd6c40f7bb87f6e2c0c3d',
User Experience
Creating a Mandate
- The user is redirected to the provider’s page and enters the IBAN of the bank account.

- The user enters a phone number.

- The user confirms the mandate using the four-digit code received by SMS.

- The user receives the digitally signed mandate by email.

Testing
To test payments in Germany, use the following data:
| Details | Value |
|---|---|
| IBAN | DE89370400440532013000 |
| BIC | COBADEFFXXX |
| BANK | Commerzbank |
| ADDRESS | Venloer Str. 288 |
| CITY | Köln |
| ZIP | 50447 |