BankTransferRedirectDeposit (Callpay)

The BankTransferRedirectDeposit method supports EFT bank transfers through provider Callpay in South Africa.

The following method IDs are covered in this section:

IDNameCredit/Debit State
264BankTransferRedirectDepositDepositedByProvider (29)

Payment method interaction type: Redirection to External Payment Provider (see Interaction Types).

Flow

Redirect Integration

Currently not supported.

Backend2BackendIntegration

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)value
SuccessPageUrl
(string, required)
URL to redirect for successful payments
CancelPageUrl (string, required)URL to redirect if payment is cancelled
ErrorPageUrl (string, required)URL to redirect in case of error
BankName (string, optional)Bank name for bank preselection.
Available bank names are:
absa, standard, capitec, fnb, nedbank, investec, bidvest, tyme, windhoek, afribank, oldmutual, discovery

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>{{merchant}}</merchantID>
    <shopID>{{shop]]</shopID>
    <merchantTransactionID>AD-000002</merchantTransactionID>
    <paymentMethodID>264</paymentMethodID>
    <amount currencyCode="ZAR">10.00</amount>
    <userID>AD-Callpay01</userID>
    <userData>
        <username>ad_callpay01</username>
        <firstname>John</firstname>
        <lastname>Doe</lastname>
        <currencyCode>ZAR</currencyCode>
        <languageCode>EN</languageCode>
        <email>[email protected]</email>
        <address>
            <street>196 Rus St</street>
            <houseNumber>1b</houseNumber>
            <postalCode>7582</postalCode>
            <city>Kuils River</city>
            <state>WC</state>
            <countryCode2>ZA</countryCode2>
            <telephoneNumber>270839661769</telephoneNumber>
        </address>
        <dateOfBirth>1980-10-10T00:00:00</dateOfBirth>
        <gender>Male</gender>
    </userData>
    <userIP>80.121.151.158</userIP>
    <userSessionID>t02d03hwaxkrl5gmabcypwmm</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>SuccessPageUrl</key>
            <value>https://success.com</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>CancelPageUrl</key>
            <value>https://cancel.com</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>ErrorPageUrl</key>
            <value>https://error.com</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>BankName</key>
            <value>investec</value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentResponse:

<initiatePaymentResponse 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>{{merchant}}</merchantID>
        <shopID>{{shop}}</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230302-132729</merchantTransactionID>
        <paymentID>ca919b62-9cd9-4850-9011-278710366a0f</paymentID>
        <userID>hc20230302132729</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">10.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>80.121.151.158</userIP>
        <state>
            <id>24813906-7206-4cb5-bbbc-fcc2cd7a18b1</id>
            <definition>
                <key>30</key>
                <value>RedirectURLCreated</value>
            </definition>
            <createdOn>2023-03-02T12:27:30.2059542Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>https://agent.callpay.com/pay/hosted?payment_key=67ea35f10351c3087744b1149c977876&amp;payment_type=eft</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">0.76</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>BankName</key>
                <value>investec</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>324</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

📘

Error States

Relevant error cases for the merchant include:
InitiateRefusedByProvider
RefusedByProvider

Example initiatePaymentResponse with error InitiateRefusedByProvider

<initiatePaymentResponse 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>{{merchant}}</merchantID>
        <shopID>{{shop}}</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>AD-000002</merchantTransactionID>
        <paymentID>0d4dd33f-31e8-4284-bd53-edbb774e2293</paymentID>
        <userID>AD-Callpay01</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">10.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>80.121.151.158</userIP>
        <state>
            <id>82827e77-1f74-48e6-8510-7ac4a8380510</id>
            <definition>
                <key>550</key>
                <value>InitiateRefusedByProvider</value>
            </definition>
            <createdOn>2023-03-23T09:11:58.879864Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseMessage</key>
                    <value>Invalid merchant data specified. Error Url is not a valid URL.</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">0.76</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>BankName</key>
                <value>investec</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>2331</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

Example initiatePaymentResponse with error InitiateRequestProviderCommunicationErrorOccurred:

<initiatePaymentResponse 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>{{merchant}}</merchantID>
        <shopID>{{shop}}</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230302-134050</merchantTransactionID>
        <paymentID>6a445fa7-c3df-4b5d-b5ec-fe3daac8ebc7</paymentID>
        <userID>hc20230302134050</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">10.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>80.121.151.158</userIP>
        <state>
            <id>0f37fca3-893f-4921-9eb6-f03b7588868d</id>
            <definition>
                <key>325</key>
                <value>InitiateRequestProviderCommunicationErrorOccurred</value>
            </definition>
            <createdOn>2023-03-02T12:41:11.0366373Z</createdOn>
            <description>Error occurred while processing payment communication for Payment[ID='45985955'].</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">0.76</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>332</value>
            </detail>
        </paymentDetails>
    </payment>
</initiatePaymentResponse>

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 (DepositedByProvider):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xmlns="http://www.cqrpayments.com/PaymentProcessing"
             xsi:type="paymentWithPaymentAccount">
        <merchantID>{{merchant}}</merchantID>
        <shopID>{{shop}}</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230302-125607</merchantTransactionID>
        <paymentID>a6b3b9d6-e557-4fb4-8cc9-1cc06121c714</paymentID>
        <userID>hc20230302125607</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">10.0000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>80.121.151.158</userIP>
        <state>
            <id>cdb3d698-629f-40bf-9d43-eba93bbac0c3</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2023-03-02T11:57:08.093</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderStatusCode</key>
                    <value>complete</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">0.7600</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>318</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>91677465</value>
            </detail>
        </paymentDetails>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest (RefusedByProvider):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xmlns="http://www.cqrpayments.com/PaymentProcessing"
             xsi:type="paymentWithPaymentAccount">
        <merchantID>{{merchant}}</merchantID>
        <shopID>{{shop}}</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>hc-20230302-125538</merchantTransactionID>
        <paymentID>6857fe6c-44be-4a42-8285-2628f1b9cde3</paymentID>
        <userID>hc20230302125538</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">10.0000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>80.121.151.158</userIP>
        <state>
            <id>31a58ee2-4dc1-4f45-b478-d3a3ccdc9e32</id>
            <definition>
                <key>100</key>
                <value>RefusedByProvider</value>
            </definition>
            <createdOn>2023-03-02T11:56:07.407</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseMessage</key>
                    <value>Insufficient funds</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderStatusCode</key>
                    <value>failed</value>
                </detail>
                <detail xsi:type="keyIntValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">0.7600</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>317</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>91677403</value>
            </detail>
        </paymentDetails>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest (Aborted):

<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <payment xmlns="http://www.cqrpayments.com/PaymentProcessing"
             xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>CallpayMockShop</shopID>
        <paymentMethod>
            <key>264</key>
            <value>BankTransferRedirectDeposit</value>
        </paymentMethod>
        <merchantTransactionID>f1029f72-68cc-43b5-bc25-fa466f4d5ba5</merchantTransactionID>
        <paymentID>4e71376f-e453-4d60-8fe6-8cd50ec08e7d</paymentID>
        <userID>d889f27e-53f5-4f5a-997e-2b854f</userID>
        <paymentProvider>
            <key>206</key>
            <value>Callpay</value>
        </paymentProvider>
        <amount currencyCode="ZAR">20.0200</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>5132c6c9-02fe-445c-b39f-67cea2e27844</id>
            <definition>
                <key>524</key>
                <value>Aborted</value>
            </definition>
            <createdOn>2023-03-27T15:49:30.797</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseMessage</key>
                    <value>Payment Aborted</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderStatusCode</key>
                    <value>aborted</value>
                </detail>
                <detail xsi:type="keyIntValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">1.5100</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>2568</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>424834018</value>
            </detail>
        </paymentDetails>
    </payment>
</handlePaymentStateChangedNotificationRequest>