Skip to main content
Work in progressThis section is currently under active development as part of improvements planned for 2026. Content may change as we expand product capabilities.If you’re interested in early access or want to learn more about what’s coming, feel free to reach out to the team.
The EFT (Electronic Funds Transfer) API provides endpoints to create, monitor, and manage PAD-based debit and credit transactions through Canada’s EFT rail.

Base URLs

Production: {{BaseUri}} Sandbox: {{BaseUri}}

Authentication

EFT API endpoints use two authentication methods:
  1. OAuth 2.0 Client Credentials — Used for the /authorize endpoint. Authenticate with Basic auth (Client ID and Secret) to obtain a Bearer token valid for 599 seconds.
  2. API Key — Most EFT endpoints authenticate via the x-client-id header, provided during onboarding.

API Endpoints

Authentication

MethodEndpointDescription
POST/api/v1/authorizeObtain access token

Transactions

MethodEndpointDescription
POST/api/v1/transactionsCreate EFT transaction

Payment Requests

MethodEndpointDescription
GET/api/v1/paymentrequests/{requestId}Get payment request status
POST/api/v1/paymentrequests/{requestId}/cancelCancel payment request

Schedules

MethodEndpointDescription
POST/api/v1/schedules/{scheduleId}/cancelCancel schedule

Institutions

MethodEndpointDescription
GET/api/v1/institutionsList supported institutions

Quick Start

1. Authenticate

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

2. Create a Transaction

curl --location '{{BaseUri}}/api/v1/transactions' \
--header 'Content-Type: application/json' \
--header 'x-client-id: {{your-client-id}}' \
--data '[{
  "transactionCode": 1,
  "amount": 100.00,
  "paymentDirection": "DEBIT",
  "currency": "CAD",
  "payor": {
    "accountInfo": {
      "institutionCode": "001",
      "transitNumber": "12345",
      "accountNumber": "1234567"
    },
    "contactInfo": {
      "firstName": "John",
      "lastName": "Smith"
    }
  },
  "scheduleInfo": {
    "paymentFrequency": "OneTime",
    "startDate": "2026-04-15"
  }
}]'

3. Monitor Status

curl --location '{{BaseUri}}/api/v1/paymentrequests/{{requestId}}'

EFT Status Codes

EFT Transaction Status (EftStatus)

StatusDescription
ReceivedTransaction request received by Flinks
CreatedTransaction created and queued for processing
SubmittedSubmitted to Payments Canada
ReconciledConfirmation received from the payment network
SettledFunds have settled
CancelledTransaction was cancelled before submission
RejectedTransaction was rejected by the payment network

Payment Request Status (PaymentStatus)

StatusDescription
InitiatedPayment request created
ProcessingPayment is being processed
AcceptedPayment accepted by the network
ProcessedPayment has been processed
SettledFunds have settled
CancelledPayment was cancelled

Field Specifications

Character Limits

FieldConstraint
descriptionMax 15 characters
crossReferenceNumberAlphanumeric and hyphens only, max 36 characters
institutionCodeExactly 3 digits
transitNumberExactly 5 digits
accountNumber7–12 digits

Amount Rules

RuleValue
Minimum$0.01
CurrencyCAD only

Validation Rules

DEBIT Transactions

  • payor is required; payee must not be provided
  • startDate must be a future date
  • OneTime: startDate is required
  • Recurring (Weekly, Biweekly, Monthly): startDate is required, plus either endDate or transactionsCount (not both); transactionsCount max is 300; endDate must be after startDate

CREDIT Transactions

  • payee is required; payor must not be provided
  • Only OneTime frequency is supported
  • startDate must be the current day (same-day only)

Account Info

Provide either:
  • accountId (a GUID referencing a previously stored account), or
  • The combination of institutionCode + transitNumber + accountNumber
You cannot provide both.

Contact Info

Provide either:
  • contactId (a GUID referencing a previously stored contact), or
  • firstName + lastName, or legalName
You cannot provide both.

Schedule Frequency Reference

FrequencyValueNotes
One-timeOneTimeSingle payment on start date
WeeklyWeeklyEvery 7 days from start date
BiweeklyBiweeklyEvery 14 days from start date
MonthlyMonthlySame day each month from start date

EFT Processing Windows

Flinks follows Payments Canada EFT processing schedule:
WindowCutoff TimeSubmission TimeDays
Window 12:30am EDT9:30am EDTMon–Fri
Window 21:30pm EDT4:30pm EDTMon–Fri
Window 36:00pm EDT9:00pm EDTMon–Fri
No processing on weekends or statutory holidays.

Error Handling

Common Errors

Validation Error (400):
{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "Bad Request",
  "status": 400,
  "errors": {
    "Amount": ["Amount should be greater than 1 cent"],
    "Payor": ["Debit transactions require a Payor."]
  }
}
Unauthorized (401): Returned when the x-client-id header is missing or invalid.

Next Steps

  1. Create Transaction — Full request and response schema
  2. Get Payment Request — Monitor payment status
  3. Setup Guide — Complete implementation walkthrough