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:

IDNameCredit/Debit StateReversal State
24Bank Transfer WithdrawalWithdrawnByProvider (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 fieldsspecificPaymentData fieldsOther/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 FormatIBAN or AccountNumber
SWIFT
BankName
BankAddress
BankCode
BranchCode
CurrencyCode
BankCountryCode2
UserFirstname
UserLastname
UserCountryCode2
ArgentinaBankName*
BankAddress
AccountNumber**
accountType
additionalInfo1
UserFirstname
UserLastname
LatviaAccountNumber
Spain (in addition to Standard International Format)CheckDigit
GreeceIBAN
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 StateDescription
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: