Interac
Accept Interac payments in your online store.
Interac is a trusted and widely used payment network in Canada that allows secure, direct bank transfers for online payments and payouts. Integrate Interac using the emerchantpay API across supported payment platforms.
Payment types and use cases
emerchantpay supports both pay-ins and payout options through the Genesis gateway. Below are the supported Interac payment methods:
Payment Type | Use Case | Description | Supported Country | Supported Currency |
---|---|---|---|---|
Pay-ins | Customer deposits to you. | Allows your customers to deposit funds into your account. | Canada | CAD |
Interac e-Transfer Outbound (RTO) | Payouts to customers in real time. | Real-time transfer of funds to your customers using Interac e-Transfer. | Canada | CAD |
eCashout Payouts (ACH) | Scheduled payouts to your customers. | Automated bank-to-bank deposits for secure, scheduled payouts. | Canada | CAD |
Prerequisites
Before integrating Interac payments, ensure you have:
- An emerchantpay merchant account. If you don’t have one, apply here.
- API credentials provided by your emerchantpay Account Manager.
- A development team familiar with:
- Web programming languages
- HTTP methods in XML and JSON formats
- UTF-8 encoding
- The Genesis SDK (optional but recommended) for easier integration.
- If using the Web Payment Form (WPF) instead of API integration, contact your Account Manager to enable it and refer to the WPF API documentation.
Integrate Pay-ins
Pay-ins 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 | Required | Example | Description |
---|---|---|---|
transaction_type |
✅ Yes |
bank_payout |
Specifies the type of transaction performed. |
bank_code |
✅ Yes |
CPI |
Identifies the banking method used. |
user_id |
✅ Yes |
user12345 |
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. |
For additional parameters and advanced configuration, refer to the full API documentation.
Example Pay-in request
<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 Pay-in response:
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.
Integrate Interac e-Transfer Outbound Pay-outs
Interac e-Transfer Outbound Payouts allow 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 Payout transaction:
Parameter | Required | Example | Description |
---|---|---|---|
transaction_type |
✅ Yes |
bank_payout |
Specifies the type of transaction performed. |
bank_name |
✅ Yes |
Interac e-Transfer Outbound Payout |
Specifies the name of the bank for the payout. |
user_id |
✅ Yes |
user12345 |
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. |
For additional parameters and advanced configuration, refer to the full API documentation.
Example Interac e-Transfer Outbound Payout request:
<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 Interac e-Transfer Outbound Payout response:
<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>
Integrate eCashout Pay-outs
The eCashout Payout 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 Payout 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 eCashout Payout request:
<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 eCashout Payout response:
<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.