MuchBetter withdraw

Payment Method MuchBetter is an innovative, mobile-only payments solution available on both IOS and Android platforms. Customers pay merchants using their MuchBetter account balance. Customers may also receive money from merchants, top up funds (via a number of methods such as credit/debit cards, bank transfers, cash etc.),

The following method IDs are covered in this section:

IDNameCredit/Debit State
319MuchBetterWithdrawalWithdrawnByProvider (20)

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

  1. User initiates a payment via MuchBetter
  2. Merchant sends a initiatePaymentRequest to PXP payment service
  3. PXP payment service sends PUSH request to MuchBetter
  4. PUSH response is returned to PXP payment service
  5. PXP payment service calls MuchBetter's "Check transaction status" API
  6. PXP payment service receives a query response with transaction status "COMPLETED" and moves the payment to state "WithdrawnByProvider".
  7. Merchant is sent the initiatePaymentResponse

Redirect Integration

Currently not supported.

Sequence diagram

761

Backend2Backend Integration

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's phone number in international format without '+' sign. E.g. 447624222722 where 44 is country code and 7624222722 is user's mobile.

The following parameters can be provided in initiatePaymentRequest.specificPaymentData:

key (value type, account type, required)value
PaymentDescription (string)Billing descriptor
PaymentDescriptionLanguageCode (string)Two characters language code

Scenario: Successful Payment

Example: initiatePaymentRequest

<?xml version="1.0" encoding="utf-8"?>
<initiatePaymentRequest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.cqrpayments.com/PaymentProcessing">
    <merchantID>KalixaAcceptDemo</merchantID>
    <shopID>KalixaAcceptDemo</shopID>
    <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
    <paymentMethodID>319</paymentMethodID>
    <amount currencyCode="EUR">2.00</amount>
    <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
    <userIP>127.0.0.1</userIP>
    <userSessionID>7495c35f-3c55-4a08-a0a0-03f3ed917fbc</userSessionID>
    <creationTypeID>1</creationTypeID>
    <specificPaymentData>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescription</key>
            <value>PaymentDescription</value>
        </data>
        <data xsi:type="keyStringValuePair">
            <key>PaymentDescriptionLanguageCode</key>
            <value>en</value>
        </data>
    </specificPaymentData>
    <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
    <paymentAccount>
        <specificPaymentAccountData>
            <data xsi:type="keyStringValuePair">
                <key>AccountNumber</key>
                <value>447624222722</value>
            </data>
        </specificPaymentAccountData>
    </paymentAccount>
</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>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>319</key>
            <value>MuchBetterWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
        <paymentID>4e4de852-bf53-4f7a-80d2-ea9cb0ef0645</paymentID>
        <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
        <paymentProvider>
            <key>176</key>
            <value>MuchBetter</value>
        </paymentProvider>
        <amount currencyCode="EUR">2.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>13d2faeb-b560-43b2-a2a1-c5514e4eb473</id>
            <definition>
                <key>120</key>
                <value>PendingOnProvider</value>
            </definition>
            <createdOn>2018-11-30T10:23:48.6174473Z</createdOn>
            <paymentStateDetails>
                <detail xsi:type="keyStringValuePair">
                    <key>ProviderResponseCode</key>
                    <value>PENDING</value>
                </detail>
                <detail xsi:type="keyStringValuePair">
                    <key>PaymentStateReasonID</key>
                    <value>1</value>
                </detail>
            </paymentStateDetails>
        </state>
        <isExecuted>false</isExecuted>
        <baseAmount currencyCode="EUR">2</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>162798</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>25981572</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
        </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.

Scenario: Successful Payment Notification

<?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>KalixaAcceptDemo</merchantID>
        <shopID>KalixaAcceptDemo</shopID>
        <paymentMethod>
            <key>319</key>
            <value>MuchBetterWithdrawal</value>
        </paymentMethod>
        <merchantTransactionID>cfd234da2-6ada-abddd-94bf-wadf2-4</merchantTransactionID>
        <paymentID>4e4de852-bf53-4f7a-80d2-ea9cb0ef0645</paymentID>
        <userID>99a3af90-5245-48ca-8c21-b23fdf</userID>
        <paymentProvider>
            <key>176</key>
            <value>MuchBetter</value>
        </paymentProvider>
        <amount currencyCode="EUR">2.00</amount>
        <creationType>
            <key>1</key>
            <value>User</value>
        </creationType>
        <userIP>127.0.0.1</userIP>
        <state>
            <id>fa844691-f90b-4a64-9929-23f6718fe2e7</id>
            <definition>
                <key>20</key>
                <value>WithdrawnByProvider</value>
            </definition>
            <createdOn>2018-12-06T21:46:43.44</createdOn>
            <paymentStateDetails xsi:nil="true" />
        </state>
        <isExecuted>true</isExecuted>
        <baseAmount currencyCode="EUR">2.00</baseAmount>
        <paymentDetails>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderExternalID</key>
                <value>25981572</value>
            </detail>
            <detail xsi:type="keyStringValuePair">
                <key>ProviderTransactionID</key>
                <value>25981572</value>
            </detail>
        </paymentDetails>
        <paymentAccount>
            <paymentAccountID>8fa1f57f-f5b1-4d82-a1c2-53a0b6cc6111-3</paymentAccountID>
        </paymentAccount>
    </payment>
</handlePaymentStateChangedNotificationRequest>

State diagram

619