Interac

Accept Interac payments in your online store.


Interac is a secure, efficient, and widely used payment network in Canada that allows seamless bank transfers for online payments and payouts. Integrate Interac seamlessly using the emerchantpay API across the supported payment platforms.

Payment Type Description Use Case Supported Country Supported Currency
Pay-ins Allows your customers to deposit funds into your account. Customer deposits to you. Canada CAD
Interac e-Transfer Outbound (RTO) Real-time transfer of funds to your customers using Interac e-Transfer. Payouts to customers in real time. Canada CAD
eCashout Payouts (ACH) Automated bank-to-bank deposits for secure, scheduled payouts to your customers. Scheduled payouts to your customers. Canada CAD


Prerequisites

Payment types and integrations

emerchantpay supports both Interac pay-in and payout options through its Genesis gateway. Below are the details and steps for integrating each type:


Pay-ins

Payins allows your customers to deposit funds into your account quickly and securely through trusted banking methods. Below is a reference table highlighting the key parameters required to initiate an Interac Pay-in transaction:

Parameter Description Example Required
transaction_type Specifies the type of transaction being performed. bank_payout Yes
bank_code Identifies the specific banking method being used for the transaction. CPI Yes
user_id A unique user identifier defined by you in your system. It can be an ID, username, hash, or other unique value. It must remain consistent for the same user across all transactions. user12345 Yes

For additional parameters and advanced configuration, refer to the full API documentation.

Example Request for Pay-ins:

<payment_transaction>
   <transaction_type>online_banking</transaction_type>
   <transaction_id>ir_s2s_cad1737665628</transaction_id>
   <remote_ip>52.31.190.191</remote_ip>
   <amount>5000</amount>
   <currency>CAD</currency>
   <usage>test</usage>
   <customer_email>travis@example.com</customer_email>
   <customer_phone>2143547658</customer_phone>
   <notification_url>https://example.com/notification_url</notification_url>
   <return_success_url>https://example.com/return_success_url</return_success_url>
   <return_failure_url>https://example.com/return_failure_url</return_failure_url>
   <return_pending_url>https://example.com/return_pending_url</return_pending_url>
   <billing_address>
      <first_name>Travis</first_name>
      <last_name>Pastrana</last_name>
      <address1>Muster Str. 12</address1>
      <zip_code>10178</zip_code>
      <city>Toronto</city>
      <state>ON</state>
      <country>CA</country>
   </billing_address>
   <risk_params>
      <session_id>96ad031e6ab0d6ffee8946416a580ea4</session_id>
   </risk_params>
   <bank_code>CPI</bank_code>
   <virtual_payment_address/>
   <payment_type>online_banking</payment_type>
   <consumer_reference/>
   <user_id>123456789</user_id>
</payment_transaction>

Example Response for Pay-ins:

You will receive a Success or Error response to your payment request.

<payment_response>
   <transaction_type>online_banking</transaction_type>
   <status>pending_async</status>
   <unique_id>d6b998c33ba3d983f747efefebefb8bd</unique_id>
   <transaction_id>ir_s2s_cad1737665628</transaction_id>
   <technical_message>TESTMODE: No real money will be transferred!</technical_message>
   <message>TESTMODE: No real money will be transferred!</message>
   <redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/d6b998c33ba3d983f747efefebefb8bd</redirect_url>
   <mode>test</mode>
   <timestamp>2025-01-23T20:53:48Z</timestamp>
   <descriptor>test online banking</descriptor>
   <amount>5000</amount>
   <currency>CAD</currency>
   <sent_to_acquirer>false</sent_to_acquirer>
   <bank_code>CPI</bank_code>
   <payment_type>online_banking</payment_type>
   <user_id>123456789</user_id>
</payment_response>


Interac e-Transfer Outbound Pay-out

Interac e-Transfer Outbound allows you to transfer funds to your customers in real time. Below is a reference table highlighting the key parameters required to initiate an Interac e-Transfer Outbound Pay-out transaction:

Parameter Description Example Required
transaction_type Specifies the type of transaction being performed. bank_payout Yes
bank_name Specifies the name of the bank for the payout. Interac e-Transfer Outbound Pay-out Yes
user_id A unique user identifier defined by you in your system. It can be an ID, username, hash, or other unique value. It must remain consistent for the same user across all transactions. user12345 Yes

For additional parameters and advanced configuration, refer to the full API documentation.

Example Request for Interac e-Transfer Outbound Pay-out:

<payment_transaction>
   <transaction_type>bank_payout</transaction_type>
   <transaction_id>ir_wpf_inr_1737665822</transaction_id>
   <remote_ip>95.42.222.78</remote_ip>
   <amount>1000</amount>
   <currency>CAD</currency>
   <usage>test</usage>
   <notification_url>https://example.com/notification_url</notification_url>
   <return_success_url>https://example.com/return_success_url</return_success_url>
   <return_failure_url>https://example.com/return_failure_url</return_failure_url>
   <return_pending_url>https://example.com/return_pending_url</return_pending_url>
   <customer_email>travis@example.com</customer_email>
   <customer_phone>1111111111</customer_phone>
   <billing_address>
      <first_name>Travis</first_name>
      <last_name>Pastrana</last_name>
      <address1>Muster Str. 12</address1>
      <zip_code>10178</zip_code>
      <city>Toronto</city>
      <state>ON</state>
      <country>CA</country>
   </billing_address>
   <risk_params>
      <session_id>0580738ab43807ebfb4926f9c4a5b07a</session_id>
   </risk_params>
   <bank_name>Interac e-Transfer Outbound Pay-out</bank_name>
   <user_id>45678</user_id>
</payment_transaction>

Example Response for Interac e-Transfer Outbound Pay-out:

<payment_response>
   <transaction_type>bank_payout</transaction_type>
   <status>pending_async</status>
   <unique_id>5326ac142e0225643d51c36df028adac</unique_id>
   <transaction_id>ir_wpf_inr_1737665822</transaction_id>
   <technical_message>TESTMODE: No real money will be transferred!</technical_message>
   <message>TESTMODE: No real money will be transferred!</message>
   <redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/5326ac142e0225643d51c36df028adac</redirect_url>
   <mode>test</mode>
   <timestamp>2025-01-23T20:57:02Z</timestamp>
   <descriptor>test online banking</descriptor>
   <amount>1000</amount>
   <currency>CAD</currency>
   <sent_to_acquirer>false</sent_to_acquirer>
</payment_response>


eCashout Pay-out

The eCashout Pay-out option allows you to transfer funds directly to a customer’s bank account. Below is a reference table highlighting the key parameters required to initiate an eCashout Pay-out transaction:

Parameter Description Example Required
transaction_type Specifies the transaction type. bank_payout Yes
bank_name Specifies the type of bank payout. eCashout Pay-out Yes
bank_account_number The customer’s bank account transit number. 1234567890 Yes
account_id The customer’s bank account number. 76484475687 Yes

For additional parameters and advanced configuration, refer to the full API documentation.

Example Request for eCashout Pay-out:

<payment_transaction>
   <transaction_type>bank_payout</transaction_type>
   <transaction_id>ir_wpf_inr_1737667884</transaction_id>
   <remote_ip>52.31.190.191</remote_ip>
   <amount>100</amount>
   <currency>CAD</currency>
   <usage>test</usage>
   <notification_url>https://example.com/notification_url</notification_url>
   <return_success_url>https://example.com/return_success_url</return_success_url>
   <return_failure_url>https://example.com/return_failure_url</return_failure_url>
   <return_pending_url>https://example.com/return_pending_url</return_pending_url>
   <customer_email>travis@example.com</customer_email>
   <customer_phone>25443677901</customer_phone>
   <billing_address>
      <first_name>Travis</first_name>
      <last_name>Pastrana</last_name>
      <address1>Muster Str. 12</address1>
      <zip_code>10178</zip_code>
      <city>Toronto</city>
      <state>ON</state>
      <country>CA</country>
   </billing_address>
   <risk_params>
      <session_id>d1e1d877d87874dafc5d38aece346c23</session_id>
   </risk_params>
   <bank_name>eCashout Pay-out</bank_name>
   <bank_account_number>1234567890</bank_account_number>
   <account_id>76484475687</account_id>
</payment_transaction>

Example Response for eCashout Pay-out:

<payment_response>
   <transaction_type>bank_payout</transaction_type>
   <status>pending_async</status>
   <unique_id>4ec1830f619ff1a3711c76ba736e1844</unique_id>
   <transaction_id>ir_wpf_inr_1737667884</transaction_id>
   <bank_account_number>1234567890</bank_account_number>
   <technical_message>TESTMODE: No real money will be transferred!</technical_message>
   <message>TESTMODE: No real money will be transferred!</message>
   <redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/4ec1830f619ff1a3711c76ba736e1844</redirect_url>
   <mode>test</mode>
   <timestamp>2025-01-23T21:31:24Z</timestamp>
   <descriptor>test online banking</descriptor>
   <amount>100</amount>
   <currency>CAD</currency>
   <sent_to_acquirer>false</sent_to_acquirer>
</payment_response>

Asynchronous notification

Interac transactions are processed asynchronously. After your customer authorises the payment, the result is sent via HTTP POST to the notification_url you provided in the request.

Example of a notification for an Interac transaction:

{
  “transaction_id”: “f44f2856b5d933c04f42d1e922e30cbf”,
  “unique_id”: “832eb553eba838f79113167cbc1002a1”,
  “transaction_type”: “online_banking”,
  “status”: “approved”,
  “signature”: “b74ed54d95589fce6f9d7a229b225fd4a925e9bc”,
  “amount”: “5000”,
  “currency”: “CAD”
}

Verify the notification’s validity using the signature field:

signature = SHA-1(<unique_id><API password>)

Example of a Confirmation Reply:

<?xml version=”1.0″ encoding=”UTF-8″?>
<notification_echo>
  <unique_id>832eb553eba838f79113167cbc1002a1</unique_id>
</notification_echo>


Test your integration

Before accepting live payments, test your integration in the emerchantpay staging environment:

  1. Add an item to your cart in your online store.
  2. Proceed to the checkout and select Interac as the payment method.
  3. Follow the redirect link and simulate the payment.
  4. Verify the payment in the Genesis Dashboard.


Accept live payments

After successful testing, contact your Account Manager to get credentials for the production environment. Update your integration with the production API credentials and URLs to start accepting live payments. You are now ready to accept Interac payments in your online store.