Payouts

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:

  1. Verified Instant Payouts
  2. Instant Payouts to Bank Account Number
  3. Payouts via INTERAC e-Transfer

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:

  1. Use the Identity Verification API to retrieve the consumer's bank account details.
  2. 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_number field of the payout request, pass the fiNumber, fiTransitNumber, and fiAccountNumber from the Identity Verification notification, as described in the account_number description in Payout Request parameters.

Instant Payouts to Bank Account Number

❗️

Limited to Supported Financial Institutions Only

Payouts 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 Payouts

To 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.

ParameterDescription
merchant_idThe 8-character merchant account ID assigned by Paramount.
detailsThe encrypted request parameters described in Payout Request parameters.
ivThe 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.

  1. Build and encode the request parameters in the application/x-www-form-urlencoded format.

    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=8d77a05d256659fc362606f1d0483a51
    merchant_id=TestMerchant
  2. Encrypt the details URL encoded request parameter using cipher AES-256/CBC/PKCS5Padding.

    details=64c4e3dbea201b2b80155376c04f8e7118a20ab745973cf487fc4892c8c6455a55738f25214e5b329bb907dd08510b7182079155a84087f1ec7c4685606c222481b20b106a72b7f960be1209f7fd4f3026fd852d6dba7b5d1c6dc655149a80891890849309a875ce1bbe02fa3dcf9208d4c7b940103e8dccbe011e49a6cb855568049ee5cf438a5babe5b30a112596d8da575bec71d30b5fe4126628aeae295aaf78b90444f515d6f5764e2ed32897467f758d952c503768eb1c8f19a069ff55d0633c966c60ecdc979652a99bea96d1e1e6f3126079cda8c323a357dfa5a162614f1959a110918a782a445ed565d0252212a4a5da2fdcc2c9bd907bb47aecaab6fad03d0627ce6629884e45ee83475678d68c0000d4a730bace0a0ad9e605c546a4310f06ae84f79df11eac5c3fce2f15d29c85d1e714e79762431bb0424bc70265079d8f7eeb2785e8220192a30016cb7d2ec220ca5cf769122c3c361408486522904a3b2bcbe6e49305b26bce5cf6c8c6858dcaf9bf9d3ef2db96101bbea4

    See the Interac - Merchant encrypted request recipe for instructions to do the encryption.

Example Payout Request

details=64c4e3dbea201b2b80155376c04f8e7118a20ab745973cf487fc4892c8c6455a55738f25214e5b329bb907dd08510b7182079155a84087f1ec7c4685606c222481b20b106a72b7f960be1209f7fd4f3026fd852d6dba7b5d1c6dc655149a80891890849309a875ce1bbe02fa3dcf9208d4c7b940103e8dccbe011e49a6cb855568049ee5cf438a5babe5b30a112596d8da575bec71d30b5fe4126628aeae295aaf78b90444f515d6f5764e2ed32897467f758d952c503768eb1c8f19a069ff55d0633c966c60ecdc979652a99bea96d1e1e6f3126079cda8c323a357dfa5a162614f1959a110918a782a445ed565d0252212a4a5da2fdcc2c9bd907bb47aecaab6fad03d0627ce6629884e45ee83475678d68c0000d4a730bace0a0ad9e605c546a4310f06ae84f79df11eac5c3fce2f15d29c85d1e714e79762431bb0424bc70265079d8f7eeb2785e8220192a30016cb7d2ec220ca5cf769122c3c361408486522904a3b2bcbe6e49305b26bce5cf6c8c6858dcaf9bf9d3ef2db96101bbea4&iv=d77a05d256659fc362606f1d0483a51&merchant_id=TestMerchant

Merchants can refer to their INTERAC staging environment document for the specific merchant encryption key for their account.

ParameterTypeMin LengthMax LengthRequiredDescription
merchant_idString88YesThe 8-character merchant account ID assigned by Paramount.
merchant_user_idString120YesThe 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_idString03NoThe 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_numString130YesThe unique merchant-assigned transaction number that identifies the payout.
txn_amountDecimal18Yes

The payout amount. The amount must be between 1.00 and 100000.00.

Note: Interac Payouts are capped at 25000.00

txn_currencyString33YesThe uppercase 3-letter currency code (ISO 4217).
first_nameString130YesThe consumer's first name.
receiver_middle_nameString030NoThe receiver's (consumer's) middle name.
last_nameString130YesThe consumer's last name.
receiver_dobString (YYYY-MM-DD)1010YesThe receiver's (consumer's) date of birth.
receiver_streetString1255Yes`The receiver's (consumer's) street address.
receiver_street2String0255NoThe receiver's (consumer's) secondary address line.
receiver_cityString1255YesThe receiver's (consumer's) city.
receiver_provinceString130YesThe receiver's (consumer's) province or state.
receiver_postal_codeString67YesThe receiver's (consumer's) postal code.
receiver_countryString (ISO 3166-1 alpha-2)22YesThe receiver's (consumer's) country code.
receiver_citizenshipString (ISO 3166-1 alpha-2)22NoThe receiver's (consumer's) citizenship.
account_created_onString (YYYY-MM-DD)1010NoThe date the consumer's account was created on your platform.
phone_numberString1010YesThe 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_emailString150YesThe consumer's email address associated with INTERAC at their bank.
security_questionString140ConditionalRequired 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_answerString625ConditionalRequired 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_channelString


Conditional

When account_number is not provided and neither security_question nor security_answer is provided, this field specifies how to deliver the system-generated 6-digit code.

Accepted Values:
  • sms
  • email
Ignored when merchant supplies both security_question and security_answer

Notification is not sent when auto-deposit is enabled. When ANR (account number) is provided, ANR is prioritized and this channel is not used.

originator_ipString245YesThe consumer's IP address used to initiate the transaction.
account_numberString534No

The consumer's bank account number, formatted as xxx-xxxxx-xxxxxxxxxxxxxxxxxxxxxxxx.

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_1String0

NoThis 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_nameString130Conditional

The sender's first name.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_middle_nameString030NoThe sender's middle name.
sender_last_nameString130Conditional

The sender's last name.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_dobString (YYYY-MM-DD)1010Conditional

The sender's date of birth.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_streetString1255Conditional

The sender's street address.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_street2String0255NoThe sender's secondary address line.
sender_cityString1255Conditional

The sender's city.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_provinceString130Conditional

The sender's province or state.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_postal_codeString120Conditional

The sender's postal or ZIP code.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_countryString (ISO 3166-1 alpha-2)22Conditional

The sender's country code.

Required if enabled on your merchant account (e.g. remittance merchant).

sender_citizenshipString (ISO 3166-1 alpha-2)22NoThe sender's citizenship.
sender_reference_numberString1255Conditional

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_question and security_answer fields will only be used if the account_number field 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.

ParameterTypeSizeRequiredDescription
txn_numString30YesThe unique transaction number created by Paramount.
merchant_txn_numString30YesThe unique merchant-assigned transaction number that identifies the payout.
txn_amountDecimal(7.2)YesThe payout amount. The amount must be between 1.00 and 99999.99.
txn_feeDecimal(6.2)YesThe transaction fee payable by the merchant.
txn_statusString1YesThe status of the payout request.
  • P*: Pending
routing_decisionStringConditionalIf EFT routing is enabled on your account, it provides the routing decision for an Interac Payout.
  • interac: Payout was routed through the Interac rail.
  • EFT: Payout was routed through the EFT rail.
routing_decision_reasonStringConditional

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 the routing_decision was EFT.
  • unsupported_institution: If the provided bank account number is not a supported bank.
  • amount_limit: If the payout amount exceeds $25,000.
error_codeString4NoIf 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 Notifications

Payout 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.

ParameterTypeSizeRequiredDescription
user_idString30NoThe consumer user ID used in the Paramount system. For failed transactions, this field is blank.
txn_numString30YesThe unique transaction number created by Paramount.
txn_typeString1YesThe transaction type.

F: Payout
merchant_idString8YesThe 8-character merchant account ID assigned by Paramount.
merchant_user_idString20YesThe merchant-assigned unique consumer user ID.
merchant_txn_numString30YesThe unique merchant-assigned transaction number that identifies the payout.
txn_amountDecimal(7.2)YesThe payout amount. The amount must be between 1.00 and 99999.99.
txn_currencyString3YesCAD
txn_feeDecimal(6.2)YesThe transaction fee payable by the merchant.
txn_statusString1YesThe status of the payout request.
  • S: Successful
  • R: Rejected
error_codeString4NoIf 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.

CodeDescription
B001Invalid or missing merchant account ID (merchant_id).
B002Generic error.
B003Invalid merchant sub account ID (merchant_sub_id).
B004Invalid or missing merchant assigned consumer user ID (merchant_user_id).
B005Invalid or missing merchant transaction number (merchant_txn_num).
B006Duplicate merchant transaction number (merchant_txn_num).
B007Invalid or missing transaction amount (txn_amt).
B008Invalid or missing currency code (txn_currency).
B009Invalid or missing first name (first_name).
B010Invalid or missing last name (last_name).
B011Invalid or missing consumer email (customer_email).
B012Invalid or missing phone number (phone_number).
B013Invalid or missing security question (security_question). Required if account_number is not provided.
B014Invalid or missing security answer (security_answer). Required if account_number is not provided.
B015Invalid or missing originator IP (originator_ip).
B016The consumer withdrawal transaction exceeds the per transaction limit.
B017The transaction is declined to avoid overdraft from the merchant account.
The INTERAC merchant account balance must be sufficient to cover the withdrawal amount.
B018Invalid account number (account_number).
B019Institution is not supported in account number (account_number).
B020Invalid or missing Receiver Date of Birth (receiver_dob).
B021Invalid Receiver Middle Name (receiver_middle_name).
B022Invalid or missing Receiver Street Address (receiver_street).
B023Invalid Receiver Street Address (receiver_street2).
B024Invalid or missing Receiver City (receiver_city).
B025Invalid or missing Receiver Province (receiver_province).
B026Invalid or missing Receiver Postal Code (receiver_postal_code).
B027Invalid or missing Receiver Country (receiver_country).
B028Invalid Receiver Citizenship (receiver_citizenship).
B029Invalid or missing Sender Date of Birth (sender_dob).
B030Invalid or missing Sender First Name (sender_first_name).
B031Invalid Sender Moddle Name (sender_middle_name).
B032Invalid or missing Sender Last Name (sender_last_name).
B033Invalid or missing Sender Street Address (sender_street).
B034Invalid Sender Street Address (sender_street2).
B035Invalid or missing Sender City (sender_city).
B036Invalid or missing Sender Province (sender_province).
B037Invalid or missing Sender Postal Code (sender_postal_code).
B038Invalid or missing Sender Country (sender_country).
B039Invalid Sender Citizenship (sender_citizenship).
B040Invalid or missing Sender Reference Account Number (sender_reference_number).
B041Invalid Account Created On Date (account_created_on).
B042Invalid 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.

CodeDefinition
P001Failed IP validation.
P002Suspicious or fraudulent payment history by the consumer.
P003Suspicious or negative information on the consumer identity.
P004Suspicious or fraudulent information on the consumer device / IP address.
P005Negative information on the bank account.
P006Generic system error.
P007Risk management error.
P008Invalid INTERAC phone number provided by the consumer.
P009Invalid INTERAC email provided by the consumer.
P010Returned in any of these scenarios:
  • User failed to accept the withdrawal transaction
  • Bank account number used is either invalid, wrong, or closed/locked.
  • Email used either doesn't exist, is refusing emails, or has a full mailbox.
P011Payout has auto-expired before the user could accept.