Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.flinks.com/llms.txt

Use this file to discover all available pages before exploring further.

The Flinks Interac (e-Transfer) API lets you initiate a Request For Money (RFM) session and collect payments from end users through Interac e-Transfer. This reference covers the endpoints needed to create a session and retrieve its details.

Base URL

Production / Sandbox: {{BaseUri}}

Authentication

All e-Transfer API requests use OAuth 2.0 Client Credentials flow:
  1. Authenticate with Basic auth using Client ID and Secret
  2. Receive Bearer token valid for 599 seconds (10 minutes)
  3. Use Bearer token for all subsequent API calls
  4. Refresh token before expiration

API Endpoints

Authentication

MethodEndpointDescription
POST/api/v1/authorizeObtain access token

Session Management

MethodEndpointDescription
POST/api/v2/sessionsInitiate e-Transfer session
GET/api/v2/sessions/{sessionId}/detailsGet session details

Quick Start

1. Authenticate

curl --location '{{BaseUri}}/api/v1/authorize' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic {{Username:Password}}' \
--data-urlencode 'grant_type=client_credentials'

2. Initiate Session

curl --location '{{BaseUri}}/api/v2/sessions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data-raw '{
  "referenceId": "USER12345",
  "type": "e-Transfer",
  "direction": "CREDIT",
  "currency": "CAD",
  "amount": 250.00,
  "options": {
    "notificationPreferences": {
      "language": "EN",
      "sendInteracLink": true
    }
  },
  "payor": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "john.smith@example.com"
  }
}'

3. Launch User Flow

<iframe
  src="{{BaseUri}}/app/?sessionId={{sessionId}}"
  width="100%"
  height="600">
</iframe>

4. Retrieve Session Details

curl --location '{{BaseUri}}/api/v2/sessions/{{sessionId}}/details' \
--header 'Authorization: Bearer {{access_token}}'

Session Object

{
  "sessionId": "850750a4-3021-4061-ac03-a8d873aa4179",
  "referenceId": "USER12345",
  "status": "Completed",
  "type": "e-Transfer",
  "direction": "CREDIT",
  "currency": "CAD",
  "amount": 250.00
}

Session Statuses

StatusDescription
InitiatedSession created, awaiting user action
CompletedUser has successfully completed the flow
FailedSession failed (for example, identity or eligibility)
CancelledSession was cancelled
ExpiredSession timed out before completion

Field Specifications

Character Limits

FieldLimitNotes
firstName, lastName, middleName100 charactersRequired for identity matching
email100 charactersUsed for notifications and link delivery
referenceId100 charactersStrongly recommended for tracking
addressLine1100 charactersStreet address
city100 charactersFull city name
postalCode6 charactersNo spaces (e.g., M5V0T7)
province2 charactersProvincial code (e.g., ON, QC)
country2 charactersOnly “CA” supported
accountNumber7–12 charactersNumbers only
transitNumber5 charactersNumbers only
institutionCode3 charactersNumbers only

Validation Rules

Amount
  • Up to 2 decimal places
  • Minimum and maximum are client-configurable via session options.limits
Currency
  • Only CAD is supported
Payment Type
  • e-Transfer for Interac e-Transfer sessions
  • EFT for EFT sessions
Payment Direction
  • CREDIT — funds flow to the payee
  • DEBIT — funds flow from the payor

Notification Preferences

Control how the end user is notified of the request:
  • languageEN or FR
  • sendInteracLink — when true, Flinks sends the Interac e-Transfer request link directly to payor.email. When false, you distribute the hosted app URL yourself.

Frontend Integration

iFrame URL Pattern

{{BaseUri}}/app/?sessionId={{sessionId}}

Event Monitoring

window.addEventListener('message', function(e) {
  console.log('e-Transfer Event:', e.data);

  if (e.data.Step === 'SUCCESS') {
    // Session completed successfully
  } else if (e.data.Step === 'EXIT') {
    // User exited the flow
  }
});

Error Handling

Error responses follow the RFC 7807 ProblemDetails format:
{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "Bad Request",
  "status": 400,
  "detail": "Missing required field: payor.firstName"
}
Common HTTP status codes
StatusMeaning
201Session created
200Request succeeded
400Invalid request payload
401Missing or invalid access token
403Access denied

Next Steps

  1. Authentication — obtain an access token
  2. Initiate Session — create an e-Transfer session
  3. Session Details — retrieve session information
  4. Setup Guide — complete implementation walkthrough