iDebit Withdrawal (via IDS)

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

212

iDebitWithdrawal

WithdrawnByProvider(20)

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

PXP Financial payment service sends a withdrawal request to iDebit, upon which in the case of a successful transaction, the payment goes to state WithdrawnByProvider (with ProviderTransactionsIDString being logged).

In the case of an unsuccessful withdrawal response, the payment goes to state RefusedByProvider and a ProviderResponseCode and ProviderResponseMessage is logged and available for notification to the merchant (see list of codes further below).

Redirect Integration

Currently not supported.

Backend2BackendIntegration

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

key (value type, account type, required)

value

AccountNumber (string, required)

user ID on provider side

Example initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<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>KalixaAcceptDemo</merchantID>
  <shopID>KalixaAcceptDemo</shopID>
  <merchantTransactionID>6860fe6c-68d8-4c51-9ae4-85a37808e572</merchantTransactionID>
  <paymentMethodID>212</paymentMethodID>
  <amount currencyCode="USD">10</amount>
  <userID>d48693ca-e96e-4ca1-9e01-035645a793991</userID>
  <userData/>
  <userIP>127.0.0.1</userIP>
  <userSessionID>6a956eae-d903-4a01-8170-20dae92673d1</userSessionID>
  <creationTypeID>1</creationTypeID>
  <paymentAccountID>9e79e86e-c8bf-481a-bbfc-729358d1c7ef</paymentAccountID>
  <paymentAccount>
    <specificPaymentAccountData>
      <data xsi:type="keyStringValuePair">
        <key>AccountNumber</key>
        <value>TheAccountNumber</value>
      </data>
    </specificPaymentAccountData>
  </paymentAccount>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse 
                         xmlns="http://www.cqrpayments.com/PaymentProcessing"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <payment xsi:type="paymentWithPaymentAccount" >
    <merchantID>KalixaAcceptDemo</merchantID>
    <shopID>KalixaAcceptDemo</shopID>
    <paymentMethod>
      <key>212</key>
      <value>iDebitWithdrawal</value>
    </paymentMethod>
    <merchantTransactionID>6860fe6c-68d8-4c51-9ae4-85a37808e572</merchantTransactionID>
    <paymentID>ee85fdc2-0b57-4fc0-a6a6-8816433dd27e</paymentID>
    <userID>CQRB2BTestMerchantSystemUser</userID>
    <paymentProvider>
      <key>109</key>
      <value>InstaDebit</value>
    </paymentProvider>
    <amount currencyCode="USD">10</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <userIP>127.0.0.1</userIP>
    <state>
      <id>2906cc15-1fcc-41f7-9911-60ad4dce4609</id>
      <definition>
        <key>20</key>
        <value>WithdrawnByProvider</value>
      </definition>
      <createdOn>2012-06-20T08:35:56.130665Z</createdOn>
      <paymentStateDetails>
        <detail xsi:type="keyStringValuePair">
          <key>TransactionFee</key>
          <value>0,1</value>
        </detail>
      </paymentStateDetails>
    </state>
    <isExecuted>true</isExecuted>
    <baseAmount currencyCode="EUR">10</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>11553</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderTransactionID</key>
        <value>80</value>
      </detail>
    </paymentDetails>
    <paymentAccount>
      <paymentAccountID>d3ec399d-8b2f-4490-ab75-c9c5c01e844b</paymentAccountID>
    </paymentAccount>
  </payment>
</initiatePaymentResponse>

The possible payment states in initiatePaymentResponse are listed below:

Payment State

Description

WithdrawnByProvider (20)

Success state

DuplicatePaymentValidationFailed (369)

Payment with same merchantTransactionID already exists.

RefusedByProvider (100)

Refused state. Payment was not accepted by provider. ProviderResponseCode is provided in paymentStateDetails - see below.

The following fields are returned in paymentStateDetails:

Field name

Description

TransactionFee

Fee that the provider charges for a transaction

ProviderResponseCode (in case of RefusedByProvider)

See below table for the provider error codes

ProviderResponseMessage (in case of RefusedByProvider)

See below table for the provider error codes

Provider-specific error codes:

ProviderResponseCode

ProviderResponseMessage

F002*

Content of the request does not comply with the specification

F003*

The merchant fails IDS’ authentication

F004

The user id provided by merchant doesn’t exist in IDS

F005

The merchant user id field is missing

F006

The transaction type is wrong

F007

The transaction amount is wrong

F008

The currency of the transaction is not supported

F009

The merchant transaction number is not unique

F010 - F015

System internal error

F016

The customer to whom the payout is sent has been suspended or blocked by IDS due to suspicious or fraudulent activities

F017

The transaction is declined to avoid overdraft from a merchant’s account. A merchant’s balance with IDS must be able to cover a payout in order for the transaction to be processed

Notifications

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