Offline Bank Transfer Deposit

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

23

Offline Bank Transfer Deposit

DepositedByProvider (29)

Payment method interaction type: Offline Execution (see Interaction Types).

📘

Offline Bank Transfer Deposit Returns

Refer to Bank Transfer (and Wallet) Deposit Returns for information on how to correctly handle the notifications for Bank Transfer Deposit Returns

Redirect Integration

Supported.

Backend2Backend Integration

Instead of call to initiatePayment the Merchant System needs to make a call to getPaymentInputDataList for getting the bank account data to be displayed to the user and used by her/him to initiate an offline bank transfer deposit using her/his bank channels for doing so.

📘

Currency and country in getPaymentInputDataListRequest

If getPaymentInputDataListRequest.user.currencyCode or getPaymentInputDataListRequest.user.address.countryCode2 are not specified, then getPaymentInputDataRequest.details should contain the CurrencyCode and CountryCode2 key-values.

📘

PaymentProviderID in getPaymentInputDataListRequest

If the PaymentProviderID key-value is present in getPaymentInputDataListRequest.details then the returned list will be filtered for that payment provider only.

getPaymentInputDataResponse contains a list of bank details including purpose of payment etc to be displayed to the user.

The possible values of getPaymentInputDataListResponse.paymentInputDataList.paymentInputData.data.key are:

key (value type, account type, required)

value

  • PurposeOfPayment** (string*)

The information the user has to enter as purpose of payment (VAN number) in order to can associate the transaction to user

  • AccountNumber** (string*)

Bank account number

  • AccountOwner** (string*)

Bank account owner

  • BankCountryCode2** (string*)

Bank country code

  • BankName** (string*)

Bank name

  • CurrencyCode** (string*)

Bank account currency code

  • IBAN** (string*)

Bank account IBAN

  • IsActive** (boolean*)

Flag to indicate if account is active or not

  • PaymentAccountID** (string*)

The payment account ID

  • UserID** (string*)

User ID

  • PaymentProviderID** (int*)

The provider identification number

🚧

No payment created yet

After calling the getPaymentInputDataList web method there is no payment created yet. Only if user makes a deposit, provider notifies PXP Financial with the provided information in the getPaymentInputDataListResponse then the payment will be created and corresponding notification sent to merchant.

Example getPaymentInputDataListRequest:

<getPaymentInputDataRequest>
  <merchantID>YourMerchantID</merchantID>
  <shopID>YourShopID</shopID>
  <user>
    <id>UserID</id>
  </user>
  <paymentMethodID>23</paymentMethodID>
  <details>
    <data xsi:type="keyStringValuePair">
      <key>CurrencyCode</key>
      <value>EUR</value>
    </data>
    <data xsi:type="keyStringValuePair">
      <key>CountryCode2</key>
      <value>AT</value>
    </data>
  </details>
</getPaymentInputDataRequest>

Example getPaymentInputDataListResponse:

<getPaymentInputDataResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <paymentInputDataList>
    <paymentInputData>
      <data xsi:type="keyStringValuePair">
        <key>PurposeOfPayment</key>
        <value>100000238</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountNumber</key>
        <value>00022222222</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountOwner</key>
        <value>CommerzBank</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCode</key>
        <value>18100</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCountryCode2</key>
        <value>AT</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankName</key>
        <value>CommerzBank SA Vienna</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>CurrencyCode</key>
        <value>EUR</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>IBAN</key>
        <value>AT00000000000000000000000000000000</value>
      </data>
      <data xsi:type="keyBooleanValuePair">
        <key>IsActive</key>
        <value>true</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>PaymentAccountID</key>
        <value>CommerzBank_AT_EUR_BDD_2</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>UserID</key>
        <value>CQRB2BTestMerchantSystemUser</value>
      </data>
      <data xsi:type="keyIntValuePair">
        <key>PaymentProviderID</key>
        <value>42</value>
      </data>
    </paymentInputData>
    <paymentInputData>
      <data xsi:type="keyStringValuePair">
        <key>PurposeOfPayment</key>
        <value>100000238</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountNumber</key>
        <value>00011111111</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountOwner</key>
        <value>B2BTestMerchant</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankAddress</key>
        <value>Vienna</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCode</key>
        <value>30555</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCountryCode2</key>
        <value>AT</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankName</key>
        <value>CommerzBank SA Vienna</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankSortCode</key>
        <value>48753</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>CurrencyCode</key>
        <value>EUR</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>IBAN</key>
        <value>AT923055500011111111</value>
      </data>
      <data xsi:type="keyBooleanValuePair">
        <key>IsActive</key>
        <value>true</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>PaymentAccountID</key>
        <value>CommerzBank_AT_EUR_BDD_1</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>SWIFT</key>
        <value>GIBAATWG</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>UserID</key>
        <value>CQRB2BTestMerchantSystemUser</value>
      </data>
      <data xsi:type="keyIntValuePair">
        <key>PaymentProviderID</key>
        <value>42</value>
      </data>
    </paymentInputData>
    <paymentInputData>
      <data xsi:type="keyStringValuePair">
        <key>PurposeOfPayment</key>
        <value>80000009</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountNumber</key>
        <value>00033333333</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountOwner</key>
        <value>Stichting Smart2Pay Escrow Services</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCode</key>
        <value>18100</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCountryCode2</key>
        <value>AT</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankName</key>
        <value>Fortis Bank SA Vienna</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>CurrencyCode</key>
        <value>EUR</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>IBAN</key>
        <value>AT00000000000000000000000000000000</value>
      </data>
      <data xsi:type="keyBooleanValuePair">
        <key>IsActive</key>
        <value>true</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>PaymentAccountID</key>
        <value>Smart2Pay_AT_EUR_BDD</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>UserID</key>
        <value>CQRB2BTestMerchantSystemUser</value>
      </data>
      <data xsi:type="keyIntValuePair">
        <key>PaymentProviderID</key>
        <value>41</value>
      </data>
    </paymentInputData>
  </paymentInputDataList>
</getPaymentInputDataListResponse>

Notifications

The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.

Handling notifications is mandatory for payment methods with Offline Execution, as the payments get created in PXP Financial Payment Service at certain point of time without merchant's involvement, so the Merchant System must be informed about this event and take appropriate action (ship the goods or credit user's account).
The possible payment states in asynchronous handlePaymentStateChangedNotificationRequest are:

Payment States

Description

DepositedByProvider (29)

Success state; deliver goods

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>23</key>
      <value>BankTransferDeposit</value>
    </paymentMethod>
    <merchantTransactionID>29db5fd2-4800-4e9a-a62c-5bbeab3e38d3</merchantTransactionID>
    <paymentID>c892fff2-ea62-4b26-946c-d462ea1de94f</paymentID>
    <userID>KalxiaTestUser_7</userID>
    <paymentProvider>
      <key>90</key>
      <value>Envoy</value>
    </paymentProvider>
    <amount currencyCode="EUR">100.0000</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <state>
      <id>0b972a22-98fd-42f1-84df-6fcbc516b952</id>
      <definition>
        <key>29</key>
        <value>DepositedByProvider</value>
      </definition>
      <createdOn>2014-12-16T13:03:17.603</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyStringValuePair">
          <key>Remark</key>
          <value>Created by Offline Payment mock</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>true</isExecuted>
    <baseAmount currencyCode="EUR">100.0000</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>D6549</value>
      </detail>
      <detail xsi:type="keyIntValuePair">
        <key>PaymentScoring</key>
        <value>714233</value>
      </detail>
      <detail xsi:type="keyLongValuePair">
        <key>ExternalTransactionID</key>
        <value>895572726</value>
      </detail>
    </paymentDetails>
    <paymentAccount>
      <paymentAccountID>0</paymentAccountID>
    </paymentAccount>
  </payment>
</handlePaymentStateChangedNotificationRequest>