GuidesRecipesAPI ReferenceChangelog
Guides

Interac E-Transfer Withdrawal

How do I withdraw CAD from a Cybrid fiat account via Interac E-Transfer?

Withdraw funds from a Cybrid fiat account using the instant withdrawal rail Interac E-Transfer.

ℹ️

Availability

Interac E-Transfer is only available to Canadian banks on the Cybrid Platform and can only be used to withdraw CAD from CAD-based fiat accounts.

Prerequisites

Before you begin, ensure you have:

  • a customer already created and verified;
  • the customer's identity record populated with an email address or phone number — the e-transfer is routed to the recipient using this contact information;
  • a CAD fiat account with sufficient funds for the customer; and,
  • a security question and answer that the recipient will be required to answer to claim the funds.

Overview

The e-transfer withdrawal process involves four main steps:

  1. Create a funding quote with the payment_rail set to etransfer
  2. Execute a transfer with the payment_rail set to etransfer and a security_question / security_answer pair
  3. Wait for the transfer to transition to the completed state
  4. Handle any terminal failed states

Step 1: Create a funding quote

Create a quote via POST /api/quotes. The payment_rail field is required on the quote for e-transfer withdrawals.

{
  "product_type": "funding",
  "customer_guid": "customer_guid",
  "asset": "CAD",
  "side": "withdrawal",
  "payment_rail": "etransfer",
  "deliver_amount": 10000
}
ℹ️

No destination_account_guid required

Unlike EFT withdrawals, Interac E-Transfer withdrawals do not take a destination_account_guid. The recipient is resolved at transfer time using the customer's email or phone, not via an external bank account.

Step 2: Execute the transfer

Create the transfer via POST /api/transfers with transfer_type set to funding and payment_rail set to etransfer. The quote_guid is the guid from the quote created in Step 1.

Both security_question (max 40 characters) and security_answer (max 25 characters) are required for e-transfer withdrawals. The recipient must answer the question correctly to claim the funds.

Do not include external_bank_account_guid — it is not used on the e-transfer rail.

{
  "quote_guid": "quote_guid",
  "transfer_type": "funding",
  "payment_rail": "etransfer",
  "security_question": "What city were we in?",
  "security_answer": "Toronto",
  "source_participants": [
    {
      "type": "customer",
      "guid": "customer_guid",
      "amount": 10000
    }
  ],
  "destination_participants": [
    {
      "type": "customer",
      "guid": "customer_guid",
      "amount": 10000
    }
  ]
}

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

After the transfer is created, wait for it to transition to completed. Once completed, the funds have been sent to the recipient and debited from the customer's fiat account.

Poll the transfer via GET /api/transfers/{transfer_guid} to check the state, or register for webhooks. The transfer_guid is the guid from the transfer created in Step 2.

Step 4: Handle terminal failures

An e-transfer withdrawal can transition to failed for several reasons. Inspect the failure_code field on the transfer to determine the cause:

  • customer_contact_info_missing -- The customer's identity has no email or phone populated. Add an email or phone to the customer's identity and create a new transfer to retry.
  • payment_request_expired -- The recipient did not claim the e-transfer before it expired.
  • cancelled -- The recipient declined the e-transfer.

Other failure_code values may apply. See the Cybrid Bank API reference for the full set.