Bank Transfer Withdrawal

PXP Financial uses its own bank accounts and direct bank connectivity to process bank transfer withdrawals in a number of countries (e.g. Erste Bank in Austria, Piraeus in Greece, etc.). In addition, PXP Financial has integrated a number of 3rd parties offering bank transfer functionality, e.g. Worldpay, Trustly, Wirecard.

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

Reversal State

24

Bank Transfer Withdrawal

WithdrawnByProvider (20)

Cancelled (113)

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

📘

Bank Transfer Withdrawal Returns

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

Redirect Integration

Supported.

Backend2Backend Integration

The following table contains the fields to be sent in the InitiatePaymentRequest.specificPaymentAccountData xml section:

key (value type, account type, required)

value

IBAN
(string)

IBAN (International Bank Account Number)

CurrencyCode (string, required)

The currency code of the payment (EUR, USD etc.)

BankCountryCode2
(string)

The bank’s country code (AT, DE etc.)

SWIFT
(string(11))

The SWIFT (BIC) code of the beneficiary bank SWIFT = Society for Worldwide Interbank Financial Tele-communication

BankCode
(string(50))

The Sort or Bank Code of the beneficiary Bank

AccountNumber
(string(50))

The account number of the bank account

BranchCode
(string(50))

The branch code of the beneficiary Bank

AccountOwner
(string(50))

The name of the bank account holder (customer)

BankName
(string(50))

The name of the bank where the customer holds their account

BankSortCode
(string)

bank sort code

BankAddress
(string(50))

The address of the beneficiary bank. Can be town/city name, e.g. Madrid.

AccountOwnerAddress
(string)

account owner address

CheckDigit
(string(2))

A 2-digit integer required by Spanish banks

additionalInfo1
(string)

A personal ID number used in Latvia. Length 9-11 characters.
The DNI number of the beneficiary in Argentina. (DNI = Documento Nacional de Identidad)

accountType
(string)

0 or 1 value, for Argentina only. 0 = checking (Cuenta Corriente), 1 = savings (Ahorro)

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)

value

PaymentDescription
(string)

The payment’s description

PaymentDescriptionLanguageCode
(string)

The language code of the payment’s description

CountryCode2
(string)

The country code of the request

UserFirstname
(string)

The first name of the user

UserLastname
(string)

The last name of the user

UserCountryCode2
(string)

The user’s country code (AT, DE etc.)

Depending on the country of the customer's (destination) bank account certain specificPaymentAccountData.* and specificPaymentData.* fields must be supplied. The following table lists the required combinations:

Destination country (group)

specificPaymentAccountData fields

specificPaymentData fields

Other/Remarks

SEPA countries:
Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, Monaco, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, United Kingdom

IBAN
SWIFT
BankName
BankAddress
CurrencyCode
BankCountryCode2

UserFirstname
UserLastname
UserCountryCode2

non-SEPA countries - Standard International Format

IBAN or AccountNumber
SWIFT
BankName
BankAddress
BankCode
BranchCode
CurrencyCode
BankCountryCode2

UserFirstname
UserLastname
UserCountryCode2

Argentina

BankName*
BankAddress
AccountNumber**
accountType
additionalInfo1

UserFirstname
UserLastname

Latvia

AccountNumber

Spain (in addition to Standard International Format)

CheckDigit

Greece

IBAN
SWIFT
BankName
BankAddress
CurrencyCode
BankCountryCode2

UserFirstname
UserLastname
UserCountryCode2

user.address

📘
  • BankName for Argentina

For Argentina, the beneficiary bank name is a full bank name selected from the following list. The customer should be presented with these names and select his bank from the list:

CITIBANK ARGENTINA
BANCO RIO (SANTANDER)
BANCO GALICIA
BANCO HSBC ARGENTINA
BBVA FRANCES
BANCO DE LA NACION ARGENTINA
BANCO ITAU SA
BANCO CREDICOOP
BANCO HIPOTECARIO
BANCO ABN AMBRO
BANCO CIUDAD
BANCO PRIVADO

📘

** AccountNumber for Argentina

CBU is the general account identifier, consisting of the bank code, branch code and account number of the beneficiary.

3 digits = bank code
4 digits = branch code
1 digit = check digit (first part)
13 digits = account number
1 digit = check digit (account number)

Example initiatePaymentRequest:

<initiatePaymentRequest xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <merchantID>YourMerchantID</merchantID>
  <shopID>YourShopID</shopID>
  <merchantTransactionID>6e11b2f1-1d92-4ddd-8d43-9de4e77e4223</merchantTransactionID>
  <paymentMethodID>24</paymentMethodID>
  <amount currencyCode="EUR">10</amount>
  <userID>YourUserID</userID>
  <userData></userData>
  <userIP>127.0.0.1</userIP>
  <userSessionID>9a156eae-d903-4a01-8170-20dae92673d3</userSessionID>
  <creationTypeID>1</creationTypeID>
  <specificPaymentData>
    <data xsi:type="keyStringValuePair">
      <key>UserFirstname</key>
      <value>Max</value>
    </data>
    <data xsi:type="keyStringValuePair">
      <key>UserLastname</key>
      <value>Abrahams</value>
    </data>     
    <data xsi:type="keyStringValuePair">
      <key>UserCountryCode2</key>
      <value>FR</value>
    </data>     
  </specificPaymentData>    
  <paymentAccount>
    <isVisible>true</isVisible>
    <specificPaymentAccountData>
      <data xsi:type="keyStringValuePair">
        <key>BankName</key>
        <value>TestBank</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankAddress</key>
        <value>TestBank address</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>CurrencyCode</key>
        <value>EUR</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>BankCountryCode2</key>
        <value>FR</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>IBAN</key>
        <value>FR7630004011642203320283111</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>SWIFT</key>
        <value>BNPAFRPKKAM</value>
      </data>
      <data xsi:type="keyStringValuePair">
        <key>AccountOwner</key>
        <value>Max Abrahams</value>
      </data>
    </specificPaymentAccountData>
  </paymentAccount>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse xmlns="http://www.cqrpayments.com/PaymentProcessing" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <payment xsi:type="paymentWithPaymentAccount">
    <merchantID>YourMerchantID</merchantID>
    <shopID>YourShopID</shopID>
    <paymentMethod>
      <key>24</key>
      <value>BankTransferWithdrawal</value>
    </paymentMethod>
    <merchantTransactionID>6e11b2f1-1d92-4ddd-8d43-9de4e77e4223</merchantTransactionID>
    <paymentID>8533ab87-55d8-4fc5-a535-31ff7d0175e4</paymentID>
    <userID>YourUserID</userID>
    <paymentProvider>
      <key>90</key>
      <value>Envoy</value>
    </paymentProvider>
    <amount currencyCode="EUR">99</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>d4b91483-eeef-48c0-bd7a-8c7bb46e9a2e</id>
      <definition>
        <key>201</key>
        <value>ApprovedByPaymentScoring</value>
      </definition>
      <createdOn>2012-01-30T15:51:41.3518094Z</createdOn>
      <description>Score=0, PaymentScoring</description>
      <paymentStateDetails xsi:nil="true"></paymentStateDetails>
    </state>
    <isExecuted>false</isExecuted>
    <baseAmount currencyCode="EUR">99</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>UserFirstname</key>
        <value>Max</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>UserLastname</key>
        <value>Abrahams</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>W1372</value>
      </detail>
    </paymentDetails>
    <paymentAccount>
      <paymentAccountID>fef5204d-928c-44fa-8a14-42d6f8c66b01</paymentAccountID>
    </paymentAccount>
  </payment>
</initiatePaymentResponse>

Possible payment states in initiatePaymentResponse:

Payment State

Description

ApprovedByPaymentScoring (20)

OK: The payment passed the checks on PXP Financial side and ready to be sent out

Cancelled (113)

Error: The payment was refused by provider and automatically cancelled

ValidationFailed (225)

Error: The payment has invalid bank account details

RefusedByPaymentScoring (121)/ BlockedByPaymentScoring (202)

Error: The payment didn’t pass the checks on PXP Financial side

ToBeApprovedBySupervisor (221)

OK: The payment awaits manual approval by an operator

ToBeWithdrawnByProvider (240)

OK: The payment will be batched and sent to the provider (as per predefined schedule)

Notifications

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

Example handlePaymentStateChangedNotificationRequest for Bank Transfer Withdrawal in Created state:

<?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>24</key>
            <value>BankTransferWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>20141216_9</merchantTransactionID>
        <paymentID>17880a1f-4208-431e-be6e-a6a91900f7fa</paymentID>
        <userID>KalxiaTestUser_7</userID>
        <paymentProvider>
            <key>90</key>
            <value>Envoy</value>
        </paymentProvider>
        <amount currencyCode="EUR">100.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>195.72.132.1</userIP>
        <state>
            <id>49e065ee-87b9-4592-8dad-9bf23d276531</id>
            <definition>
                <key>232</key>
                <value>Created</value>
            </definition>
            <createdOn>2014-12-16T13:29:40.0659695Z</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">100</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>W6551</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>e107b49a-05a9-4c4e-b404-e68b6fcd8bc8</paymentAccountID>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest for Bank Transfer Withdrawal in WithdrawnByProvider state:

<?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>24</key>
            <value>BankTransferWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>20141229_16</merchantTransactionID>
        <paymentID>fb6c9543-a21a-4628-a134-26b1d0728aa2</paymentID>
        <userID>KalxiaTestUser_6</userID>
        <paymentProvider>
            <key>90</key>
            <value>Envoy</value>
        </paymentProvider>
        <amount currencyCode="EUR">30.0000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>195.72.132.1</userIP>
        <state>
            <id>84205d08-b633-415e-bdda-a3127becb79b</id>
            <definition>
                <key>20</key>
                <value>WithdrawnByProvider</value>
            </definition>
            <createdOn>2014-12-30T08:50:25.203</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">30.0000</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>W6803</value>
            </detail>
            <detail xsi:type="keyIntValuePair">
                <key>PaymentScoring</key>
                <value>722103</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>0aa09693-4381-4740-96c1-1935d6a8aebf</paymentAccountID>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationResponse: