Search

Are you looking for test card numbers?

Would you like to contact support?

Payment-method icon

Sofort

Learn how to accept Sofort payments.

Sofort, also known as Pay now with Klarna, 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 the payment result. For a small number of payments you will not receive an immediate confirmation, and will need to rely on a notification to know 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 DE,ATBE, or CH.
  • the currency set to EUR or CHF.
  • 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: 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

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

The redirect.url enables the shopper to enter their bank details in the Sofort environment.

When the shopper has completed the payment on the Sofort page, they return back to your website or app using the returnUrl that you specified when you made the /payments request. The returnUrl is appended with a payload which you'll use in the next step to verify the payment. If any other parameters are appended, ignore them.

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

Step 4: Present payment result

  1. To verify the result of the payment, URL decode the payload and submit it in a POST request to the /payments/details endpoint.

    {
      "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. 

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

Our notifications are webhooks informing you of important events related to your account. Accepting notifications is required for Sofort. In most cases, the resultCode you receive at the end of the redirect payment flow already indicates whether the payment was authorised. In other cases, we can only inform you of the outcome of a payment by means of a notification. You'll need to rely on notifications when:

  • The resultCode is Pending or Received.
  • You didn't receive a resultCode, for example because the shopper failed to return to your website or app after completing the payment.

To inform you of the outcome of a payment, we send you a notification with:

  • eventCode: AUTHORISATION.
  • pspReference: Adyen's unique reference associated with the payment request.
  • success: Indicates the outcome of the payment. Possible values:

    • true: The payment was authorised.
    • false: The payment failed.

AUTHORISATION is just one of the events that trigger a notification. Refer to Notification webhooks to accept notifications and learn about their structure and content.

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. When you receive the response (or the notification) that the payment was authorised, note the recurringDetailReference. This is the token you will need 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":"YOUR_UNIQUE_SHOPPER_ID_IOfW3k9G2PvXFu2j",
   "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