iDebit Withdrawal (via IDS)

The following method IDs are covered in this section:

IDNameCredit/Debit State
212iDebitWithdrawalWithdrawnByProvider(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</span)
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 StateDescription
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 nameDescription
TransactionFeeFee 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:

ProviderResponseCodeProviderResponseMessage
F002*Content of the request does not comply with the specification
F003*The merchant fails IDS’ authentication
F004The user id provided by merchant doesn’t exist in IDS
F005The merchant user id field is missing
F006The transaction type is wrong
F007The transaction amount is wrong
F008The currency of the transaction is not supported
F009The merchant transaction number is not unique
F010 - F015System internal error
F016The customer to whom the payout is sent has been suspended or blocked by IDS due to suspicious or fraudulent activities
F017The 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.