> ## 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.

# Session Details

Retrieve comprehensive session information including verified payor account details.

To successfully call this endpoint, you must have a valid access token from the [/Authorize](/api/pay/endpoints/authorize/authorize) endpoint.

## Get Session Details

Use this endpoint to retrieve full, verified payor account information along with all session-level details required for payment validation.

### Availability of Account Details

**Important**: Payor account details become available only after the session has passed the "Initiated" stage. Before that point, the payor account section will be returned empty.

This endpoint provides:

* **Complete session information**: All details from session creation
* **Verified account details**: Bank account information after user authentication
* **Payment validation data**: Information needed for transaction processing
* **Identity verification results**: User identity matching status

## Request Example

```bash theme={null}
curl --location '{{BaseUri}}/api/v2/sessions/{{sessionId}}/details' \
--header 'Authorization: Bearer {{access_token}}'
```

## Response Structure

The response includes comprehensive session information and, once available, detailed payor account verification data:

```json theme={null}
{
  "sessionId": "aadd08f2-83ce-456d-84ed-c68cfed4ee7b",
  "status": "Completed",
  "step": {
    "current": "Complete",
    "aggregationRequestId": "c1a2b3d4-e5f6-7890-abcd-ef1234567890",
    "padId": "d4c3b2a1-f6e5-0987-dcba-fe7654321098"
  },
  "referenceId": "USER12345",
  "amount": 500.00,
  "type": "EFT",
  "direction": "DEBIT",
  "currency": "CAD",
  "options": {
    "guarantee": {
      "enable": true
    },
    "showConsentScreen": true,
    "limits": {
      "minimumAmount": 10,
      "maximumAmount": 1000
    }
  },
  "payor": {
    "email": "john.smith@example.com",
    "firstName": "John",
    "lastName": "Smith",
    "account": {
      "institutionCode": "014",
      "transitNumber": "58964",
      "accountNumber": "1234567",
      "accountLabel": "Account (****4567)"
    },
    "address": {
      "addressLine1": "123 Main Street",
      "city": "Toronto",
      "province": "ON",
      "country": "CA",
      "postalCode": "M5V3A8"
    }
  },
  "payee": {
    "account": {
      "institutionCode": "999",
      "transitNumber": "30265",
      "accountNumber": "9876541",
      "accountLabel": "Settlement Account"
    }
  },
  "guaranteeDetails": {
    "guaranteeOffered": true,
    "guaranteeAccepted": true,
    "highestDebitAmountToGuarantee": 500.00,
    "overallRiskLevel": "Low",
    "transactionRiskLevel": "Low",
    "userRiskLevel": "Low",
    "otherRiskLevel": "Unknown",
    "guaranteedEftType": "Full"
  },
  "userDetails": {
    "matchingPerformed": true,
    "nameMatch": 95
  }
}
```

## Response Fields

### Session Information

* **sessionId**: Unique session identifier
* **status**: Current session status
* **step**: Current step of the session flow (`current`, `aggregationRequestId`, `padId`)
* **referenceId**: Your internal reference ID
* **amount**: Payment amount (null if not yet set)
* **type**: Payment type (always "EFT" for GEFT)
* **direction**: Payment direction (always "DEBIT" for GEFT)
* **currency**: Payment currency (always "CAD")

### Options

* **guarantee.enable**: Whether a guarantee was requested
* **notificationPreferences.language**: Language preference ("EN" or "FR")
* **showConsentScreen**: Whether Flinks consent screen is displayed
* **limits**: Minimum and maximum allowed payment amounts
* **amountModification**: Whether the user can modify the amount
* **redirectPreferences**: Redirect mode and URLs for session completion

### Payor Information

* **Personal details**: Name (firstName, lastName, middleName), email as provided during session creation
* **Verified account**: Bank account information obtained after user authentication (institutionCode, transitNumber, accountNumber, accountLabel, availableBalance)
* **Address**: Street address, city, province, country, postal code

### Payee Information

* **Account details**: Destination account information (institutionCode, transitNumber, accountNumber, accountLabel)

### Guarantee Details

* **guaranteeOffered**: Whether a guarantee was offered
* **guaranteeAccepted**: Whether the guarantee was accepted (null if not yet decided)
* **highestDebitAmountToGuarantee**: Maximum debit amount eligible for guarantee
* **Risk levels**: overallRiskLevel, transactionRiskLevel, userRiskLevel, otherRiskLevel (Unknown, Low, Medium, High)
* **guaranteedEftType**: Type of guarantee coverage (Full, Partial, Minimal)

### User Details

* **matchingPerformed**: Whether identity matching was performed
* **nameMatch**: Name matching score (0 to 100)

## Data Availability Timeline

### Before User Authentication (Status: Initiated)

```json theme={null}
{
  "sessionId": "aadd08f2-83ce-456d-84ed-c68cfed4ee7b",
  "status": "Initiated",
  "referenceId": "USER12345",
  "type": "EFT",
  "direction": "DEBIT",
  "currency": "CAD",
  "payor": {
    "email": "john.smith@example.com",
    "firstName": "John",
    "lastName": "Smith",
    "account": null
  }
}
```

### After User Authentication (Status: Completed/Failed)

```json theme={null}
{
  "sessionId": "aadd08f2-83ce-456d-84ed-c68cfed4ee7b",
  "status": "Completed",
  "payor": {
    "email": "john.smith@example.com",
    "firstName": "John",
    "lastName": "Smith",
    "account": {
      "institutionCode": "003",
      "transitNumber": "12345",
      "accountNumber": "****1234",
      "accountLabel": "Checking (****1234)"
    }
  }
}
```

## Use Cases

### Payment Validation

* Verify user identity matches bank account holder
* Confirm account details for reconciliation
* Validate guarantee status before processing

### Audit and Compliance

* Complete transaction trail for regulatory requirements
* Identity verification documentation
* Account verification records

### Customer Support

* Comprehensive session information for issue resolution
* Account details for payment troubleshooting
* Complete payment history and status

### Reconciliation

* Match payments to internal records using referenceId
* Account details for settlement verification
* Complete payment lifecycle information

## Error Responses

### Session Not Found

```json theme={null}
{
  "error": "not_found",
  "error_description": "Session not found"
}
```

### Authentication Required

```json theme={null}
{
  "error": "unauthorized",
  "error_description": "Valid access token required"
}
```

### Insufficient Permissions

```json theme={null}
{
  "error": "forbidden",
  "error_description": "Access denied to session details"
}
```

## Security Considerations

### Data Protection

* **Account numbers**: Masked for security (showing only last 4 digits)
* **Personal information**: Handle according to privacy regulations
* **Access controls**: Ensure proper authentication and authorization

### Compliance

* **Data retention**: Follow regulatory requirements for payment data
* **Audit trails**: Maintain complete records for compliance
* **Privacy**: Protect customer personal and financial information

## Best Practices

### When to Call This Endpoint

* **After status changes**: When polling shows status updates
* **For reconciliation**: During end-of-day processing
* **For support**: When investigating payment issues
* **For compliance**: When audit trails are required

### Data Handling

* **Cache appropriately**: Avoid excessive API calls
* **Secure storage**: Protect sensitive account information
* **Access logging**: Log all access to session details

## Related Endpoints

* [Create Session](/api/pay/endpoints/geft/sessions-initiate) - Initialize GEFT payment session
* [Get Session Status](/api/pay/endpoints/geft/sessions-status) - Monitor payment progress
* [Cancel Session](/api/pay/endpoints/geft/sessions-cancel) - Terminate active session


## OpenAPI

````yaml GET /api/v2/sessions/{sessionId}/details
openapi: 3.0.3
info:
  title: Flinks GEFT API
  description: >
    Flinks Guaranteed Electronic Funds Transfer (GEFT) API provides secure,
    guaranteed payment processing capabilities.


    ## Authentication

    All endpoints require authentication using Bearer tokens obtained from the
    /authorize endpoint.


    ## Overview

    GEFT is a payment service that lets you move funds from your customers' bank
    accounts via Electronic Funds Transfer,

    while Flinks assumes the EFT risk on your behalf. Once a payment is
    guaranteed, Flinks ensures that you (the Merchant)

    will not be required to reimburse or return any funds you receive from
    Flinks or from an end user.


    For more information, visit: https://docs.flinks.com
  version: 2.0.0
  contact:
    name: Flinks Support
    url: https://www.flinks.com/contact/sales
  termsOfService: https://www.flinks.com
servers:
  - url: https://www.{baseurl}.com
    description: Flinks Pay Production
    variables:
      baseurl:
        default: '{baseurl}'
        description: The base URI for the environment (e.g. flinks)
security:
  - BearerAuth: []
tags:
  - name: GEFT Sessions
    description: Create, monitor, and manage GEFT payment sessions
paths:
  /api/v2/sessions/{sessionId}/details:
    get:
      tags:
        - GEFT Sessions
      summary: Get GEFT Session Details
      description: >-
        Retrieve comprehensive session information including verified payor
        account details.
      operationId: getGEFTSessionDetails
      parameters:
        - name: sessionId
          in: path
          required: true
          description: Unique session identifier obtained from session creation.
          schema:
            type: string
            format: uuid
          example: aadd08f2-83ce-456d-84ed-c68cfed4ee7b
        - name: Authorization
          in: header
          required: true
          description: Bearer token received from /authorize endpoint.
          schema:
            type: string
            pattern: ^Bearer .+
      responses:
        '200':
          description: Session details retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  sessionId:
                    type: string
                    format: uuid
                    description: Unique session identifier.
                  status:
                    type: string
                    description: Current session status.
                  step:
                    type: object
                    properties:
                      current:
                        type: string
                        enum:
                          - Start
                          - Consent
                          - BankSelection
                          - BankConnection
                          - AccountSelection
                          - AmountSelection
                          - GuaranteeOffer
                          - Review
                          - Pad
                          - Complete
                        description: Current step of the session flow.
                      aggregationRequestId:
                        type: string
                        format: uuid
                        description: Unique identifier for aggregation flow.
                      padId:
                        type: string
                        format: uuid
                        description: Unique identifier for PAD generated for session.
                  referenceId:
                    type: string
                    description: Reference ID provided during session creation.
                  amount:
                    type: number
                    description: Payment amount.
                  type:
                    type: string
                    description: Payment type (EFT).
                  direction:
                    type: string
                    description: Payment direction (DEBIT).
                  currency:
                    type: string
                    description: Payment currency (CAD).
                  options:
                    type: object
                    description: Configuration parameters set during session initiation.
                    properties:
                      guarantee:
                        type: object
                        properties:
                          enable:
                            type: boolean
                            description: Whether guarantee was requested.
                      notificationPreferences:
                        type: object
                        properties:
                          language:
                            type: string
                            enum:
                              - EN
                              - FR
                            description: Language preference for notifications.
                      showConsentScreen:
                        type: boolean
                        nullable: true
                        description: Whether Flinks consent screen is displayed.
                      limits:
                        type: object
                        properties:
                          minimumAmount:
                            type: number
                            nullable: true
                            description: Minimum allowed payment amount.
                          maximumAmount:
                            type: number
                            nullable: true
                            description: Maximum allowed payment amount.
                      amountModification:
                        type: boolean
                        description: Whether the user can modify the amount.
                      redirectPreferences:
                        type: object
                        nullable: true
                        properties:
                          mode:
                            type: string
                            enum:
                              - JsEvents
                              - RedirectUri
                            description: Redirect mode for session completion.
                          urlSuccess:
                            type: string
                            format: uri
                            nullable: true
                            description: URL to redirect on success.
                          urlExit:
                            type: string
                            format: uri
                            nullable: true
                            description: URL to redirect on exit.
                  payor:
                    type: object
                    nullable: true
                    description: >-
                      Payor information including verified account details
                      (available after Initiated stage).
                    properties:
                      email:
                        type: string
                        nullable: true
                        description: Payor's email address.
                      firstName:
                        type: string
                        nullable: true
                        description: Payor's first name.
                      lastName:
                        type: string
                        nullable: true
                        description: Payor's last name.
                      middleName:
                        type: string
                        nullable: true
                        description: Payor's middle name.
                      account:
                        type: object
                        nullable: true
                        description: >-
                          Bank account information after user authentication
                          (null before Initiated stage).
                        properties:
                          institutionCode:
                            type: string
                            nullable: true
                            description: Institution code.
                          transitNumber:
                            type: string
                            nullable: true
                            description: Transit number of the account.
                          accountNumber:
                            type: string
                            nullable: true
                            description: Masked account number showing last 4 digits.
                          accountLabel:
                            type: string
                            nullable: true
                            description: Optional label of the account.
                          availableBalance:
                            type: number
                            nullable: true
                            description: Available balance of account.
                      address:
                        type: object
                        nullable: true
                        description: Payor's address information.
                        properties:
                          addressLine1:
                            type: string
                            nullable: true
                            description: Street address.
                          addressLine2:
                            type: string
                            nullable: true
                            description: Additional address line.
                          unit:
                            type: string
                            nullable: true
                            description: Unit or apartment number.
                          city:
                            type: string
                            nullable: true
                            description: City name.
                          province:
                            type: string
                            nullable: true
                            description: Province or territory.
                          country:
                            type: string
                            nullable: true
                            description: Country code.
                          postalCode:
                            type: string
                            nullable: true
                            description: Postal code.
                  payee:
                    type: object
                    nullable: true
                    description: Payee account information.
                    properties:
                      account:
                        type: object
                        nullable: true
                        properties:
                          institutionCode:
                            type: string
                            nullable: true
                            description: Institution code.
                          transitNumber:
                            type: string
                            nullable: true
                            description: Transit number.
                          accountNumber:
                            type: string
                            nullable: true
                            description: Destination account number (masked).
                          accountLabel:
                            type: string
                            nullable: true
                            description: Display label for the account.
                  guaranteeDetails:
                    type: object
                    nullable: true
                    description: Guarantee evaluation details for the session.
                    properties:
                      guaranteeOffered:
                        type: boolean
                        description: Whether a guarantee was offered for this session.
                      guaranteeAccepted:
                        type: boolean
                        nullable: true
                        description: >-
                          Whether the guarantee was accepted (null if not yet
                          decided).
                      highestDebitAmountToGuarantee:
                        type: number
                        description: Maximum debit amount eligible for guarantee.
                      overallRiskLevel:
                        type: string
                        enum:
                          - Unknown
                          - Low
                          - Low_Medium
                          - Medium
                          - Medium_High
                          - High
                        description: Overall risk assessment level.
                      transactionRiskLevel:
                        type: string
                        enum:
                          - Unknown
                          - Low
                          - Low_Medium
                          - Medium
                          - Medium_High
                          - High
                        description: Transaction-specific risk level.
                      userRiskLevel:
                        type: string
                        enum:
                          - Unknown
                          - Low
                          - Low_Medium
                          - Medium
                          - Medium_High
                          - High
                        description: User-specific risk level.
                      otherRiskLevel:
                        type: string
                        enum:
                          - Unknown
                          - Low
                          - Low_Medium
                          - Medium
                          - Medium_High
                          - High
                        description: Other risk factors level.
                      guaranteedEftType:
                        type: string
                        nullable: true
                        enum:
                          - Full
                          - Partial
                          - Minimal
                        description: Type of guarantee coverage provided.
                  userDetails:
                    type: object
                    nullable: true
                    description: Identity verification results from user matching.
                    properties:
                      matchingPerformed:
                        type: boolean
                        description: Whether identity matching was performed.
                      nameMatch:
                        type: number
                        format: double
                        description: Name matching score (0 to 100).
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized - Invalid or expired access token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Session not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error type identifier
          example: invalid_request
        error_description:
          type: string
          description: Human-readable error description
          example: 'Missing required field: firstName'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token obtained from /api/v1/authorize endpoint

````