Moneris gateway guide

Additional notes
Some merchant accounts require an additional parameter to send a CVV. See the section below if this applies to your Moneris account.

Using Visa and Mastercard cards retained with Spreedly falls under Stored Credentials regulations.

Adding a Moneris gateway

To add a Moneris gateway:

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>moneris</gateway_type>
        <store_id>MyStoreId</store_id>
        <api_token>MyApiToken</api_token>
      </gateway>'
<gateway>
  <token>3piqSh8nzBCYkjeim91QUVGrrJM</token>
  <gateway_type>moneris</gateway_type>
  <name>Moneris</name>
  <description nil="true"/>
  <merchant_profile_key nil="true"/>
  <sub_merchant_key nil="true"/>
  <store_id>MyStoreId</store_id>
  <characteristics>
    <supports_purchase type="boolean">true</supports_purchase>
    <supports_authorize type="boolean">true</supports_authorize>
    <supports_capture type="boolean">true</supports_capture>
    <supports_credit type="boolean">true</supports_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">true</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_populate_mit_fields type="boolean">false</supports_populate_mit_fields>
    <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>
    <supports_stored_credentials type="boolean">true</supports_stored_credentials>
  </characteristics>
  <credentials>
    <credential>
      <name>store_id</name>
      <value>MyStoreId</value>
    </credential>
  </credentials>
  <gateway_settings>
    <cvv_enabled nil="true"/>
    <avs_enabled nil="true"/>
  </gateway_settings>
  <gateway_specific_fields>
    <gateway_specific_field>issuer_id</gateway_specific_field>
    <gateway_specific_field>payment_indicator</gateway_specific_field>
    <gateway_specific_field>payment_information</gateway_specific_field>
  </gateway_specific_fields>
  <payment_methods>
    <payment_method>credit_card</payment_method>
    <payment_method>apple_pay</payment_method>
    <payment_method>google_pay</payment_method>
  </payment_methods>
  <state>retained</state>
  <redacted type="boolean">false</redacted>
  <sandbox type="boolean">false</sandbox>
  <mode>default</mode>
  <created_at type="dateTime">2023-06-06T17:09:35Z</created_at>
  <updated_at type="dateTime">2023-06-06T17:09:35Z</updated_at>
</gateway>

Sending CVV

When setting up a new gateway connection, “nil” is the default setting when cvv_enabled isn’t explicitly defined.

Some Moneris accounts are configured such that they do not allow a CVV to be passed to them unless this value is set to true. If that is the case for your account, you can pass the extra boolean parameter cvv_enabled when adding the gateway. If you wish to never send the CVV for transactions, you can set cvv_enabled as false.

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>moneris</gateway_type>
        <store_id>MyStoreId</store_id>
        <api_token>MyApiToken</api_token>
        <cvv_enabled>true</cvv_enabled>
      </gateway>'
<gateway>
  <token>8Np67AaWfPJcCPPtCysiwUGPypQ</token>
  <gateway_type>moneris</gateway_type>
  <name>Moneris</name>
  <description nil="true"/>
  <merchant_profile_key nil="true"/>
  <sub_merchant_key nil="true"/>
  <store_id>MyStoreId</store_id>
  <characteristics>
    <supports_purchase type="boolean">true</supports_purchase>
    <supports_authorize type="boolean">true</supports_authorize>
    <supports_capture type="boolean">true</supports_capture>
    <supports_credit type="boolean">true</supports_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">true</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_populate_mit_fields type="boolean">false</supports_populate_mit_fields>
    <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>
    <supports_stored_credentials type="boolean">true</supports_stored_credentials>
  </characteristics>
  <credentials>
    <credential>
      <name>store_id</name>
      <value>MyStoreId</value>
    </credential>
  </credentials>
  <gateway_settings>
    <cvv_enabled>true</cvv_enabled>
    <avs_enabled nil="true"/>
  </gateway_settings>
  <gateway_specific_fields>
    <gateway_specific_field>issuer_id</gateway_specific_field>
    <gateway_specific_field>payment_indicator</gateway_specific_field>
    <gateway_specific_field>payment_information</gateway_specific_field>
  </gateway_specific_fields>
  <payment_methods>
    <payment_method>credit_card</payment_method>
    <payment_method>apple_pay</payment_method>
    <payment_method>google_pay</payment_method>
  </payment_methods>
  <state>retained</state>
  <redacted type="boolean">false</redacted>
  <sandbox type="boolean">false</sandbox>
  <mode>default</mode>
  <created_at type="dateTime">2023-06-06T17:10:28Z</created_at>
  <updated_at type="dateTime">2023-06-06T17:10:28Z</updated_at>
</gateway>

Turning on AVS

Some Moneris accounts are configured such that AVS Checking will be done. If you’d like to perform such checking, you can pass the extra boolean parameter avs_enabled when adding the gateway:

curl https://core.spreedly.com/v1/gateways.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<gateway>
        <gateway_type>moneris</gateway_type>
        <store_id>MyStoreId</store_id>
        <api_token>MyApiToken</api_token>
        <avs_enabled>true</avs_enabled>
      </gateway>'
<gateway>
  <token>T625Ln9dox07cH2pKghIEjeOn4Q</token>
  <gateway_type>moneris</gateway_type>
  <name>Moneris</name>
  <description nil="true"/>
  <merchant_profile_key nil="true"/>
  <sub_merchant_key nil="true"/>
  <store_id>MyStoreId</store_id>
  <characteristics>
    <supports_purchase type="boolean">true</supports_purchase>
    <supports_authorize type="boolean">true</supports_authorize>
    <supports_capture type="boolean">true</supports_capture>
    <supports_credit type="boolean">true</supports_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">true</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_populate_mit_fields type="boolean">false</supports_populate_mit_fields>
    <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>
    <supports_stored_credentials type="boolean">true</supports_stored_credentials>
  </characteristics>
  <credentials>
    <credential>
      <name>store_id</name>
      <value>MyStoreId</value>
    </credential>
  </credentials>
  <gateway_settings>
    <cvv_enabled nil="true"/>
    <avs_enabled>true</avs_enabled>
  </gateway_settings>
  <gateway_specific_fields>
    <gateway_specific_field>issuer_id</gateway_specific_field>
    <gateway_specific_field>payment_indicator</gateway_specific_field>
    <gateway_specific_field>payment_information</gateway_specific_field>
  </gateway_specific_fields>
  <payment_methods>
    <payment_method>credit_card</payment_method>
    <payment_method>apple_pay</payment_method>
    <payment_method>google_pay</payment_method>
  </payment_methods>
  <state>retained</state>
  <redacted type="boolean">false</redacted>
  <sandbox type="boolean">false</sandbox>
  <mode>default</mode>
  <created_at type="dateTime">2023-06-06T17:11:12Z</created_at>
  <updated_at type="dateTime">2023-06-06T17:11:12Z</updated_at>
</gateway>

To learn more about creating and managing gateways in our Marketplace, review the Gateway user guide. For gateways not included in the Marketplace, review the steps below.

Create a gateway

Visit your Connections area to review all gateways and add new ones. When creating your gateways, select the gateway name and authentication mode (if prompted) before completing required fields. Select ☑️Sandbox to create a gateway in Sandbox mode, for processing test card data and transactions in your Spreedly environment.

Supply your store_id and api_token to create a Moneris gateway. If you plan to turn on AVS or send CVV, pass the booleans as described above before you save your new gateway.

Gateway specific fields

When interacting with a Moneris gateway to run transactions, there are a number of gateway specific fields you can specify. See the details below the example for more information on each field.

curl https://core.spreedly.com/v1/gateways/LlkjmEk0xNkcWrNixXa1fvNoTP4/purchase.xml \
  -u 'C7cRfNJGODKh4Iu5Ox3PToKjniY:4UIuWybmdythfNGPqAqyQnYha6s451ri0fYAo4p3drZUi7q2Jf4b7HKg8etDtoKJ' \
  -H 'Content-Type: application/xml' \
  -d '<transaction>
        <payment_method_token>56wyNnSmuA6CWYP7w0MiYCVIbW6</payment_method_token>
        <amount>100</amount>
        <currency_code>USD</currency_code>
        <gateway_specific_fields>
          <moneris>
            <issuer_id>123</issuer_id>
            <payment_indicator>C</payment_indicator>
            <payment_information>0</payment_information>
            <cust_id>12345</cust_id>
          </moneris>
        </gateway_specific_fields>
      </transaction>'

issuer_id, payment_indicator, and payment_information are related to stored credentials transactions.

Stored credential gateway specific fields

A Moneris gateway supports our standardized Stored Credential Data fields. However, we also allow a few gateway specific fields related to Stored Credentials to be specified, which will override the default Stored Credential Data fields. These fields are issuer_id, payment_indicator, and payment_information. The overrides occur individually; for example, you could pass in a payment_indicator of Z, but use the default fields for everything else.

Gateway specific response fields

A response from Moneris gateway may contain a specific field which you can find in the gateway_specific_response_fields. For example:

<transaction>
  <token>LgpTNGjsWQs9DwdxcbreUVz0R8p</token>
  <transaction_type>Purchase</transaction_type>
  <gateway_specific_response_fields>
     <moneris>
       <issuer_id>123</issuer_id>
       <auth_code>12AB12AB</auth_code>
     </moneris>
  </gateway_specific_response_fields>
</transaction>

issuer_id is used for Stored Credentials transactions. Note that it will only be returned if the issuer_id gateway specific field is sent as an empty string.

To request any gateway_specific_fields or gateway_specific_response_fields, please contact Support with your request and the gateway documentation for the fields of interest.