SOFORT is an online direct payment method, which works on the basis of online banking. It is the predominant online banking method in the German-speaking countries in Europe, and in Belgium.

To pay with SOFORT, the customer is redirected to the SOFORT web page. The customer will login by using his bank details for authentication. After successful login, SOFORT initiates a payment transaction with the customer’s bank account.

SOFORT allows merchants to serve customers without credit cards, and those who prefer online payment methods over invoices.

How to integrate SOFORT


Execute a SOFORT call

Executing a SOFORT transaction is a three-step process:

  • Step1: Create a new /types/sofort resource. We recommend using the JavaScript SDK, mobile SDK for iOS or mobile SDK for Android.
  • Step 2: Execute a /payments/charges call with the reference to the types resource.
  • Step 3: Forward customer to redirectUrl provided within charge response.

Step 1: Creating a payment resource


Body: {}
// heidelpayUI
var unzer= new Unzer('s-pub-xxxxxxxxxx');

// Sofort
var Sofort = heidelpayInstance.Sofort()

// Create resource
  .then(function (data) {
    console.log("Sofort Resource: ", data)
// Sample Successful Response

  "id": "s-sft-ys8v4iyqhgpk",
  "method": "sofort",
  "recurring": false,
  "geoLocation": {
    "clientIp": "",
    "countryCode": "VN"

By using the request, a resource is created and the resource id (e.g. s-sft-23ashaor54) is returned.

Step 2 - Charging the payment resource

After creating the types resources, you can create a charge request.

// UnzerAPI - Sofort charge


       "amount":       "12.4500",                                    
       "currency":     "EUR",
       "returnUrl":    "",
       "resources": {
           "typeId":        "s-sft-23ashaor54",

The result will be a pending charge with a redirectUrl.

// UnzerAPI - response example

    "id":               "s-chg-1",
    "isSuccess":        false,
    "isPending":        true,
    "isError":          false,
    "redirectUrl":      "",

Step 3 - Forward customer to redirectUrl

You need to send the customer to the redirectUrl where he will be redirected to the SOFORT payment page. After successful payment or cancelation, the customer will be redirected back to the returnUrl you specified in the charge call.

After the customer is redirected back to the returnUrl, you should check the status of the payment by getting the payment id.

// UnzerAPI - fetch final result


    "id":                "s-chg-1",
    "isSuccess":   true,
    "isPending":   false,
    "isError":     false,
    "redirectUrl": "",

Sandbox test data

For testing the integration, the following test data is available.

bank number 00000
account number 123456
USER_PIN 123456
USER_TAN 12345