- Complete the standard Flinks Pay onboarding process and verification.
- Meet applicable MSB requirements and receive service approval from your dedicated Relationship Manager.
- Receive your production GEFT credentials (Username/Client ID and Password/Client Secret) and base URI.
- Configure your GEFT integration following the steps below.
- Implement session creation using the /api/v2/sessions endpoint for each payment request.
- Track user progress through the payment flow using:
- Frontend event listeners for real-time updates
- Status polling via /api/v2/sessions//status
- Webhook notifications for terminal status changes
- Test your integration thoroughly using the Sandbox Guide.
- Go to production with your dedicated Technical Account Manager support.
Step 1: Authentication
All GEFT API requests that require authentication use an API key passed in thex-api-key header. Your API key will be provided during onboarding.
Headers
| Header | Value | Description |
|---|---|---|
x-api-key | Your API key | Required for authenticated endpoints |
x-client-id | Your client ID | Identifies your client account |
Content-Type | application/json | Required for request bodies |
Step 2: Create Session
Endpoint
Required Fields
| Field | Type | Description |
|---|---|---|
type | String | Must be “EFT” for GEFT |
direction | String | Must be “DEBIT” for GEFT |
options.guarantee.enable | Boolean | Must be true for GEFT |
payor.firstName | String | User’s first name (100 char limit) |
payor.lastName | String | User’s last name (100 char limit) |
Optional Fields
| Field | Type | Description |
|---|---|---|
referenceId | String | Your internal reference (100 char limit, strongly recommended) |
amount | Decimal | Payment amount (up to $100,000, configurable per client) |
currency | String | ”CAD” (default) |
payor.email | String | Email address (100 char limit) |
payor.address | Object | Address information |
payee.account | Object | Destination account details |
notificationPreferences.language | String | ”EN” or “FR” |
Example Request
Response
Step 3: Launch iFrame
Once you have asessionId, launch the GEFT user flow:
Event Listening
Monitor frontend events to track user progress:Step 4: Monitor Session Status
Endpoint
Example Request
Response
Status Codes
| Status | StatusDetails | Description |
|---|---|---|
| Initiated | EFT0101 | Session created, awaiting user start |
| Completed | EFT0301 | Transaction scheduled, session fully completed |
| Completed | EFT0302 | Bank account validated, awaiting PAD signature |
| Failed | EFT0401 | Login failed - invalid credentials |
| Failed | EFT0402 | Eligibility failed - no guarantee offered |
| Failed | EFT0403 | Identity failed - user info mismatch |
| Canceled | EFT0501 | Session canceled by API request |
| Expired | EFT0601 | Session timed out |
Step 5: Handle Completion
Successful Completion (EFT0301)
When status is “Completed” with “EFT0301”:- Payment is guaranteed and scheduled
- Funds will be settled according to EFT processing windows
- No further action required
Failed Scenarios
Guarantee Declined (EFT0402)- Offer alternative payment methods
- Transaction cannot proceed with GEFT
- User information doesn’t match bank account
- Session must be terminated
- User exited flow without completing
- Can retry with new session
Destination Account Logic
GEFT supports routing payments to different accounts:- With payee object: Funds settle to specified account
- Without payee object: Funds settle to your default account (configured by Flinks)
- No payee + no default: Request rejected with error
Important Implementation Notes
User Identity Matching
firstNameandlastNamemust accurately reflect the bank account owner- Significant name differences will cause session failure (EFT0403)
- Identity validation occurs after account connection
Reference ID Best Practices
- Use unique identifier for each transaction
- Include in reconciliation and support requests
- Appears in all status responses and reconciliation files
Amount Handling
- If amount provided: User cannot modify, “Enter amount” step is grayed out
- If amount omitted: User enters amount in flow
- Min/max limits configured at client level by Flinks
Character Limits
- Names: 255 characters
- Email: 256 characters
- Reference ID: 100 characters
- Country: 2 characters (ISO country code)
- Account Number: 7–12 digits
- Transit Number: 5 digits
- Institution Code: 3 digits
Error Handling
Next Steps
- Event Handling: Implement comprehensive event tracking
- Sandbox Guide: Test your integration
- API Reference: Complete API documentation
Testing Your Integration
Use the sandbox environment with test scenarios:- Happy1: Successful flow
- Happy2: Next-best-offer scenario
- Unhappy1: Guarantee failure