Sofort Deposit (Sofortüberweisung)

Sofort (Direct eBanking) is a bank independent interface to online banking in various European countries, including Germany, Austria and Switzerland.

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

117

DirectEBankingDeposit

DepositedByProvider (13)

Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).

After initiating the payment, the customer is being redirected to the website of Sofort. Within the redirection additional information about the payment is being passed. After the payment the user is being returned back to the merchant`s URLs.

The merchant then can call handleProviderNotificationToMerchant to request information about the payment from PXP Financial, or wait for the regular payment state notification.

📘

Sofort (Direct e-Banking) Deposit Returns

Refer to Bank Transfer (and Wallet) Deposit Returns for information on how to correctly handle the notifications for Sofort (Direct e-Banking) Deposit Returns.

Redirect Integration

Supported.

Backend2BackendIntegration

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)

value

SuccessPageUrl
(string, required)

The URL to redirect user in case of successful payment

ErrorPageUrl (string, required)

The URL to redirect user in case of unsuccessful payment

PendingPageUrl (string, required)

The URL to redirect user in case of pending payment

CancelPageUrl (string, required)

The URL to redirect user in case of cancellation

HomePageUrl (string, required)

The URL of the merchant´s website

CountryCode2 (string)

The country code of the request

LanguageCode (string)

The language of the user on the merchant side, used for localizing the UI displayed to the user

The payment account type is UserBankAccount and it´s optional for this payment method. If sent, it may be used by the payer, or the payer may choose to select and enter a different account. The actual account number. bank code, IBAN and BIC are returned after calling handleProviderNotificationToMerchant webservice method. It is possible that bankCode and account number will not be returned.

The following parameters can be provided in initiatePaymentRequest.specificPaymentAccountData:

IBAN

IBAN

SWIFT

BIC-Code

Account Owner

Bank account owner name.

BankCountryCode2

Country of the bank account

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <merchantID>KalixaAcceptDemo</merchantID>
    <shopID>KalixaAcceptDemo</shopID>
    <merchantTransactionID>Order99999</merchantTransactionID>
    <paymentMethodID>117</paymentMethodID>
    <amount currencyCode="EUR">10</amount>
    <userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
    <userData/>
    <userIP>127.0.0.1</userIP>
    <userSessionID>eb855c14-3bf3-49d2-87ea-b498bdd68f34</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>SuccessPageUrl</key>
            <value>http://success/</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>CancelPageUrl</key>
            <value>http://cancel/</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>LanguageCode</key>
            <value>DE</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>CountryCode2</key>
            <value>AT</value>
        </data>
    </specificPaymentData>
    <paymentAccount>
        <specificPaymentAccountData>
<data xsi:type="keyStringValuePair">
                <key>IBAN</key>
                <value>DE48360100439999999999</value>
            </data>
            <data xsi:type="keyStringValuePair">
                <key>SWIFT</key>
                <value>PBNKDEFFXXX</value>
            </data>

            <data xsi:type="keyStringValuePair">
                <key>AccountOwner</key>
                <value>Test</value>
            </data>
            <data xsi:type="keyStringValuePair">
                <key>BankCountryCode2</key>
                <value>AT</value>
            </data>
        </specificPaymentAccountData>
    </paymentAccount>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <merchantID>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>117</key>
            <value>DirectEBankingDeposit</value>
        </paymentMethod>
        <merchantTransactionID>Order99999</merchantTransactionID>
        <paymentID>245706f4-876c-4d5b-81be-2771adeec693</paymentID>
        <userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
        <paymentProvider>
            <key>83</key>
            <value>PaymentNetwork</value>
        </paymentProvider>
        <amount currencyCode="EUR">10</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>5ab1caf0-fec2-41c6-9246-247982d51f55</id>
            <definition>
                <key>30</key>
                <value>RedirectURLCreated</value>
            </definition>
            <createdOn>2011-08-31T15:05:18.1756055Z</createdOn>
            <description>http://RedirectionUrl...</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>http://RedirectionUrl...</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">10</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>764637</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>0</paymentAccountID>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

Possible payment states in initiatePaymentResponse:

Payment States

Description

RedirectURLCreated (30)

Success state; Redirect user to the Success URL

BlockedByPaymentScoring (202)

Error state; Refused by the PXP Financial Risk System

RefusedByPaymentScoring (121)

Error state; Refused by the PXP Financial Risk System

Step2: handleProviderNotificationToMerchant

The following parameters can be provided in handleProviderNotificationToMerchantRequest:

key (value type, account type, required)

value

queryString (String, required)

query string from user redirect to merchant´s website

Example handleProviderNotificationToMerchantRequest:

<?xml version="1.0" encoding="utf-8"?>
<handleProviderNotificationToMerchantRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <merchantID>KalixaAcceptDemo</merchantID>
    <providerID>83</providerID>
    <queryString>ID=146815176&amp;hash=123233ddfdfhhh445457ff0&amp;user_variable_0=146815176&amp;transaction=26065-76507-4DBEA499-FB70&amp;user_id=26065&amp;project_id=76507&amp;sender_holder=B%2c+Max&amp;sender_account_number=11111111&amp;sender_bank_code=12000&amp;sender_bank_name=Bank-Austria&amp;sender_bank_bic=BAAC&amp;sender_iban=AT111110000012000&amp;sender_country_id=AT&amp;recipient_holder=merchant&amp;recipient_account_number=5555555&amp;recipient_bank_code=500000&amp;recipient_bank_name=Bank+Austria&amp;recipient_bank_bic=BAAAC&amp;recipient_iban=AT55550000012000&amp;recipient_country_id=AT&amp;international_transaction=1&amp;amount=100.00&amp;currency_id=EUR&amp;reason_1=146815176&amp;reason_2=&amp;security_criteria=1&amp;user_variable_1=&amp;user_variable_2=&amp;user_variable_3=&amp;user_variable_4=&amp;user_variable_5=&amp;email_sender=&amp;email_recipient=&amp;created=2011-05-02+14%3a34%3a20</queryString>
</handleProviderNotificationToMerchantRequest>

Example handleProviderNotificationToMerchantResponse:

<?xml version="1.0" encoding="utf-8"?>
<handleProviderNotificationToMerchantResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <payment>
        <merchantID>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>117</key>
            <value>DirectEBankingDeposit</value>
        </paymentMethod>
        <merchantTransactionID>0e23b2f1-1d92-4ddd-8d43-9de4e77e279b</merchantTransactionID>
        <paymentID>61143ef1-c9c5-4d8a-9ad5-8ca6b11ce633</paymentID>
        <userID>d48693ca-e96e-4ca1-9e01-035645a79399</userID>
        <paymentProvider>
            <key>83</key>
            <value>PaymentNetwork</value>
        </paymentProvider>
        <amount currencyCode="EUR">100</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>bd09f9f6-05f4-4377-b426-18c2c69f7d30</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2011-05-02T12:24:53.7459397Z</createdOn>
            <description>ID=146815176&amp;hash=123233ddfdfhhh445457ff0&amp;user_variable_0=146815176&amp;transaction=26065-76507-4DBEA499-FB70&amp;user_id=26065&amp;project_id=76507&amp;sender_holder=B%2c+Max&amp;sender_account_number=11111111&amp;sender_bank_code=12000&amp;sender_bank_name=Bank-Austria&amp;sender_bank_bic=BAAC&amp;sender_iban=AT111110000012000&amp;sender_country_id=AT&amp;recipient_holder=merchant&amp;recipient_account_number=5555555&amp;recipient_bank_code=500000&amp;recipient_bank_name=Bank+Austria&amp;recipient_bank_bic=BAAAC&amp;recipient_iban=AT55550000012000&amp;recipient_country_id=AT&amp;international_transaction=1&amp;amount=100.00&amp;currency_id=EUR&amp;reason_1=146815176&amp;reason_2=&amp;security_criteria=1&amp;user_variable_1=&amp;user_variable_2=&amp;user_variable_3=&amp;user_variable_4=&amp;user_variable_5=&amp;email_sender=&amp;email_recipient=&amp;created=2011-05-02+14%3a34%3a20</description>
            <paymentStateDetails xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></paymentStateDetails>
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">100</baseAmount>
        <paymentDetails xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></paymentDetails>
             <paymentAccount>
            <paymentAccountID>a4855891-16a9-4962-9af4-7e7ed63cbb89</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>bankCode</key>
                    <value>88888888</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>0023456789</value>
                </detail>
    <data xsi:type="keyStringValuePair">
                <key>IBAN</key>
                <value>DE48360100439999999999</value>
            </data>
            <data xsi:type="keyStringValuePair">
                <key>SWIFT</key>
                <value>PBNKDEFFXXX</value>
            </data>
            </details>
        </paymentAccount>

    </payment>
</handleProviderNotificationToMerchantResponse>

Possible payment states in handleProviderNotificationToMerchantResponse:

Payment States

Description

DepositedByProvider (29)

Success state; Redirect user to SuccessPage

AbortedByCustomer (101)

Error state; Payment aborted by user

📘

Information

Although successful authorization indicates a very high likelihood of payment, funds are not guaranteed to your business until they are actually received on the destination bank account. This typically happens 2 business days later, but could be delayed.

Notifications

Example handlePaymentStateChangedNotificationRequest:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>KalixaAcceptDEMO</merchantID>
        <shopID>KalixaAcceptDEMO</shopID>
        <paymentMethod>
            <key>117</key>
            <value>DirectEBankingDeposit</value>
        </paymentMethod>
        <merchantTransactionID>20141218_2</merchantTransactionID>
        <paymentID>aae0478a-9481-4614-bc20-8a295059e68b</paymentID>
        <userID>KalxiaTestUser_7</userID>
        <paymentProvider>
            <key>83</key>
            <value>PaymentNetwork</value>
        </paymentProvider>
        <amount currencyCode="EUR">100.0000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>195.72.132.1</userIP>
        <state>
            <id>e7b76285-749d-4ba1-aaf0-46e82365e78c</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2014-12-18T11:13:11.057</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">100.0000</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>715740</value>
            </detail>
            <detail xsi:type="keyIntValuePair">
                <key>PaymentScoring</key>
                <value>715740</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>29219-186297-5492B6AF-FA18</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>53177194-9d1d-42fd-a275-30b6deab910c</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>swift</key>
                    <value>SFRTAT20XXX</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>23456789</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>bankCode</key>
                    <value>00000</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>IBAN</key>
                    <value>AT850000000023456789</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

The notification can include the detail IsSenderHolderPresent (if configured for the merchant). This detail indicates if the sender_holder was returned by SOFORT in their notification and is an indication if the sender holder could be retrieved from the user´s online banking.

📘

Note:

For some banks it may be technically not possible to retrieve the account holder name.

It could also be that the bank doesn't allow it in general.

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xmlns:q1="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>150001</shopID>
        <paymentMethod>
            <key>117</key>
            <value>DirectEBankingDeposit</value>
        </paymentMethod>
        <merchantTransactionID>5d3d8aef-d575-4c7c-a9b1-6816f382c762</merchantTransactionID>
        <paymentID>5836606d-295d-4232-938a-435c7394daca</paymentID>
        <userID>CQRB2BTestMerchantSystemUser</userID>
        <paymentProvider>
            <key>83</key>
            <value>PaymentNetwork</value>
        </paymentProvider>
        <amount currencyCode="EUR">32.0000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>6955a63c-5f06-4e0b-8a12-edaf65661725</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2020-08-28T15:08:27.657</createdOn>
            <description>ID=1770333&amp;amp;hash=784bccc50f8ad27083176a80917579664931a9f06545c550ef6cbe52e029ec0c19d7ff9ff7c48310d14c40431a29052022380f568728ed96a83cbea4f72ffc60&amp;amp;user_variable_0=2678061&amp;amp;transaction=43787-110636-5F48AC39-DD9B&amp;amp;user_id=43787&amp;amp;project_id=110636&amp;amp;sender_holder=Roy+Bert&amp;amp;sender_account_number=23456789&amp;amp;sender_bank_code=88888888&amp;amp;sender_bank_name=Austria+Bank&amp;amp;sender_bank_bic=SFRTDE20XXX&amp;amp;sender_iban=DE06000000000023456789&amp;amp;sender_country_id=DE&amp;amp;recipient_holder=PXP+Financial+Limited&amp;amp;recipient_account_number=28961980429&amp;amp;recipient_bank_code=20100&amp;amp;recipient_bank_name=Sparkasse+%2f+Erste+Bank&amp;amp;recipient_bank_bic=GIBAATWGXXX&amp;amp;recipient_iban=AT672010028961980429&amp;amp;recipient_country_id=AT&amp;amp;international_transaction=1&amp;amp;amount=32.00&amp;amp;currency_id=EUR&amp;amp;reason_1=2678061&amp;amp;reason_2=CQR+Payment+Partner&amp;amp;security_criteria=1&amp;amp;user_variable_1=&amp;amp;user_variable_2=&amp;amp;user_variable_3=&amp;amp;user_variable_4=&amp;amp;user_variable_5=&amp;amp;email_recipient=&amp;amp;created=2020-08-28+09%3a03%3a36</description>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">32.0000</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>111112986</value>
            </detail>
            <detail xsi:type="keyBooleanValuePair">
                <key>IsSenderHolderPresent</key>
                <value>true</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>43787-110636-5F48AC39-DD9B</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>e2f4e164-8666-404a-8cad-3bcd9e5b51fd</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>swift</key>
                    <value>SFRTDE20XXX</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>23456789</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>bankCode</key>
                    <value>88888888</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>IBAN</key>
                    <value>DE06000000000023456789</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>accountOwner</key>
                    <value>Roy Bert</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

After DepositedByProvider the payment method can go to these states:

Payment State

Description

Cancelled

This state is reached when a payment has not be settled after a pre-defined time. This state is used to monitor stop payments.

CancelReversed

A payment in state Cancelled" is moved to state CancelReversed** when the payment has been settled.