Sofort

Learn how to accept Sofort payments.


Sofort is the most used online banking method in Germany, Austria, and Switzerland, and it is also available in Belgium.

Sofort is also available in Italy, the Netherlands, Poland, Spain, and the United Kingdom. If you want to offer Sofort in these countries, contact our Support Team.

When paying with Sofort, the shopper is redirected to the Sofort page to complete their payment. For most Sofort payments, you'll receive immediate confirmation of whether the payment was successful. For a small number of payments you will not receive an immediate confirmation, and will need to rely on a notification to confirm whether the payment was successful.

Payment Type Payment flow Recurring Refunds Partial Refunds Captures Partial Captures Chargebacks
Online Banking Redirect Yes, via SEPA Yes Yes No No Yes*

*Chargebacks for Sofort only occur in very rare cases. For more information, refer to Chargebacks.

You can accept Sofort payments with:

Integrate with Checkout SDKs

Our Checkout SDKs support Sofort payments without any additional configuration. 

Integrate with API

In this section, we show the API integration steps for Sofort.

Before you begin this section, make sure you read and understand our API Integration guide.

Step 1: Present Sofort in your payments form

To retrieve a list of available payment methods, you can call the /paymentMethods endpoint. To have Sofort included in the response, you need to have:

  • the shopper's countryCode set to ATBECH, or DE. 
  • the currency set to EUR.
  • the  value set to at least 0.10€.

You do not need to collect any additional details from the shopper.

Step 2: Make a payment

  • Make a /payments API call, providing:
    • reference: Your unique reference for this payment.
    • amount 
    • paymentMethod.typedirectEbanking. This indicates that the shopper has chosen to pay with Sofort. 
    • returnUrl – the URL that your shopper is redirected to after they have completed the payment.

{
   "merchantAccount":"YourMerchantAccount",
   "reference":"Sofort test",
   "amount":{
      "currency":"EUR",
      "value":1000
   },
   "paymentMethod":{
      "type":"directEbanking",
   },
   "returnUrl":"https://your-company.com/..."
} 
This returns a  /payments response containing a
  • resultCode of RedirectShopper
  • redirect object containing a url

{
  "resultCode":"RedirectShopper",
  "details":[
    {
      "key":"payload",
      "type":"text"
    }
  ],
  "paymentData":"abcxyz...",
  "redirect":{
    "method":"GET",
    "url":"https://test.adyen.com/hpp/skipDetails.shtml?brandCode=???&sdfsdf..."
  }
}

Step 3: Redirect shopper

To complete the Sofort payment, the shopper will need to enter their bank details in the Sofort environment.

  • Redirect the shopper to the URL specified at redirect.url.

When the shopper has completed the payment on the Sofort page, they will be redirected back to your website or app using the returnUrl that you specified earlier. The returnUrl will be appended with a payload

https://your-company.com/?payload=sdfsdf...&type=complete&resultCode=authorised

Do not use the resultCode you receive from the returnUrl to determine whether the payment was successful. Instead, verify the result on your server.

Step 4: Present payment result

  1. Submit the payload to the /payments/details endpoint to verify the result of the payment:

    {
      "details":{
        "payload":"sdfsdfsdf..."
      }
    }

    The response will contain a pspReference, which is our unique identifier for this payment, and a resultCode

  2. Use the resultCode to present the result of the payment to your shopper via your website or app. If the shopper failed to return to your website or app after completing the payment, you will not receive a resultCode. To track the status of the payment, you should use notifications.

Sofort result codes 

For Sofort, a resultCode of Authorised means that the shopper completed their payment, and it has been sent to the bank for processing. In most cases, this means that you will receive the funds. For information on exceptions, refer to Chargebacks.

For more information about result codes and how you can action them, refer to Result codes

Sofort notifications

If you're accepting Sofort payments, you will need to set up notifications to know whether a payment is successful. Once set up, we'll notify you of the result of payments, including those: 

  • With a Pending status.
  • Where the shopper failed to return to your website or app after completing the payment.

Successful payments

In most cases, you'll know that a Sofort payment has been successful when you receive a notification with an: 

  • eventCode  of  AUTHORISATION .
  • success  has a value of  true .

In very rare cases, the payment could still fail after you received a successful AUTHORISATION notification. For more information, refer to Chargebacks.

Recurring Sofort payments

If you have a subscription or recurring business model we recommend creating a shopper token.

Although the Sofort payments network does not support recurring payments, you can make recurring payments for a Sofort shopper by tokenizing their payment details. When you create a shopper token from a Sofort payment, we'll store the shopper's SEPA details with the token. You can use this token to make recurring payments using SEPA Direct Debit.

You can create a shopper token with either the SDK or API integrations, but to make recurring payments with the token you'll need to use the  /payments endpoint.

We strongly recommend that you request explicit permission from the shopper if you intend to make recurring payments. Being transparent about the payment schedule and the amount they will be charged will reduce the risk of chargebacks.

Create shopper token

Tokenize the shopper's payment details when you make the initial Sofort payment. The steps for doing this depend on whether you integrated with our Checkout SDKs or our API integration.

Checkout SDKs

  1. When you call /paymentSession to create a payment session, additionally include:

    • shopperReference: Your unique ID for this shopper.

    • enableRecurringtrue.

  2. If the shopper's payment details were successfully tokenized, you'll receive a successful payment notification that includes a recurringDetailReference. You will need this token to make recurring payments for this shopper.

API integration

  1. When you call /payments to make a payment, additionally include:
    • shopperReference: Your unique ID for this shopper.
    • paymentMethod.storeDetailstrue.
  2. If the shopper's payment details were successfully tokenized, you'll receive a successful payment notification that includes a recurringDetailReference. You will need this token to make recurring payments for this shopper.

Make recurring payments

Any recurring payments for the Sofort shopper are made as a SEPA Direct Debit payment.

  • Make a /payments request for a SEPA payment, and additionally include:
    • paymentMethod.typesepadirectdebit.
    • recurringDetailReference: Token received back from the Sofort payment.
    • shopperReference: The same shopper ID you used to create the shopper token.
    • shopperInteractionContAuth.
{
   "merchantAccount":"YourMerchantAccount",
   "reference":"Your Reference Here",
   "amount":{
      "value":1000,
      "currency":"EUR"
   },
   "paymentMethod":{
      "type":"sepadirectdebit",
      "recurringDetailReference":"7219687191761347"
   },
   "returnUrl":"https://your-company.com/...",
   "shopperReference":"yourShopperId",
   "shopperInteraction":"ContAuth"
}

If the payment was successfully received, the response will contain a resultCode of Received, and a pspReference, which is our unique identifier for this transaction. You can track whether the payment was successful using notifications.

Chargebacks

In extremely rare scenarios (around 0.2% of all cases), it can happen that you will not receive the funds, even after receiving a successful AUTHORISATION notification. The successful AUTHORISATION notification means that the payment has passed the verifications that Sofort runs on the shopper account, and that the bank transfer was initiated successfully. The payment could still fail at this point, for example because:  

  • The shopper cancelled the transaction.  A number of German banks offer shoppers the possibility to cancel bank transfers until midnight of the day of the transaction. In Switzerland, banks are required by law to allow shoppers to reverse bank transfers for 48 hours. 
  • Some banks process transactions with a delay. For example, if the shopper completes a Sofort payment on a Saturday, the bank might only process it on Monday. If the shopper has withdrawn sufficient funds in the meantime, the payment will fail. 

In case of the above scenarios, Adyen is not informed about the transaction having failed. This means that we do not know whether the transaction has failed, or whether the bank might still process it later. 

On our side, the status of the payment is SentForSettle until we receive the funds. You can check the status of the payment in your Customer Area.

If we have not received the funds after 8 business days, the status of the payment becomes Settled, then Chargeback, and you will receive a CHARGEBACK notification. In case we receive the money after this point, you will receive a CHARGEBACK_REVERSED notification. 

Testing your integration

Sofort does not have a specialized test environment. This means that you are redirected to the Sofort live environment even when making a payment from the Adyen test environment.

To test your integration, use the following details: 

Bank Name Account Number Country PIN TAN
DemoBank <Use any value> DE <Use any value> <Follow the instructions>

Using a different account number (live data) will initiate a real payment. This payment will not be transferred to your account, and is therefore lost. It is not possible to reverse or refund this payment.

To check the status of a Sofort test payment, go to your Customer Area > Transactions > Payments.

See also