# Send & Request

## Overview

Interac e-Transfer is a fast and secure way to send and receive money directly from one bank account to another in Canada.

Zūm Rails offers both bulk and retail options for Interac e-Transfers in Canada, catering to different needs:

* **Bulk**: This option is ideal for businesses or organizations that need to send multiple payments at once. It allows for the simultaneous transfer of funds to multiple recipients, simplifying payroll or mass-distribution needs while maintaining the security and efficiency of standard Interac e-Transfers.
* **Retail**: This is tailored for individual or one-time transactions, suitable for personal use such as sending money to a friend or family member. Retail transfers are straightforward, requiring only the recipient's email or mobile number to initiate a transaction.

Both options provide the core benefits of Interac e-Transfers, including speed, convenience, and security.

{% hint style="warning" %}
To learn more about Interac bulk and retail e-Transfer options, contact <support@zumrails.com>.
{% endhint %}

## Processing Schedule

**Interac - RBC**

* Times we send the transactions - everyday:
  * every 5 minutes;
* When we process the responses - everyday:
  * Email finalization if user name matches - every 3 minutes;
  * Intraday reports - every 3rd hour from 6 through 21;
  * Debit daily reports - 3:00am;
  * Credit daily reports - 3:05am;

**Interac - Desjardins**

* Times we send the transactions - everyday:
  * every 4 minutes;
* When we process the responses - everyday:
  * Email finalization if user name matches - every minute;
  * Intraday reports - every hour - we depend on when the reports are received though;
  * Debit daily reports - 3:15m;
  * Credit daily reports - 3:30am;
  * Debit transactions - responses are processed when Desjardins send us webhooks;

**Interac - PTC**

* Transactions are sent when they are created;
* Debit responses are processed when PTC sends us webhooks;
  * We also have two process that checks transactions status everyday:
    * every 6 minutes for transactions from the last two days;
    * every hour for transactions older than two days;
* Credit responses are checked every day:
  * every 6 minutes for transactions from the last two days;
  * every hour for transactions older than two days;
* Settlement job - mon to fri:
  * 9:00am;

## Transaction Events

Zūm Rails provides detailed transaction events that indicate each step of the transaction process.

<table><thead><tr><th width="197">Method</th><th>Event</th><th>Description</th></tr></thead><tbody><tr><td>All</td><td>Started</td><td>When the transaction started</td></tr><tr><td>All</td><td>Succeeded</td><td>When the transaction succeeds, when it finishes without any error</td></tr><tr><td>All</td><td>WalletFunded</td><td>When the transaction funds a wallet</td></tr><tr><td>All</td><td>WalletWithdrawn</td><td>When the transaction withdrawn a wallet</td></tr><tr><td>--------</td><td>--------</td><td>--------</td></tr><tr><td>Interac</td><td>InteracSent</td><td>When the transaction is sent to Interac</td></tr><tr><td>Interac</td><td>InteracAcknowledgedCredit</td><td>When a credit transaction is received by Interac</td></tr><tr><td>Interac</td><td>InteracAcknowledgedDebit</td><td>When a debit transaction is received by Interac</td></tr><tr><td>Interac</td><td>InteracFailedRecipientContactInfoMissing</td><td>Need to add recipient email or mobile phone number</td></tr><tr><td>Interac</td><td>InteracFailedInvalidEmailFormat</td><td>If the email provided is not valid. * We minimize this error by validating it before</td></tr><tr><td>Interac</td><td>InteracFailedInvalidPhoneNumber</td><td>If the phone number provided is not valid</td></tr><tr><td>Interac</td><td>InteracFailedMultipleTransferLevelErrors</td><td>If there is more than one error in the file</td></tr><tr><td>Interac</td><td>InteracFailedRevoked</td><td>When the transaction is revoked</td></tr><tr><td>Interac</td><td>InteracFailedBulkCancellationRequest</td><td>When the transaction was cancelled by request</td></tr><tr><td>Interac</td><td>InteracFailedRecipientRejected</td><td>When the transaction was cancelled due to recipient having declined receipt of funds</td></tr><tr><td>Interac</td><td>InteracFailedAuthentication</td><td>Transfer cancelled due to maximum number of unsuccessful attempts to answer the security question by the recipient</td></tr><tr><td>Interac</td><td>InteracFailedReachedCancellationCutOff</td><td>Transfer cancelled due to expiry</td></tr><tr><td>Interac</td><td>InteracFailedNotificationDeliveryFailure</td><td>Transfer cancelled due to maximum number of failed email notification attempts reached</td></tr><tr><td>Interac</td><td>InteracFailedAmountGreaterThanMax</td><td>If the transaction amount exceeds the maximum allowed</td></tr><tr><td>Interac</td><td>InteracFailedDebtorRejected</td><td>The debtor rejected the request</td></tr><tr><td>Interac</td><td>InteracFailedFundsDepositFailed</td><td>The funds deposit failed</td></tr><tr><td>Interac</td><td>InteracFailedClientEmailedToRequestCancellation</td><td>Client emailed to request cancellation</td></tr><tr><td>Interac</td><td>InteracFailedGenericError</td><td>When Interac Network is unavailable - * We have never seen this</td></tr><tr><td>Interac</td><td>InteracWaitingSettlementIntoWallet</td><td>Waiting for funds to be settled into wallet</td></tr><tr><td>Interac</td><td>InteracSettledIntoWallet</td><td>When Interac funds are settled into wallet</td></tr><tr><td>Interac</td><td>InteracFailedNameMismatch</td><td>When the debtor name used to fulfill the Interac is different than the name on file</td></tr><tr><td>Interac</td><td>InteracFraudAlertResponded</td><td>When a fraud alert responded for that transaction</td></tr><tr><td>Interac</td><td>InteracFundsHeldForValidation</td><td>User needs to contact their Financial Institution to validate the transfer and release of funds</td></tr><tr><td>Interac</td><td>InteracFailedInvalidAccountNumber</td><td>When the account number provided is invalid</td></tr><tr><td>Interac</td><td>InteracFailedRequestBlockedByUser</td><td>When the transaction failed since the user has blocked some or all Interac requests coming to their email</td></tr><tr><td>Interac</td><td>InteracCreditorExternalFinancialInfo</td><td>When the accounts payable transaction is updated with the creditor external financial information</td></tr></tbody></table>

## Testing

To simulate an Interact failure, include an event name from the list above in the COMMENT field when creating a transaction. If you don't mention an event in the COMMENT, the transaction will change its status to "Completed" in the sandbox environment.

The default Interac notification method is **email**. To send the notification via **SMS**, include the parameter `"InteracNotificationChannel": "sms"` in the request payload. In the **Sandbox** environment, the user will receive an **email simulating the SMS message**, containing a link to complete or decline the transaction. The user must have a **valid mobile phone number** associated with their profile to use the SMS notification option.

{% tabs %}
{% tab title="Simulating Success" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "Interac",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction will succeed because there's no keyword",
  "UserId": "8ebd932b-...b92633e14290",
  "TargetUserId": "8ebd932b-...b92633e14291"
}
```

{% endtab %}

{% tab title="Simulating Failure" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "Interac",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "InteracFailedNotificationDeliveryFailure",
  "UserId": "8ebd932b-...b92633e14290",
  "TargetUserId": "8ebd932b-...b92633e14291"
}
```

{% endtab %}

{% tab title="Simulating SMS Notification" %}

```json
{
  "ZumRailsType": "AccountsReceivable",
  "TransactionMethod": "Interac",
  "Amount": 123.45,
  "Memo": "Memo description",
  "Comment": "This transaction will send notification via SMS",
  "UserId": "8ebd932b-...b92633e14290",
  "WalletId": "8ebd932b-...b92633e14291",
  "InteracNotificationChannel": "sms"
}
```

{% endtab %}
{% endtabs %}

## Interac Fraud Alerts

Interac flags certain transactions that they believe could be possible fraud cases. Zūm Rails changes status of transactions that are flagged by Interac to “Under Review” for the customer to investigate. Using the API and portal, you can:&#x20;

* Opt-in to receive e-mail notifications and a web hook for each transaction flagged by Interac.
* Take action from the transaction menu or from API in response to the Interac Fraud Alert. See [review-transactions](https://docs.zumrails.com/payments/interac-e-transfer/review-transactions "mention") section to learn more.

## Cancellation

Use this endpoint to cancel a specific interac transaction.

`Method: DELETE`

`Endpoint: {{env}}/api/transaction/{transaction_id}`

{% tabs %}
{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "DELETE Request successful.",
  "isError": false,
  "result": "Request completed"
}
```

{% endtab %}
{% endtabs %}

## Interac - Send Funds options

Use this endpoint if you want to know if the user is registered for automatic deposits, or if it's account router number eligible. The user id is informed in the url.

`Method: GET`

`Endpoint: {{env}}/api/user/GetInteracSendFundsOptions/{user_id}`

{% tabs %}
{% tab title="Response" %}

```json
{
  "statusCode": 200,
  "message": "GET Request successful.",
  "isError": false,
  "result": {
    "RequireSecurityQuestionAndAnswer": true,
    "AutomaticDepositAvailable": false,
    "AccountNumberRoutingAvailable": false
  }
}
```

{% endtab %}
{% endtabs %}

**Response Parameters**

<table><thead><tr><th width="337">Parameter</th><th width="104">Type</th><th>Description</th></tr></thead><tbody><tr><td>RequireSecurityQuestionAndAnswer</td><td>boolean</td><td>Indicate if security questions are required for the informed user in order to create an Interac Send Funds</td></tr><tr><td>AutomaticDepositAvailable</td><td>boolean</td><td>If true, means this user email is registered for Interac automatic deposit</td></tr><tr><td>AccountNumberRoutingAvailable</td><td>boolean</td><td>If true, means this user can accept Interac Account Routing ANR. The user needs to have the bank account information on file.</td></tr></tbody></table>

## Connect SDK: Request Funds

**Using SDK**

Once authorized, the next step is to create a token. You will need to create a token with the payload as below.

{% tabs %}
{% tab title="Request Funds" %}

```json
{
  "ConnectTokenType": "RequestFunds",
  "RequestFundsId": "e212a298-4f39-4ac0-b9d6-60fc1c215176"
}
```

{% endtab %}
{% endtabs %}

**Callbacks**

{% tabs %}
{% tab title="onSuccess" %}

```json
{
  "origin": "ZUM_RAILS",
  "userId": "2b500e4e-a5fe-4697-a88b-07eb8162cc22",
  "transactionId": "f884b81d-9335-4560-b764-aee1e369791d"
}
```

{% endtab %}
{% endtabs %}
