Interac E-Transfer Deposit

How do I fund an account via Interac E-Transfer in my Canadian bank?

This guide walks you through the process of depositing funds to a Cybrid fiat account using the instant deposit rail Interac E-Transfer.

👍

Interact E-Transfer is only available to Canadian banks on the Cybrid Platform and can only be used to deposit CAD to CAD-based fiat accounts

Prerequisites

Before you begin, ensure you have:

  • a customer already created and verified; and,
  • a CAD fiat account created for the customer.

Overview

The e-transfer deposit process involves four main steps:

  1. Create a funding quote
  2. Execute a transfer with the payment_rail set to etransfer
  3. Display the gateway_url on the resulting transfer to your customer and instruct them to authorize the payment through their bank
  4. Wait for your customer to authorize the payment and the transfer to transition to the completed state

Step 1: Create a funding quote

First you are required to create a quote via the POST /api/quotes endpoint. An example payload that you can pass to this API follows:

{
  "product_type": "funding",
  "customer_guid": "your-customer-guid",
  "asset": "CAD",
  "side": "deposit",
  "receive_amount": 10000
}

Step 2: Execute the transfer

Next, create the transfer by executing a POST /api/transfers API call with a transfer_type of funding and set the payment_rail to etransfer. Note the quote_guid in the payload is the guid from the quote you created in the previous step.

{
  "quote_guid": "your-quote-guid",
  "transfer_type": "funding",
  "payment_rail": "etransfer",
  "source_participants": [
    {
      "type": "customer",
      "guid": "your-customer-guid",
      "amount": 100000
    }
  ],
  "destination_participants": [
    {
      "type": "customer",
      "guid": "your-customer-guid",
      "amount": 100000
    }
  ]
}

Step 3: Display the gateway_url to your customer and instruct them to authorize the payment

👍

The gateway_url will have the domain etransfer.interac.ca if you need to allowlist the domain.

🚧

In Sandbox, Interac E-Transfer deposits will automatically complete on their own. The gateway_url returned is not a valid URL. Unfortunately, our sponsor bank does not support the interactive Interac E-Transfer flow in their Sandbox.

❗️

Generating the gateway_url can take some time in both Sandbox and Production. This is due to the response time of our sponsor bank. As with all POST calls on the Cybrid Platform, ensure you handle asynchronous calls appropriately through both webhook registration as well as polling as a backup.

Next, you'll need to wait for the transfer to transition to the pending state. Once in the pending state you can read the gateway_url from the identifiers array on the transfer. The type of the identifier will be gateway_url and the value of the identifier will be the URL that you will need to display to your customer.

You can display the gateway_url to your customer in any manner that you would like: e.g., you can display it in your application, send it to them via email or SMS, etc.

When your customer visits the gateway_url they will be shown a screen to select their bank and authorize the deposit via their bank's website.

Step 4: Wait for the transfer to transition to the completed state

After you've displayed the gatway_url to your customer you must wait for the transfer to transition to the completed state. Once in the completed state the associated funds are available on the platform to your customer.

You can either poll the transfer vie the GET /api/transfers/transfer_guid API to determine when its state is pending or you can register for webhooks. The transfer_guid is the guid on the transfer you created in Step 2.

Error handling

E-transfer request URLs if not authorized by your customer will expire. They can can also be rejected by your customer as well. In both cases, the transfer will transition to the failed state. If the request expires you'll see a failure_code of payment_request_expired and if it's been rejected you'll see a failure_code of cancelled.