Overview
Sends a payout (withdrawal) request from the merchant system to Paramount. Payouts are deposited directly into the consumer's bank account. There are three methods of Interac payouts:
Verified Instant Payouts
This two-step method allows merchants to verify consumer bank account ownership before sending the payout request. The two steps required for this option are:
- Use the Identity Verification API to retrieve the consumer's bank account details.
- Process the payout using the INTERAC Payouts API and include the consumer's banking information that were retrieved by the Identity Verification API as described in step 1. In the
account_numberfield of the payout request, pass thefiNumber,fiTransitNumber, andfiAccountNumberfrom the Identity Verification notification, as described in theaccount_numberdescription in Payout Request parameters.
Instant Payouts to Bank Account Number
Limited to Supported Financial Institutions OnlyPayouts to bank account number is limited to participating financial institutions with INTERAC. See Payouts via ANR Supported Banks and Payout Request Parameters for more details.
Instant Payouts require the consumer's valid bank account number (account_number) to be included in the Payout Request parameters. The payout amount is immediately deposited directly into the consumer's bank account. If an incorrectly formatted account number is included in the request, error B018 is returned in the payout notification.
Payouts via INTERAC e-Transfer
If a bank account number (account_number) is not included in the payout request, and the consumer has enabled INTERAC auto-deposit, the payout amount is immediately deposited directly into the consumer's bank account via INTERAC e-Transfer.
Allow Non-Auto Deposit PayoutsTo process payouts via INTERAC e-Transfer for consumers who have not enabled auto-deposit, merchants must have their Paramount accounts configured to allow non-auto-deposit payouts. Contact your Paramount account manager for more information.
Payout Request
The payout request parameters identify the merchant and consumer and specify the details of the payout transaction. See Payouts API for request details.
| Parameter | Description |
|---|---|
| merchant_id | The 8-character merchant account ID assigned by Paramount. |
| details | The encrypted request parameters described in Payout Request parameters. |
| iv | The HEX decimal of a random 128-bit initialization vector, which should be generated by a cryptographically secure pseudo-random number generator. |
Payout Request Parameters
The parameters included in a payout request are described in Payout Request parameters.
Parameters are case sensitive.
-
Build and encode the request parameters in the
application/x-www-form-urlencodedformat.details=merchant_id=TestMerchant&merchant_sub_id=0&merchant_user_id=CUSTOMER1&merchant_txn_num=1638830336525&txn_amount=10.00&txn_currency=CAD&first_name=Test&last_name=Customer&phone_number=+16476476477&merchant_customer_email=user%40domain.com&return_url=https%3A%2F%2F[www.paramountcommerce.com&extra_field_1=Test+Transaction](http://www.paramountcommerce.com&extra_field_1=Test+Transaction)iv=8d77a05d256659fc362606f1d0483a51merchant_id=TestMerchant -
Encrypt the details URL encoded request parameter using cipher
AES-256/CBC/PKCS5Padding.details=64c4e3dbea201b2b80155376c04f8e7118a20ab745973cf487fc4892c8c6455a55738f25214e5b329bb907dd08510b7182079155a84087f1ec7c4685606c222481b20b106a72b7f960be1209f7fd4f3026fd852d6dba7b5d1c6dc655149a80891890849309a875ce1bbe02fa3dcf9208d4c7b940103e8dccbe011e49a6cb855568049ee5cf438a5babe5b30a112596d8da575bec71d30b5fe4126628aeae295aaf78b90444f515d6f5764e2ed32897467f758d952c503768eb1c8f19a069ff55d0633c966c60ecdc979652a99bea96d1e1e6f3126079cda8c323a357dfa5a162614f1959a110918a782a445ed565d0252212a4a5da2fdcc2c9bd907bb47aecaab6fad03d0627ce6629884e45ee83475678d68c0000d4a730bace0a0ad9e605c546a4310f06ae84f79df11eac5c3fce2f15d29c85d1e714e79762431bb0424bc70265079d8f7eeb2785e8220192a30016cb7d2ec220ca5cf769122c3c361408486522904a3b2bcbe6e49305b26bce5cf6c8c6858dcaf9bf9d3ef2db96101bbea4See the Interac - Merchant encrypted request recipe for instructions to do the encryption.
Example Payout Request
details=64c4e3dbea201b2b80155376c04f8e7118a20ab745973cf487fc4892c8c6455a55738f25214e5b329bb907dd08510b7182079155a84087f1ec7c4685606c222481b20b106a72b7f960be1209f7fd4f3026fd852d6dba7b5d1c6dc655149a80891890849309a875ce1bbe02fa3dcf9208d4c7b940103e8dccbe011e49a6cb855568049ee5cf438a5babe5b30a112596d8da575bec71d30b5fe4126628aeae295aaf78b90444f515d6f5764e2ed32897467f758d952c503768eb1c8f19a069ff55d0633c966c60ecdc979652a99bea96d1e1e6f3126079cda8c323a357dfa5a162614f1959a110918a782a445ed565d0252212a4a5da2fdcc2c9bd907bb47aecaab6fad03d0627ce6629884e45ee83475678d68c0000d4a730bace0a0ad9e605c546a4310f06ae84f79df11eac5c3fce2f15d29c85d1e714e79762431bb0424bc70265079d8f7eeb2785e8220192a30016cb7d2ec220ca5cf769122c3c361408486522904a3b2bcbe6e49305b26bce5cf6c8c6858dcaf9bf9d3ef2db96101bbea4&iv=d77a05d256659fc362606f1d0483a51&merchant_id=TestMerchantMerchants can refer to their INTERAC staging environment document for the specific merchant encryption key for their account.
| Parameter | Type | Min Length | Max Length | Required | Description |
|---|---|---|---|---|---|
| merchant_id | String | 8 | 8 | Yes | The 8-character merchant account ID assigned by Paramount. |
| merchant_user_id | String | 1 | 20 | Yes | The merchant-assigned unique identifier for the consumer (end user) making this transaction. This value is case-sensitive and must be consistent across all transactions for the same user. |
| merchant_sub_id | String | 0 | 3 | No | The merchant account sub ID assigned by Paramount. This parameter is used to separate reporting and notifications for merchants who process transactions for multiple websites or need to separate their traffic for other reasons. Merchants who don't have sub accounts must enter 0 (zero). |
| merchant_txn_num | String | 1 | 30 | Yes | The unique merchant-assigned transaction number that identifies the payout. |
| txn_amount | Decimal | 1 | 8 | Yes | The payout amount. The amount must be between 1.00 and 100000.00. Note: Interac Payouts are capped at 25000.00 |
| txn_currency | String | 3 | 3 | Yes | The uppercase 3-letter currency code (ISO 4217). |
| first_name | String | 1 | 30 | Yes | The consumer's first name. |
| receiver_middle_name | String | 0 | 30 | No | The receiver's (consumer's) middle name. |
| last_name | String | 1 | 30 | Yes | The consumer's last name. |
| receiver_dob | String (YYYY-MM-DD) | 10 | 10 | Yes | The receiver's (consumer's) date of birth. |
| receiver_street | String | 1 | 255 | Yes | `The receiver's (consumer's) street address. |
| receiver_street2 | String | 0 | 255 | No | The receiver's (consumer's) secondary address line. |
| receiver_city | String | 1 | 255 | Yes | The receiver's (consumer's) city. |
| receiver_province | String | 1 | 30 | Yes | The receiver's (consumer's) province or state. |
| receiver_postal_code | String | 6 | 7 | Yes | The receiver's (consumer's) postal code. |
| receiver_country | String (ISO 3166-1 alpha-2) | 2 | 2 | Yes | The receiver's (consumer's) country code. |
| receiver_citizenship | String (ISO 3166-1 alpha-2) | 2 | 2 | No | The receiver's (consumer's) citizenship. |
| account_created_on | String (YYYY-MM-DD) | 10 | 10 | No | The date the consumer's account was created on your platform. |
| phone_number | String | 10 | 10 | Yes | The consumer's mobile phone number associated with INTERAC at their bank. This is a 3-digit area code and 7-digit local phone number. |
| customer_email | String | 1 | 50 | Yes | The consumer's email address associated with INTERAC at their bank. |
| security_question | String | 1 | 40 | Conditional | Required if account_number is not provided. Must be provided together with security_answer` (both or neither); otherwise the request is rejected. A security question the consumer may answer to accept the payout. Special characters and spaces allowed. |
| security_answer | String | 6 | 25 | Conditional | Required if account_number is not provided. Must be provided together with security_question(both or neither); otherwise the request is rejected. Minimum 6 characters. The answer to the security question. Special characters and spaces not allowed. |
| qa_notification_channel | String | Conditional | When
security_question and security_answerNotification is not sent when auto-deposit is enabled. When ANR ( | ||
| originator_ip | String | 2 | 45 | Yes | The consumer's IP address used to initiate the transaction. |
| account_number | String | 5 | 34 | No | The consumer's bank account number, formatted as The first 3 digits indicate the institution number, the next 5 digits indicate the transit number, and the remaining digits (up to 24) are the bank account number. The institution number should be one INTERAC's supported institution numbers. See Payouts via ANR Supported Banks for more details. |
| extra_field_1 | String | 0 | No | This is a pass-through field and not recorded by Paramount. This field can be used by merchants who want an extra parameter sent back to them in the payment notification to uniquely identify the transaction or consumer. | |
| sender_first_name | String | 1 | 30 | Conditional | The sender's first name. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_middle_name | String | 0 | 30 | No | The sender's middle name. |
| sender_last_name | String | 1 | 30 | Conditional | The sender's last name. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_dob | String (YYYY-MM-DD) | 10 | 10 | Conditional | The sender's date of birth. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_street | String | 1 | 255 | Conditional | The sender's street address. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_street2 | String | 0 | 255 | No | The sender's secondary address line. |
| sender_city | String | 1 | 255 | Conditional | The sender's city. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_province | String | 1 | 30 | Conditional | The sender's province or state. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_postal_code | String | 1 | 20 | Conditional | The sender's postal or ZIP code. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_country | String (ISO 3166-1 alpha-2) | 2 | 2 | Conditional | The sender's country code. Required if enabled on your merchant account (e.g. remittance merchant). |
| sender_citizenship | String (ISO 3166-1 alpha-2) | 2 | 2 | No | The sender's citizenship. |
| sender_reference_number | String | 1 | 255 | Conditional | The sender's reference account number in your records. Required if enabled on your merchant account (e.g. remittance merchant). |
- A
"-"in the "Max Length" column represents infinite length (i.e., no maximum length for that field).
INTERAC Payout Security Questions and Answers
Security question and answer are optional. When a consumer does not have INTERAC auto-deposit enabled, their bank will prompt them to provide a security answer before they can accept a payout. You can handle this in two ways:
Option 1 — Merchant-supplied Q&A
You provide the security question and answer in the request and attach it to the request.
Option 2 — System-generated code
Omit security_question and security_answer and set qa_notification_channel to sms or email. Paramount generates a 6-digit code and sends it to the consumer via the chosen channel so they can accept the transfer. You must supply the consumer’s email or phone as appropriate for the chosen channel.
If you provide account_number, the payout uses account-number routing and security Q&A are not used (regardless of where the question or answer are generated). To process payouts to consumers who do not have auto-deposit enabled, your Paramount account must be configured to allow non–auto-deposit payouts.
INTERAC e-Transfer Security Questions Requirements if non paramount generated
- Security questions must be between 6 and 40 characters. Answers must be between 6 and 25 characters.
- Recommended security questions and answers are included in the INTERAC Brand Requirements page.
- The
security_questionandsecurity_answerfields will only be used if theaccount_numberfield is not included in the payout request.
Payout Response
Immediately after the payout request is received by Paramount, a payout response is sent to the merchant system to confirm that the request was received.
Payout Response Parameters
The payout response includes the transaction status (pending) and any applicable payout request errors.
Information about the final outcome of the payout request isn't included in the payout response but is provided in the payout notification.
| Parameter | Type | Size | Required | Description |
|---|---|---|---|---|
| txn_num | String | 30 | Yes | The unique transaction number created by Paramount. |
| merchant_txn_num | String | 30 | Yes | The unique merchant-assigned transaction number that identifies the payout. |
| txn_amount | Decimal | (7.2) | Yes | The payout amount. The amount must be between 1.00 and 99999.99. |
| txn_fee | Decimal | (6.2) | Yes | The transaction fee payable by the merchant. |
| txn_status | String | 1 | Yes | The status of the payout request.
|
| routing_decision | String | Conditional | If EFT routing is enabled on your account, it provides the routing decision for an Interac Payout.
| |
| routing_decision_reason | String | Conditional | If EFT routing is enabled on your account, it provides the routing decision reason for an Interac Payout. Routing decision reason will be provided if therouting_decision was EFT.
| |
| error_code | String | 4 | No | If the payout request fails, the error code is included in the payout response. See Payout Request Error Codes. |
Example Payout Response
{
"txn_num": "20250320120107694724062313",
"merchant_txn_num": "usr_12345",
"txn_amount": "30.00",
"txn_fee": "0.0",
"txn_status": "P",
"routing_decision": "EFT",
"routing_decision_reason": "unsupported_institution",
"error_code": null
}Payout Notification
After Paramount processes the payout request, it sends a payout notification to the transaction notification URL specified by the merchant during the system integration.
When Paramount receives a payment request, we immediately forward these requests to Interac through our financial institutions. However, it's important to note that Interac does not guarantee a specific expiration time; instead, it operates based on the number of seconds following the request's creation, which Paramount has set to 7 days (604800 seconds). While we strive for timely updates, we cannot assure that a payment will expire precisely at the moment of creation, although it should typically occur within a few seconds.
EFT Routed Payout NotificationsPayout notifications for EFT routed transactions are typically sent within 24 hours of submission on business days. Transactions submitted on weekends or Canadian statutory holidays will have notifications sent on the next business day.
EFT settlement timing may vary based on cut-off times, transaction type, and the recipient’s financial institution. While same-day settlement is possible, it’s not guaranteed. Notifications reflect processing status, not final settlement.
Payout Notification Parameters
The payout notification includes the same parameters included in the payout request, plus the final transaction status and any applicable error codes.
The parameters included in the payout notification may not be in the same order shown in this document.
| Parameter | Type | Size | Required | Description |
|---|---|---|---|---|
| user_id | String | 30 | No | The consumer user ID used in the Paramount system. For failed transactions, this field is blank. |
| txn_num | String | 30 | Yes | The unique transaction number created by Paramount. |
| txn_type | String | 1 | Yes | The transaction type. F: Payout |
| merchant_id | String | 8 | Yes | The 8-character merchant account ID assigned by Paramount. |
| merchant_user_id | String | 20 | Yes | The merchant-assigned unique consumer user ID. |
| merchant_txn_num | String | 30 | Yes | The unique merchant-assigned transaction number that identifies the payout. |
| txn_amount | Decimal | (7.2) | Yes | The payout amount. The amount must be between 1.00 and 99999.99. |
| txn_currency | String | 3 | Yes | CAD |
| txn_fee | Decimal | (6.2) | Yes | The transaction fee payable by the merchant. |
| txn_status | String | 1 | Yes | The status of the payout request.
|
| error_code | String | 4 | No | If the payout fails, the error code is included in the payout notification. See Payout Result Error Codes. |
Example Payout Notification
{
"txn_num": "20210218134422846368000000",
"merchant_user_id": "usr_12345",
"txn_fee": "0.00",
"txn_currency": "CAD",
"user_id": "1613383943978-PSGEO06F",
"txn_type": "F",
"merchant_txn_num": "abc12345",
"error_code": "",
"merchant_id": "SmplMcht",
"txn_amount": "40.00",
"txn_status": "S"
}Payout Errors
If a payout can't be completed successfully, there are two types of codes that may be included in the error_code field in the payout notification: Payout request error codes and Payout result error codes.
Payout Request Error Codes
Payout request errors are caused by missing or invalid parameters in the request. These error codes begin with B.
| Code | Description |
|---|---|
| B001 | Invalid or missing merchant account ID (merchant_id). |
| B002 | Generic error. |
| B003 | Invalid merchant sub account ID (merchant_sub_id). |
| B004 | Invalid or missing merchant assigned consumer user ID (merchant_user_id). |
| B005 | Invalid or missing merchant transaction number (merchant_txn_num). |
| B006 | Duplicate merchant transaction number (merchant_txn_num). |
| B007 | Invalid or missing transaction amount (txn_amt). |
| B008 | Invalid or missing currency code (txn_currency). |
| B009 | Invalid or missing first name (first_name). |
| B010 | Invalid or missing last name (last_name). |
| B011 | Invalid or missing consumer email (customer_email). |
| B012 | Invalid or missing phone number (phone_number). |
| B013 | Invalid or missing security question (security_question). Required if account_number is not provided. |
| B014 | Invalid or missing security answer (security_answer). Required if account_number is not provided. |
| B015 | Invalid or missing originator IP (originator_ip). |
| B016 | The consumer withdrawal transaction exceeds the per transaction limit. |
| B017 | The transaction is declined to avoid overdraft from the merchant account. The INTERAC merchant account balance must be sufficient to cover the withdrawal amount. |
| B018 | Invalid account number (account_number). |
| B019 | Institution is not supported in account number (account_number). |
| B020 | Invalid or missing Receiver Date of Birth (receiver_dob). |
| B021 | Invalid Receiver Middle Name (receiver_middle_name). |
| B022 | Invalid or missing Receiver Street Address (receiver_street). |
| B023 | Invalid Receiver Street Address (receiver_street2). |
| B024 | Invalid or missing Receiver City (receiver_city). |
| B025 | Invalid or missing Receiver Province (receiver_province). |
| B026 | Invalid or missing Receiver Postal Code (receiver_postal_code). |
| B027 | Invalid or missing Receiver Country (receiver_country). |
| B028 | Invalid Receiver Citizenship (receiver_citizenship). |
| B029 | Invalid or missing Sender Date of Birth (sender_dob). |
| B030 | Invalid or missing Sender First Name (sender_first_name). |
| B031 | Invalid Sender Moddle Name (sender_middle_name). |
| B032 | Invalid or missing Sender Last Name (sender_last_name). |
| B033 | Invalid or missing Sender Street Address (sender_street). |
| B034 | Invalid Sender Street Address (sender_street2). |
| B035 | Invalid or missing Sender City (sender_city). |
| B036 | Invalid or missing Sender Province (sender_province). |
| B037 | Invalid or missing Sender Postal Code (sender_postal_code). |
| B038 | Invalid or missing Sender Country (sender_country). |
| B039 | Invalid Sender Citizenship (sender_citizenship). |
| B040 | Invalid or missing Sender Reference Account Number (sender_reference_number). |
| B041 | Invalid Account Created On Date (account_created_on). |
| B042 | Invalid qa notification channel (qa_notification_channel). |
Payout Result Error Codes
If a payout can't be completed successfully, the relevant error code is included in the payout notification.
| Code | Definition |
|---|---|
| P001 | Failed IP validation. |
| P002 | Suspicious or fraudulent payment history by the consumer. |
| P003 | Suspicious or negative information on the consumer identity. |
| P004 | Suspicious or fraudulent information on the consumer device / IP address. |
| P005 | Negative information on the bank account. |
| P006 | Generic system error. |
| P007 | Risk management error. |
| P008 | Invalid INTERAC phone number provided by the consumer. |
| P009 | Invalid INTERAC email provided by the consumer. |
| P010 | Returned in any of these scenarios:
|
| P011 | Payout has auto-expired before the user could accept. |
