eCheckSelect Deposit (ACHeCheckDeposit)

Payment Method ACHeCheckDeposit (provider naming Instant Bank Transfer, formerly eCheckSelect or also known as Mazooma) is bank transfer for the US combined with online banking.

The following method IDs are covered in this section:

ID

Name

Credit/Debit State

206

ACHeCheckDeposit

DepositedByProvider

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

Redirect Integration

Payment Method ACHeCheckDeposit is also available in the Checkout.

  • For a redirect integration (Checkout) the following parameters must be provided in the getRedirectDataRequest :

key (value type, account type, required)

value

PayerID (sent as merchant_user_id)

Merchant assigned userID

TransactionState (sent as txn_state)

The state where the payment transaction amount will be used. For example, if a customer in Texas makes a payment transaction that will be used by the customer when they are in NewJersey, the txn_state is NJ. Use the standard 2-letter state abbreviation as defined by USPS.

User/Firstname (sent as first_name)

The Customer´s first name.

User/Lastname (sent as last_name)

The Customer´s last name.

User/Address/State (sent as state)

The Customer´s home address standard 2-letter abbreviation state as defined by USPS.

User/Address/Postalcode (sent as zip)

The Customer´s 5-digit or 5-4 digit home address zip code.

User/Address/Country (sent as country)

This must be US.

User/DateofBirth (sent as dob_day, dob_month and dob_year)

The Customer`s birthday.

MerchantNotificationURL (sent as return_url)

The URL where the Customer´s browser is redirected at the end of the payment process. Merchants can include URL query string parameters, which are passed back to the Merchant system in the payment redirect response.

User/eMail (sent as customer_eMail)

The Customer´s eMail address.

Example getRedirectData request for a Redirect Deposit (206), redirection to the Selection page (=directly to PXP Checkout selection page):

<getRedirectDataRequest 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>
    <redirectParameters xsi:type="paymentMethodSelectionWithDetailsRedirectParameters">
        <shopID>{{shop}}</shopID>
        <httpMethod>GET</httpMethod>
        <returnUrl>http://return</returnUrl>
        <languageCode>en</languageCode>
        <currencyCode>usd</currencyCode>
        <countryCode>us</countryCode>
        <additionalDetails>
            <detail xsi:type="keyStringValuePair">
                <key>merchantnotificationurl</key>
                <value>https://www.google.com/PENDING</value>
            </detail>
             <detail xsi:type="keyStringValuePair">
                <key>transactionstate</key>
                <value>NY</value>
            </detail>
        </additionalDetails>
        <user>
            <id>{{newUserID}}</id>
            <username>{{newUserName}}</username>
            <firstname>Ho Chunka</firstname>
            <lastname>Ko</lastname>
            <currencyCode>usd</currencyCode>
            <languageCode>EN</languageCode>
            <email>{{newUserEmail}}</email>
            <address>
                <street>Alfred Drive</street>
                <houseNumber>2947</houseNumber>
                <postalCode>11375</postalCode>
                <city>Forest Hills</city>
                <state>New York</state>
                <countryCode2>us</countryCode2>
                <telephoneNumber>7182637200</telephoneNumber>
            </address>
            <dateOfBirth>1985-10-10T00:00:00</dateOfBirth>
            <gender>Female</gender>
        </user>
        <merchantTransactionID>{{checkoutMerchantTransactionID}}</merchantTransactionID>
        <grossAmount>110.00</grossAmount>
        <minPaymentLimitAmount>10</minPaymentLimitAmount>
        <maxPaymentLimitAmount>3000</maxPaymentLimitAmount>
        <expirationTimeSpanInSeconds>3600</expirationTimeSpanInSeconds>
        <successUrl>http://success</successUrl>
        <pendingUrl>http://pending</pendingUrl>
        <errorUrl>http://error</errorUrl>
        <cancelUrl>http://cancel</cancelUrl>
        <refusedUrl>http://refused</refusedUrl>
        <paymentDirection>Deposit</paymentDirection>
    </redirectParameters>
</getRedirectDataRequest>

Example getRedirectData request for a Redirect Deposit 206), redirection to the Detail page (=directly to PXP Checkout detail page):

<getRedirectDataRequest 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>
    <redirectParameters xsi:type="paymentMethodDetailsRedirectParameters">
        <shopID>{{shop}}</shopID>
        <httpMethod>GET</httpMethod>
        <returnUrl>http://return</returnUrl>
        <languageCode>en</languageCode>
        <currencyCode>usd</currencyCode>
        <countryCode>us</countryCode>
        <additionalDetails>
            <detail xsi:type="keyStringValuePair">
                <key>merchantnotificationurl</key>
                <value>https://www.google.com/PENDING</value>
            </detail>
             <detail xsi:type="keyStringValuePair">
                <key>transactionstate</key>
                <value>NY</value>
            </detail>
        </additionalDetails>
        <user>
            <id>{{newUserID}}</id>
            <username>{{newUserName}}</username>
            <firstname>Ho Chunka</firstname>
            <lastname>Ko</lastname>
            <currencyCode>usd</currencyCode>
            <languageCode>EN</languageCode>
            <email>{{newUserEmail}}</email>
            <address>
                <street>Coal Road</street>
                <houseNumber>4136</houseNumber>
                <postalCode>18503</postalCode>
                <city>Scranton</city>
                <state>Pennsylvania</state>
                <countryCode2>US</countryCode2>
                <telephoneNumber>570-691-7445</telephoneNumber>
            </address>
            <dateOfBirth>1985-10-10T00:00:00</dateOfBirth>
            <gender>Female</gender>
        </user>
        <merchantTransactionID>{{checkoutMerchantTransactionID}}</merchantTransactionID>
        <grossAmount>15.00</grossAmount>
        <minPaymentLimitAmount>10</minPaymentLimitAmount>
        <maxPaymentLimitAmount>3000</maxPaymentLimitAmount>
        <expirationTimeSpanInSeconds>3600</expirationTimeSpanInSeconds>
       <successUrl>http://www.google.com/result?param1=success?status=success</successUrl>
        <pendingUrl>http://www.google.com/result?param1=pending?status=pending</pendingUrl>
        <errorUrl>http://www.google.com/result?param1=error?status=error</errorUrl>
        <cancelUrl>http://www.google.com/result?param1=cancel?status=cancel</cancelUrl>
        <refusedUrl>http://www.google.com/result?param1=refuse?status=refuse</refusedUrl>
        <paymentMethodID>206</paymentMethodID>
        <isPaymentMethodChangeAllowed>false</isPaymentMethodChangeAllowed>
    </redirectParameters>
</getRedirectDataRequest>

**Example getRedirectDataResponse"

<getRedirectDataResponse xmlns=http://www.cqrpayments.com/PaymentProcessing xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance>
    <redirectData>
        <redirectUrl>https://payments.test2.kalixa.com/Checkout/PaymentMethods/206?requestData=m30h4kblzqatlb15f4qxdulb_b093063c-2017-4f56-96d4-346c3bad6d8b</redirectUrl>
    </redirectData>
</getRedirectDataResponse>

Customer using Mazooma payment for the first time

  • Customer will see the spinner in the PXP Checkout and will be redirected to Mazooma portal to make the payment.
  • After the customer has completed the payment on Mazooma side then customer is redirected to the Pending page url which was provided by the merchant in the GetRedirectDataRequest.
  • Mazooma returns a notification to PXP backend which contains the token and masked bank account details and the payment status.
  • PXP stores these details and also provides this information to the merchant for future transactions via PaymentStateChangedNotification.
  • On Successful transaction, payment status will be DepositedByProvider and merchant can display the success information to the customer.
  • On failed transaction, payment status will be RefusedByProvider and merchant can display the failure information to the customer.

The below screenshot shows an example of the payment selection page with Mazooma listed as one of the payment method.

10511051

Customer using Mazooma payment for the second and subsequent time

  • The last 3 bank accounts are displayed to the customer in the PXP checkout.
  • Masked Account Number and Bank Name are displayed for each of the last 3 previously used accounts to the customer.
  • Customer can select an account from the already existing displayed accounts or use a new one to make the payment (it follows the same flow as [Customer using Mazooma payment for the first time]).
  • If the customer selects an existing account then there is no redirection to the provider. PXP initiates a backend request to the provider with the already stored bank account details.
  • On Successful transaction, payment status will be DepositedByProvider and PXP Checkout will redirect the customer to the success url as provided in the GetRedirectDataRequest.
  • On failed transaction, payment status will be RefusedByProvider and PXP Checkout will redirect the customer to the error url as provided in the GetRedirectDataRequest.

The below screenshot shows an example of the payment selection page with Mazooma listed as one of the payment methods and already previously used payment accounts displayed on top of the selection grid

11271127

The below screenshot shows an example of the payment details page with already previously used payment accounts by the customer.

10951095

Backend2BackendIntegration

With the first time customer, the customer is redirected to Mazooma and the customer makes the payment.
Mazooma returns a notification to PXP, from which the token and masked bank account is stored in a payment account.
PXP notifies the payment accountID along with the accountNumber field (token) and subAccountNumber (masked bank account number).

When customer makes second and subsequent paymenst, merchant should will display the masked account to the customer in the cashier. The merchant should give the customer the choice to use the same account again or enter a new one.

If the existing account is selected, the merchant should send the payment accountID to PXP and PXP creates the redirect parameters with the provider´s account token.

For the user, the flow will be shorter and smoother.

A customer can have more than one accountNumber/token/payment account, but each one relates to one bank.

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)

value

MerchantNotificationURL
(string)

The URL where the consumer´s browser is redirected at the end of the payment process.

TransactionState (string)

The US licensed state where the customer is depositing into.

Required fields:

PayerID (sent as merchant_user_id)

Merchant assigned userID

TransactionState (sent as txn_state)

The state where the payment transaction amount will be used. For example, if a Consumer in Texas makes a payment transaction that will be used by the Consumer when they are in NewJersey, the txn_state is NJ. Use the standard 2-letter state abbreviation as defined by USPS.

User/Firstname (sent as first_name)

The Consumer´s first name.

User/Lastname (sent as last_name)

The Consumer´s last name.

User/Address/State (sent as state)

The Consumer´s home address standard 2-letter abbreviation state as defined by USPS.

User/Address/Postalcode (sent as zip)

The Consumer´s 5-digit or 5-4 digit home address zip code.

User/Address/Country (sent as country)

This must be US.

User/DateofBirth (sent as dob_day, dob_month and dob_year)

The consumer`s birthday.

MerchantNotificationURL (sent as return_url)

The URL where the Consumer´s browser is redirected at the end of the payment process. Merchants can include URL query string parameters, which are passed back to the Merchant system in the payment redirect response.

User/eMail (sent as customer_eMail)

The consumer´s eMail address.

Example initiatePaymentRequest without payment account:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>XXXXXXXXX</merchantID>
    <shopID>XXXXXXXXX</shopID>
    <merchantTransactionID>XXXXXXXXX</merchantTransactionID>
    <paymentMethodID>206</paymentMethodID>
    <amount currencyCode="USD">9.90</amount>
    <userID>michquin</userID>
    <userData>
        <username>2065bf55f2184e87956eead7</username>
        <firstname>Name</firstname>
        <lastname>Name2</lastname>
        <currencyCode xsi:nil="true" />
        <languageCode xsi:nil="true" />
        <email>[email protected]</email>
        <address>
            <street>800 Sheridan Ave</street>
            <houseName xsi:nil="true" />
            <houseNumber xsi:nil="true" />
            <houseNumberExtension xsi:nil="true" />
            <postalCode>07208</postalCode>
            <city>Porth</city>
            <state>NJ</state>
            <countryCode2>US</countryCode2>
            <telephoneNumber xsi:nil="true" />
        </address>
        <dateOfBirth>1984-02-03T00:00:00</dateOfBirth>
        <identificationNumberType xsi:nil="true" />
        <drivingLicenseNumber xsi:nil="true" />
        <drivingLicenseIssuingState xsi:nil="true" />
    </userData>
    <userIP>127.0.0.1</userIP>
    <userSessionID>3454edab-dd8d-43b2-9eac-39a7a70d44ea</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>MerchantNotificationUrl</key>
            <value>https://merchant.com/notification.html</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>TransactionState</key>
            <value>NJ</value>
        </data>
    </specificPaymentData>
</initiatePaymentRequest>

Example initiatePaymentRequest with payment account:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>XXXXXXXX</merchantID>
    <shopID>XXXXXXXX</shopID>
    <merchantTransactionID>XXXXXXXX</merchantTransactionID>
    <paymentMethodID>206</paymentMethodID>
    <amount currencyCode="USD">7.90</amount>
    <userID>XXXXXXXX</userID>
    <userData>
        <username>2065bf55f2184e87956eead7</username>
        <firstname>XXXXXXXX</firstname>
        <lastname>Quinn</lastname>
        <currencyCode xsi:nil="true" />
        <languageCode xsi:nil="true" />
        <email>[email protected]</email>
        <address>
            <street>800 Sheridan Ave</street>
            <houseName xsi:nil="true" />
            <houseNumber xsi:nil="true" />
            <houseNumberExtension xsi:nil="true" />
            <postalCode>07208</postalCode>
            <city>Elizabeth</city>
            <state>NJ</state>
            <countryCode2>US</countryCode2>
            <telephoneNumber xsi:nil="true" />
        </address>
        <dateOfBirth>1984-02-03T00:00:00</dateOfBirth>
        <identificationNumberType xsi:nil="true" />
        <drivingLicenseNumber xsi:nil="true" />
        <drivingLicenseIssuingState xsi:nil="true" />
    </userData>
    <userIP>127.0.0.1</userIP>
    <userSessionID>3454edab-dd8d-43b2-9eac-39a7a70d44ea</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>MerchantNotificationUrl</key>
            <value>https://merchant.com/notification.html</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>TransactionState</key>
            <value>NJ</value>
        </data>
    </specificPaymentData>
    <paymentAccountID>2567e65a-d9ec-422a-b5a1-7e8cf28276f7</paymentAccountID>
</initiatePaymentRequest>

Example initiatePaymentResponse (initiated without payment account):

<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>XXXXXXXXX</merchantID>
        <shopID>XXXXXXXXX</shopID>
        <paymentMethod>
            <key>206</key>
            <value>ACHeCheckDeposit</value>
        </paymentMethod>
        <merchantTransactionID>XXXXXXXXX</merchantTransactionID>
        <paymentID>4a7948c3-f1ff-4360-8701-96a32018ba79</paymentID>
        <userID>XXXXXXXXX</userID>
        <paymentProvider>
            <key>122</key>
            <value>Mazooma</value>
        </paymentProvider>
        <amount currencyCode="USD">9.90</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>85dc64ef-73cc-4945-bc29-16bbbd137142</id>
            <definition>
                <key>287</key>
                <value>RedirectDataCreated</value>
            </definition>
            <createdOn>2019-10-09T08:07:07.70576Z</createdOn>
            <description>https://staging.verifiedach.com/consumer/AcquireInfoGateway.do&#xD;
merchant_id=Pxpfinan&#xD;
details=252EBACCF8E6F19DA52675B08FEC76F23E8FA5DD9E9A38BF9EBED08ACDBF0C523F72B754C9AA23D3CD781B7D4265F7A9170E9AB02C58B4B58752CC497624A052260363D50CF9FA494BD33474A6A614656E871005B633A9EDE2867A57FADB92645AF101D293ACBD3F5F3617562407E61CA104CED028ACCDCD852E0A3119A5DB5B6653FFB4D5AF49162141263CCD8AD5A8606B1636F872FDB8D48DCEAF593A9B5ED5D167B6B73C5CB43DF0E58B693C0224B623EFF2057074066AE12A8AE7DF4FD34B0421A9F5C464C7B1AD35DE3912A420F881EDAF8A092FCD49852BD3AC26B34563404DC9477FFF836BA032F9DD097B62F9CF2BD64CD191A05AF4134FE5D8A26A6CC4DE826568FBF6875C843FBB8AE13D40B02D50874F66A7E96806938F6A2A4DFA60A4327D0956FECBD90E09449A87E1957E5204160EA7663A002C5F4C942B2DAE13680510D15ADF290454ECF87FF289E36EEE740F7C3CD483C3621205F66113335ADC38FAEAE8767C35DB18CECA3BBC&#xD;
iv=1E4448D5613B043DA5E321EB0F1BA468&#xD;
</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>https://staging.verifiedach.com/consumer/AcquireInfoGateway.do</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatamerchant_id</key>
                    <value>Pxpfinan</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatadetails</key>
                    <value>252EBACCF8E6F19DA52675B08FEC76F23E8FA5DD9E9A38BF9EBED08ACDBF0C523F72B754C9AA23D3CD781B7D4265F7A9170E9AB02C58B4B58752CC497624A052260363D50CF9FA494BD33474A6A614656E871005B633A9EDE2867A57FADB92645AF101D293ACBD3F5F3617562407E61CA104CED028ACCDCD852E0A3119A5DB5B6653FFB4D5AF49162141263CCD8AD5A8606B1636F872FDB8D48DCEAF593A9B5ED5D167B6B73C5CB43DF0E58B693C0224B623EFF2057074066AE12A8AE7DF4FD34B0421A9F5C464C7B1AD35DE3912A420F881EDAF8A092FCD49852BD3AC26B34563404DC9477FFF836BA032F9DD097B62F9CF2BD64CD191A05AF4134FE5D8A26A6CC4DE826568FBF6875C843FBB8AE13D40B02D50874F66A7E96806938F6A2A4DFA60A4327D0956FECBD90E09449A87E1957E5204160EA7663A002C5F4C942B2DAE13680510D15ADF290454ECF87FF289E36EEE740F7C3CD483C3621205F66113335ADC38FAEAE8767C35DB18CECA3BBC</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataiv</key>
                    <value>1E4448D5613B043DA5E321EB0F1BA468</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataKeys</key>
                    <value>merchant_id,details,iv</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">8.88</baseAmount>
        <paymentDetails xsi:nil="true"></paymentDetails>
        <paymentAccount>
            <paymentAccountID>0</paymentAccountID>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

Example initiatePaymentResponse (initiated with payment account):

<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>XXXXXXX</merchantID>
        <shopID>XXXXXXX</shopID>
        <paymentMethod>
            <key>206</key>
            <value>ACHeCheckDeposit</value>
        </paymentMethod>
        <merchantTransactionID>XXXXXXX</merchantTransactionID>
        <paymentID>afad7629-0678-40dc-8fb1-35f0b5a39244</paymentID>
        <userID>XXXXXXX</userID>
        <paymentProvider>
            <key>122</key>
            <value>Mazooma</value>
        </paymentProvider>
        <amount currencyCode="USD">7.90</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>871054b1-71df-43bb-834d-166680f81cbf</id>
            <definition>
                <key>287</key>
                <value>RedirectDataCreated</value>
            </definition>
            <createdOn>2019-10-09T08:34:19.9753412Z</createdOn>
            <description>https://staging.verifiedach.com/consumer/AcquireInfoGateway.do&#xD;
merchant_id=Pxpfinan&#xD;
details=954A9A6D4DEC91B6E717B376BCD7FF9ABE5FE5CC990D98FDD6F54493B39FEE16B4E69F7E71AC6A04496675E54EE0F253DD654F90C3B4E5CE0C41B7CD53910FB806ACD9282110261BFFD83BC99FCE59A4BEC9D314F98ACA127B31AFEE712CEC91332EA788C9BC9FD8A14CCBE5D2E923890B826EC0F3F62A4BC3EA86BA182ECDFFC120627D04D535924C37070CDA0A1968E6AC96CF0151DEB3CB775F5F8384F479AD5E030AD049A9039388E6EAC66BA11820EC639E6BCC5D6CD96EB29CA567EC8C27B411D1F973A88F6196F7C3811F965688543415FAC402DE9BB4AEC716B9D2732CB8CFCE675BD9295B17F60736F9D9807708EB30AD3623262E0636991D64F397DA7F3DE10B078C4E28F8D7ED37D418ADEE9EADB9FAA04080BCB792EFFB94A899777CF5E53D0DF23A79EBFB45B12BED7704A1E9026D63988BE7A8D32A687534392B42C914D60F55F7193E8C63E5BB60481EB79B1F00355A9C94D4A313DBD01843F2DDB4B5D0D66A7A09F8E5C673C4A45CDFF6CD5C09BA183DCB7DC641B012A2E3F82331E9710820196F5D223F080B7E1715771EB54290AA52ACF23B11FAED2FA7&#xD;
iv=4E2873EA6314C75A0F00E6114700F96A&#xD;
</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>https://staging.verifiedach.com/consumer/AcquireInfoGateway.do</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatamerchant_id</key>
                    <value>Pxpfinan</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatadetails</key>
                    <value>954A9A6D4DEC91B6E717B376BCD7FF9ABE5FE5CC990D98FDD6F54493B39FEE16B4E69F7E71AC6A04496675E54EE0F253DD654F90C3B4E5CE0C41B7CD53910FB806ACD9282110261BFFD83BC99FCE59A4BEC9D314F98ACA127B31AFEE712CEC91332EA788C9BC9FD8A14CCBE5D2E923890B826EC0F3F62A4BC3EA86BA182ECDFFC120627D04D535924C37070CDA0A1968E6AC96CF0151DEB3CB775F5F8384F479AD5E030AD049A9039388E6EAC66BA11820EC639E6BCC5D6CD96EB29CA567EC8C27B411D1F973A88F6196F7C3811F965688543415FAC402DE9BB4AEC716B9D2732CB8CFCE675BD9295B17F60736F9D9807708EB30AD3623262E0636991D64F397DA7F3DE10B078C4E28F8D7ED37D418ADEE9EADB9FAA04080BCB792EFFB94A899777CF5E53D0DF23A79EBFB45B12BED7704A1E9026D63988BE7A8D32A687534392B42C914D60F55F7193E8C63E5BB60481EB79B1F00355A9C94D4A313DBD01843F2DDB4B5D0D66A7A09F8E5C673C4A45CDFF6CD5C09BA183DCB7DC641B012A2E3F82331E9710820196F5D223F080B7E1715771EB54290AA52ACF23B11FAED2FA7</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataiv</key>
                    <value>4E2873EA6314C75A0F00E6114700F96A</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataKeys</key>
                    <value>merchant_id,details,iv</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">7.08</baseAmount>
        <paymentDetails xsi:nil="true"></paymentDetails>
        <paymentAccount>
            <paymentAccountID>2567e65a-d9ec-422a-b5a1-7e8cf28276f7</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>fd21d300-5081-44ba-93a3-0836d262907a</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>subAccountNumber</key>
                    <value>***8412</value>
                </detail>
            </details>
        </paymentAccount>
    </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.

The notified payment accounts include a payment account with account token (in field accountNumber) and account label (in field subAccountNumber). The account token is the token received from provider. The merchant may use either the payment account alone or with the account token to initiate a deposit or withdrawal with the same user bank account. The account label is the masked user bank account number.

Payment account detail

Details

Account number

Token received from provider.

SubAccountNumber

Account label (masked bank account number)

BankName

Name of the bank.

AccountType

Account type.

Example handlePaymentStateChangedNotificationRequest for a successful payment:

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>150001</shopID>
        <paymentMethod>
            <key>206</key>
            <value>ACHeCheckDeposit</value>
        </paymentMethod>
        <merchantTransactionID>d15fc643-ce50-45ba-ad32-1936a62a686d</merchantTransactionID>
        <paymentID>7d329e51-89d6-43aa-8d4a-ed20f9e4140b</paymentID>
        <userID>f2e6c66b-40ac-4787-b31a-6091f8</userID>
        <paymentProvider>
            <key>122</key>
            <value>Mazooma</value>
        </paymentProvider>
        <amount currencyCode="USD">26.2000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>d4cba10e-093d-4272-9319-de8cd79abc16</id>
            <definition>
                <key>29</key>
                <value>DepositedByProvider</value>
            </definition>
            <createdOn>2020-10-20T14:33:21.27</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">19.6900</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>104811</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>20190926rvm</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>35e41ac9-4882-4491-a318-0f9e304fea18</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>fd21d300-5081-44ba-93a3-0836d262907a</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>subAccountNumber</key>
                    <value>***8412</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>BankName</key>
                    <value>Test Bank</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>AccountType</key>
                    <value>PC</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest for a failed payment (RefusedByProvider):

<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>B2BTestMerchant</merchantID>
        <shopID>150001</shopID>
        <paymentMethod>
            <key>206</key>
            <value>ACHeCheckDeposit</value>
        </paymentMethod>
        <merchantTransactionID>fd8a9fd6-be77-48f8-b87e-e93158ffb980</merchantTransactionID>
        <paymentID>8a5f0bd2-5428-4e10-946f-65ffecb067b9</paymentID>
        <userID>b577f3e5-36d1-44ed-aebb-a313e5</userID>
        <paymentProvider>
            <key>122</key>
            <value>Mazooma</value>
        </paymentProvider>
        <amount currencyCode="USD">23.8000</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>753dd5c4-3266-4275-9df6-f8c70971f9f4</id>
            <definition>
                <key>100</key>
                <value>RefusedByProvider</value>
            </definition>
            <createdOn>2020-07-13T15:32:03.31</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyIntValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">17.8800</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>102736</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>20190926rvm</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>0</paymentAccountID>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

Example handlePaymentStateChangedNotificationRequest for a ReturnedPayment:

<?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:q1="http://www.cqrpayments.com/PaymentProcessing" xsi:type="paymentWithPaymentAccount">
    <merchantID>B2BTestMerchant</merchantID>
    <shopID>150001</shopID>
    <paymentMethod>
      <key>352</key>
      <value>ACHeCheckDepositReturn</value>
    </paymentMethod>
    <merchantTransactionID>28ea46cf-4a26-4bcd-889b-db5307526fe1</merchantTransactionID>
    <paymentID>c79504db-0589-4482-afce-0b1bc5872d11</paymentID>
    <userID>3a59a4aab2bf45b3a61f6dae</userID>
    <paymentProvider>
      <key>122</key>
      <value>Mazooma</value>
    </paymentProvider>
    <amount currencyCode="USD">39.9000</amount>
    <creationType>
      <key>1</key>
      <value>User</value>
    </creationType>
    <state>
      <id>ce91fae8-d3ad-49e7-ae4f-961910e8f7f1</id>
      <definition>
        <key>279</key>
        <value>ReturnedByProvider</value>
      </definition>
      <createdOn>2019-09-06T13:01:54.56</createdOn>
      <paymentStateDetails xsi:nil="true" />
    </state>
    <isExecuted>true</isExecuted>
    <baseAmount currencyCode="EUR">29.9800</baseAmount>
    <paymentDetails>
      <detail xsi:type="keyStringValuePair">
        <key>ProviderExternalID</key>
        <value>7de71283-0247-4e98-9a2f-e7d75fbcf591</value>
      </detail>
      <detail xsi:type="keyIntValuePair">
        <key>MerchantSettlementCurrencyID</key>
        <value>2</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>OriginalPaymentID</key>
        <value>c03039ff-c81f-4932-af28-ad50865dbbfe</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>OriginalPaymentMerchantTransactionID</key>
        <value>28ea46cf-4a26-4bcd-889b-db5307526fe1</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>OriginalPaymentMethodID</key>
        <value>206</value>
      </detail>
      <detail xsi:type="keyStringValuePair">
        <key>OriginalPaymentMethodName</key>
        <value>ACHeCheckDeposit</value>
      </detail>
    </paymentDetails>
    <paymentAccount>
      <paymentAccountID>0</paymentAccountID>
    </paymentAccount>
  </payment>
</handlePaymentStateChangedNotificationRequest>

Error codes

If a payment can't be completed successfully, there are two types of codes that may be included in the payment notification.

Payment Request Codes

Payment request errors are caused by missing or invalid parameters in the payment request. These errors have codes that begin with V.

532532

Payment Result Codes

If a payment is rejected by eCheckSelect, the payment result code that describes the reason for the rejection is included in the payment notification.

713713

ACH Return Codes

ACH return codes and definitions commonly used by US financial institutions:

539539 539539 534534

Account migration

This option enables copying the payment account and user ID from one merchant on to another (if both merchants utilize the same MID).

initiatePaymentRequest:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>Test</merchantID>
    <shopID>Shop</shopID>
    <merchantTransactionID>4b6c548c-f083-46bc-b66b-1f3968cd4130</merchantTransactionID>
    <paymentMethodID>206</paymentMethodID>
    <amount currencyCode="USD">10.15</amount>
    <userID>9fbd5fbe-8a4b-4919-855b-dc8175</userID>
    <userData>
        <username>9fbd5fbe-8a4b-4919-855b-dc8175</username>
        <firstname xsi:nil="true" />
        <lastname xsi:nil="true" />
        <currencyCode xsi:nil="true" />
        <languageCode xsi:nil="true" />
        <email xsi:nil="true" />
        <address>
            <street xsi:nil="true" />
            <houseName xsi:nil="true" />
            <houseNumber xsi:nil="true" />
            <houseNumberExtension xsi:nil="true" />
            <postalCode xsi:nil="true" />
            <city xsi:nil="true" />
            <state xsi:nil="true" />
            <countryCode2>US</countryCode2>
            <telephoneNumber xsi:nil="true" />
        </address>
        <dateOfBirth>1988-02-10T00:00:00</dateOfBirth>
        <gender>Male</gender>
        <identificationNumberType xsi:nil="true" />
        <drivingLicenseNumber xsi:nil="true" />
        <drivingLicenseIssuingState xsi:nil="true" />
    </userData>
    <userIP>127.0.0.1</userIP>
    <userSessionID>c066c096-c589-48d2-a90a-72e85c7745bd</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>TransactionState</key>
            <value>NJ</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentAccountReferenceMerchantID</key>
            <value>B2BTestMerchant</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentAccountReferenceUserID</key>
            <value>9fbd5fbe-8a4b-4919-855b-dc8175</value>
        </data>
    </specificPaymentData>
    <paymentAccountID>9863b10e-01d5-4fed-8641-9b2e34b7c4e4</paymentAccountID>
</initiatePaymentRequest>

initiatePaymentResponse:

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <payment xsi:type="paymentWithPaymentAccount">
        <merchantID>Test</merchantID>
        <shopID>Shop</shopID>
        <paymentMethod>
            <key>206</key>
            <value>ACHeCheckDeposit</value>
        </paymentMethod>
        <merchantTransactionID>4b6c548c-f083-46bc-b66b-1f3968cd4130</merchantTransactionID>
        <paymentID>3f118b95-ab07-4720-aacf-eaaf6c4ba8eb</paymentID>
        <userID>9fbd5fbe-8a4b-4919-855b-dc8175</userID>
        <paymentProvider>
            <key>122</key>
            <value>Mazooma</value>
        </paymentProvider>
        <amount currencyCode="USD">10.15</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>c2a6de0c-0e43-4340-970b-54a24d0242e8</id>
            <definition>
                <key>287</key>
                <value>RedirectDataCreated</value>
            </definition>
            <createdOn>2021-07-26T15:09:17.1587757Z</createdOn>
            <description>https://api.test2.kalixa.com/WebMockProviders/Mazooma/OnlineBankingOverMazoomaProvider.aspx
merchant_id=TestMcht
details=B1CBA1B92467878E0E4D1B69C40B820EC6477FCE049609F1B836164475539AD8610F0414AD9929EBF9104302AAAED76F465065C801F771E4C085872F4F3053BC4BAD66C1BECF23E27ED159969AB48DBF76C703B2142A695460C091C6EFBB2FF91879F966018779426180CAE39138E22474FDFC809134F5F99809B2A19E7BAC81055019F13E0764E162778BA44D9E1368F2CA14E6A14DEB44E595646E7BCEE714C17EACC3C1F7925A60B6DAA0E7232291EAD03F6D4FF4A553F42DDC987EE981526E8F99808E1E740E4509B8FEAD6BC2EBA1F95C7C47D61BA973320B2356EA2A549C6F44EE4759153E3F73F266C01853CE490A738952CCD034C95BC256A52784BD98B7441274F3736EA304E50B3B9A683F3BEDACC1991BC5827DC58B5F66862068899E742C3FB190691EA710EB71A75C98791092FFBF70048AE419297E76DEA14EBDAE3F51ACD00A338C548696CF25445E31BE1CB36F616981036144C3B6D85CBA3BDBBE2881009605A5F92010B190D118
iv=D9FAB8CBEFAD661169F233AF63169723
</description>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>RedirectionUrl</key>
                    <value>https://api.test2.kalixa.com/WebMockProviders/Mazooma/OnlineBankingOverMazoomaProvider.aspx</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatamerchant_id</key>
                    <value>TestMcht</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDatadetails</key>
                    <value>B1CBA1B92467878E0E4D1B69C40B820EC6477FCE049609F1B836164475539AD8610F0414AD9929EBF9104302AAAED76F465065C801F771E4C085872F4F3053BC4BAD66C1BECF23E27ED159969AB48DBF76C703B2142A695460C091C6EFBB2FF91879F966018779426180CAE39138E22474FDFC809134F5F99809B2A19E7BAC81055019F13E0764E162778BA44D9E1368F2CA14E6A14DEB44E595646E7BCEE714C17EACC3C1F7925A60B6DAA0E7232291EAD03F6D4FF4A553F42DDC987EE981526E8F99808E1E740E4509B8FEAD6BC2EBA1F95C7C47D61BA973320B2356EA2A549C6F44EE4759153E3F73F266C01853CE490A738952CCD034C95BC256A52784BD98B7441274F3736EA304E50B3B9A683F3BEDACC1991BC5827DC58B5F66862068899E742C3FB190691EA710EB71A75C98791092FFBF70048AE419297E76DEA14EBDAE3F51ACD00A338C548696CF25445E31BE1CB36F616981036144C3B6D85CBA3BDBBE2881009605A5F92010B190D118</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataiv</key>
                    <value>D9FAB8CBEFAD661169F233AF63169723</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PostDataKeys</key>
                    <value>merchant_id,details,iv</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">7.63</baseAmount>
        <paymentDetails />
        <paymentAccount>
            <paymentAccountID>9863b10e-01d5-4fed-8641-9b2e34b7c4e4</paymentAccountID>
            <details>
                <detail xsi:type="keyStringValuePair">
                    <key>accountNumber</key>
                    <value>447624222711</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>subAccountNumber</key>
                    <value>447624222711</value>
                </detail>
            </details>
        </paymentAccount>
    </payment>
</initiatePaymentResponse>

Provider testing

When testing with provider is enabled, the proxy from Mazooma has to be enabled to bypass the issue "the payment processing has been terminated".

The IP address of the machine must be remapped to USA in the Mazooma staging environment. However, if proxies are enabled and the IP address in the staging environment is remapped to USA and you still receive this error, there may be an issue with the API request.

In order to have the IP address remapped to the USA, please contact Mazooma support or PXP support.