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:
Updated over 5 years ago