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
To proceed with this solution, you must have an emerchantpay merchant account. Apply for a merchant account by filling out and submitting this contact form.
You will be assigned an emerchantpay Account Manager, who will provide you with credentials and assist you with any of emerchantpay’s payment solutions.To integrate with Interac, connect to the emerchantpay Genesis gateway using the emerchantpay API. To integrate with Interac, connect to the emerchantpay Genesis gateway using the emerchantpay API. You should have a working knowledge of:
- Web programming languages
- HTTP methods in XML and JSON formats
- UTF8 encoding
For a solution that requires less development overhead, accept Interac payments through the emerchantpay Web Payment Form (WPF). Contact your Account Manager and tell them you want to accept Interac through the WPF, and refer to the WPF API.
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>
- Use your staging environment credentials to test your integration before moving to production.
- Once you are ready to accept live payments, switch to your production credentials and URLs.
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>
redirect_url
to redirect your customer to authorise the payment with Interac. See the emerchantpay API for the complete list of Interac response parameters and code samples.
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>
status
field provides you with information on the outcome of the transaction. See Transaction States for more information about transaction statuses.
Test your integration
Before accepting live payments, test your integration in the emerchantpay staging environment:
- Add an item to your cart in your online store.
- Proceed to the checkout and select Interac as the payment method.
- Follow the redirect link and simulate the payment.
- Verify the payment in the Genesis Dashboard.