MultiPay gateway guide

📘

MultiPay is currently only available in sandbox

Adding a MultiPay gateway

To add a MultiPay gateway:

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>multi_pay</gateway_type>
        <company>company</company>
        <branch>branch</branch>
        <pos>pos</pos>
        <user>user</user>
        <password>password</password>
      </gateway>'
{
  "gateway": {
        "gateway_type": "multi_pay",
        "company": "{{multi_pay_company}}",
        "branch": "{{multi_pay_branch}}",
        "pos": "{{multi_pay_pos}}",
        "user": "{{multi_pay_user}}",
        "password": "{{multi_pay_password}}",
        "sandbox":true
      }
}
<gateway>
    <token>2PBSMPDWV393HBG0RH7Z0AX1VB</token>
    <gateway_type>multi_pay</gateway_type>
    <name>Multipay</name>
    <description nil="true"/>
    <merchant_profile_key nil="true"/>
    <sub_merchant_key nil="true"/>
    <company>2000373</company>
    <branch>spreedly</branch>
    <pos>Spreedly-01</pos>
    <user>nznnPt4pvHUAGbU5_ZrskqA5Djwa</user>
    <characteristics>
        <supports_purchase type="boolean">true</supports_purchase>
        <supports_authorize type="boolean">true</supports_authorize>
        <supports_capture type="boolean">true</supports_capture>
        <supports_partial_capture type="boolean">false</supports_partial_capture>
        <supports_credit type="boolean">true</supports_credit>
        <supports_partial_credit type="boolean">false</supports_partial_credit>
        <supports_general_credit type="boolean">false</supports_general_credit>
        <supports_void type="boolean">true</supports_void>
        <supports_adjust type="boolean">false</supports_adjust>
        <supports_verify type="boolean">false</supports_verify>
        <supports_reference_purchase type="boolean">false</supports_reference_purchase>
        <supports_purchase_via_preauthorization type="boolean">false</supports_purchase_via_preauthorization>
        <supports_offsite_purchase type="boolean">false</supports_offsite_purchase>
        <supports_offsite_authorize type="boolean">false</supports_offsite_authorize>
        <supports_offsite_synchronous_purchase type="boolean">false</supports_offsite_synchronous_purchase>
        <supports_offsite_synchronous_authorize type="boolean">false</supports_offsite_synchronous_authorize>
        <supports_3dsecure_purchase type="boolean">false</supports_3dsecure_purchase>
        <supports_3dsecure_authorize type="boolean">false</supports_3dsecure_authorize>
        <supports_3dsecure_2_mpi_purchase type="boolean">true</supports_3dsecure_2_mpi_purchase>
        <supports_3dsecure_2_mpi_authorize type="boolean">true</supports_3dsecure_2_mpi_authorize>
        <supports_store type="boolean">false</supports_store>
        <supports_remove type="boolean">false</supports_remove>
        <supports_fraud_review type="boolean">false</supports_fraud_review>
        <supports_network_tokenization type="boolean">false</supports_network_tokenization>
        <supports_inquire_by_gateway_transaction_id type="boolean">false</supports_inquire_by_gateway_transaction_id>
        <supports_inquire_by_order_id type="boolean">false</supports_inquire_by_order_id>
        <supports_transaction_retry type="boolean">false</supports_transaction_retry>
        <supports_stored_stored_credentials type="boolean">false</supports_stored_stored_credentials>
    </characteristics>
    <credentials>
        <credential>
            <name>company</name>
            <value>{{value}}</value>
        </credential>
        <credential>
            <name>branch</name>
            <value>{{value}}</value>
        </credential>
        <credential>
            <name>pos</name>
            <value>{{value}}</value>
        </credential>
        <credential>
            <name>user</name>
            <value>{{value}}</value>
        </credential>
    </credentials>
    <gateway_settings>
  </gateway_settings>
    <gateway_specific_fields>
  </gateway_specific_fields>
    <payment_methods>
        <payment_method>credit_card</payment_method>
    </payment_methods>
    <state>retained</state>
    <redacted type="boolean">false</redacted>
    <sandbox type="boolean">false</sandbox>
    <mode>default</mode>
    <created_at type="dateTime">2025-08-19T14:43:23Z</created_at>
    <updated_at type="dateTime">2025-08-19T14:43:23Z</updated_at>
</gateway>
{
    "gateway": {
        "token": "5QEV9HGWJ08BTV623MVXMVT3DW",
        "gateway_type": "multi_pay",
        "description": null,
        "merchant_profile_key": null,
        "sub_merchant_key": null,
        "payment_methods": [
            "credit_card"
        ],
        "state": "retained",
        "created_at": "2025-08-19T14:27:04Z",
        "updated_at": "2025-08-19T14:27:04Z",
        "name": "Multipay",
        "company": "2000373",
        "branch": "spreedly",
        "pos": "Spreedly-01",
        "user": "nznnPt4pvHUAGbU5_ZrskqA5Djwa",
        "characteristics": [
            "purchase",
            "authorize",
            "capture",
            "credit",
            "void",
            "3dsecure_2_mpi_purchase",
            "3dsecure_2_mpi_authorize"
        ],
        "credentials": [
            {
                "name": "company",
                "value": "2000373"
            },
            {
                "name": "branch",
                "value": "spreedly"
            },
            {
                "name": "pos",
                "value": "Spreedly-01"
            },
            {
                "name": "user",
                "value": "nznnPt4pvHUAGbU5_ZrskqA5Djwa"
            }
        ],
        "gateway_settings": {},
        "gateway_specific_fields": [],
        "redacted": false,
        "sandbox": true,
        "mode": "default"
    }
}

Transacting with MultiPay

To transact with MultiPay, 3DS is required.

Transactions at MultiPay require 3DS data sent on all transactions, but for merchants integrated with Spreedly, they only need to send 3DS data on the initial authorize or purchase transactions. Spreedly will fill in the 3DS data from the pervious transaction on each subsequent transaction as needed.

Gateway specific fields

Spreedly supports the following gateway specific fields when transacting with a MultiPay gateway:

  • vat_value: integer value for the value added tax.
  • facility_type: string value of the facility type.
  • facility_payments: integer value representing number of facility payments.
  • tip_amount: integer value of the tip for a transaction.

Gateway specific fields usage example:

curl https://core.spreedly.com/v1/gateways/LlkjmEk0xNkcWrNixXa1fvNoTP4/purchase.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<transaction>
        <payment_method_token>xxxxxxxxxx</payment_method_token>
        <amount>100</amount>
        <currency_code>USD</currency_code>
        <description>MyShoesStore</description>
        <email>[email protected]</email>
        <billing_address>
          <name>Cure Tester</name>
          <phone_number>(555)555-5555</phone_number>
          <address1>456 My Street</address1>
          <company>Widgets Inc</company>
          <city>Ottawa</city>
          <state>ON</state>
          <country>CA</country>
          <zip>K1C2N6</zip>
        </billing_address>
        <gateway_specific_fields>
          <multi_pay>
            <vat_value>50</vat_value>
            <facility_type>"D"</facility_type>
            <facility_payments>1</facility_payments>
            <tip_amount>true</tip_amount>
          </multi_pay>
        </gateway_specific_fields>
      </transaction>'
{
  "transaction": {
          "amount": "1000",
          "currency_code": "CLP",
          "payment_method_token": "{{payment_method}}",
          "three_ds_version": "2.2.0",
          "three_ds": {
            "ecommerce_indicator": "{{ecommerce_indicator}}",
            "authentication_value": "{{authentication_value}}",
            "directory_server_transaction_id": "{{ds_transaction_id}}",
            "directory_response_status": "Y",
            "authentication_response_status": "Y",
            "enrolled": "Y"
          },
          "gateway_specific_fields": {
            "multi_pay": {
                "vat_value": 150,
                "facility_type": "D",
                "facility_payments": "1",
                "tip_amount": 100
              }
          }
        }
}

Third-party 3D Secure 2 Authentication Data

Spreedly will automatically handle the field mapping for sending third-party 3DS2 authentication data to MultiPay.

In order to use 3DS Global & MultiPay, you will need to perform a Standalone Authentication and then transact using the authenticated token. For more information about how to use this feature, see the 3DS2 Third-party Authentication Guide.

Spreedly fields map to the relevant MultiPay fields as described in the following table.

SPREEDLY FIELDMULTIPAY FIELD
three_ds_versionthreeDsVersion
ecommerce_indicatorAuthenticationECI
authentication_valueAuthenticationValue
directory_server_transaction_idDSTransactionId