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, the payout is sent via INTERAC e-Transfer:
- Consumer has INTERAC auto-deposit enabled: the payout amount is deposited directly into the consumer's bank account. No security question or answer is used.
- Consumer does not have auto-deposit enabled: the consumer must answer a security question to accept the transfer. You can either supply the question and answer yourself, or omit them and have Paramount generate them and notify the consumer by SMS or email. See INTERAC Payout Security Questions and Answers.
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 0.01 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 | 40 | Conditional | The consumer's first name. Not required if business_name is present. |
| receiver_middle_name | String | 0 | 30 | No | The receiver's (consumer's) middle name. |
| last_name | String | 1 | 40 | Conditional | The consumer's last name. Not required if business_name is present. |
| business_name | String | 1 | 255 | Conditional | Name of the business receiving the payment. first_name and last_name are ignored if business name is present. business_name is not required if first_name & last_name are provided. |
| 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 | Only used when A security question the consumer answers to accept the payout. Special characters and spaces allowed. Must be sent together with |
| security_answer | String | 6 | 25 | Conditional | Only used when The answer to Must be sent together with |
| qa_notification_channel | String | Conditional | Required when
security_question and security_answer, and ignored when account_number is provided (account-number routing takes priority).No notification is sent when the consumer has INTERAC auto-deposit enabled, because no security answer is needed to accept the payout. | ||
| 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
When a consumer does not have INTERAC auto-deposit enabled, their bank prompts them for a security answer before they can accept the payout. The security question and answer are optional in the payout request — you choose who supplies them:
| Option | What you send | What happens |
|---|---|---|
| Merchant-supplied Q&A | security_question and security_answer | Your question and answer are attached to the e-Transfer. qa_notification_channel is ignored — you are responsible for communicating the answer to the consumer. |
| Paramount-generated Q&A | Neither security_question nor security_answer, plus qa_notification_channel set to sms or email | Paramount generates the question and a 6-digit answer, and sends the answer to the consumer's phone_number (sms) or customer_email (email) so they can accept the transfer. |
security_question and security_answer must be sent together — sending only one rejects the request.
When security Q&A is not used
- Account-number payouts: if you provide
account_number, the payout uses account-number routing.security_question,security_answer, andqa_notification_channelare all ignored.- Auto-deposit consumers: if the consumer has INTERAC auto-deposit enabled, the funds deposit automatically. No security answer is required and no notification is sent.
Requirements for merchant-supplied questions and answers
- 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.
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. |
| interac_reference_num | String | 16 | No | If enabled on your account, the reference number used to track and identify individual Interac transactions |
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 security question (security_question), or it was sent without security_answer. |
| B014 | Invalid security answer (security_answer), or it was sent without security_question. |
| 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 or missing QA notification channel (qa_notification_channel). Required when account_number, security_question, and security_answer are all omitted. |
| B043 | Invalid business name (business_name) |
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. |

