Lean Technologies Credit Obligations (New) API

The Credit Obligations (New) API from Lean Technologies — 1 operation(s) for credit obligations (new).

OpenAPI Specification

lean-technologies-credit-obligations-new-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Consents Account On File Account Controls (New) Account Controls (New) Credit Obligations (New) API
  version: v0.2.3
servers:
- url: https://sandbox.leantech.me
  description: Sandbox
- url: https://api2.leantech.me
  description: Production
security:
- bearerAuth: []
tags:
- name: Credit Obligations (New)
paths:
  /insights/v3/credit-obligations:
    servers: []
    get:
      operationId: getCreditObligationsV3
      summary: Get Credit Obligations
      description: Delivers a structured view of a user's borrowing activity as per the connected account.  Shows repayments and disbursements broken down by lender name and credit type.
      parameters:
      - name: entity_id
        in: query
        description: The `entity_id` you're querying for.
        required: true
        schema:
          type: string
          format: uuid
      - name: start_date
        in: query
        description: The start date in UTC (in the format YYYY-MM-DD) of the analysis window. When omitted, defaults to the earliest transaction available for the entity.
        required: false
        schema:
          type: string
          format: date
        x-field-extra-annotation: '@jakarta.validation.constraints.PastOrPresent'
      - name: end_date
        in: query
        description: The end date in UTC (in the format YYYY-MM-DD) of the analysis window (inclusive — transactions on this date are included). When omitted, defaults to the current time.
        required: false
        schema:
          type: string
          format: date
        x-field-extra-annotation: '@jakarta.validation.constraints.PastOrPresent'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                - properties:
                    insights:
                      $ref: '#/components/schemas/CreditObligationsV2Payload'
                    type:
                      $ref: '#/components/schemas/InsightsResultType'
                  type: object
              examples:
                Get_CreditObligations:
                  summary: Successful get credit obligations
                  value:
                    status: OK
                    results_id: 6cdf799f-6beb-4fb5-a9de-bf07771c8da3
                    message: Data successfully retrieved
                    meta: null
                    timestamp: '2026-06-04T07:19:41.702056182Z'
                    status_detail: null
                    type: credit-obligations
                    insights:
                      credit_obligations:
                        repayments:
                          overall:
                            transaction_count: 6
                            total_amount:
                              currency: AED
                              amount: 2410.61
                            average_monthly_amount:
                              currency: AED
                              amount: 66.96
                            average_monthly_amount_active:
                              currency: AED
                              amount: 602.65
                            average_monthly_transactions: 0.17
                            active_months: 4
                            lender_count: 2
                            lender_organizations:
                            - TABBY
                            - Tamara
                          breakdown:
                          - lender_name: TABBY
                            credit_type: BNPL
                            transaction_count: 3
                            total_amount:
                              currency: AED
                              amount: 1497.92
                            average_monthly_amount:
                              currency: AED
                              amount: 41.61
                            average_monthly_amount_active:
                              currency: AED
                              amount: 748.96
                            first_transaction_date: '2025-07-27'
                            last_transaction_date: '2025-08-26'
                            active_months: 2
                          - lender_name: Tamara
                            credit_type: BNPL
                            transaction_count: 3
                            total_amount:
                              currency: AED
                              amount: 912.69
                            average_monthly_amount:
                              currency: AED
                              amount: 25.35
                            average_monthly_amount_active:
                              currency: AED
                              amount: 304.23
                            first_transaction_date: '2025-06-27'
                            last_transaction_date: '2025-09-26'
                            active_months: 3
                        disbursements:
                          overall:
                            transaction_count: 1
                            total_amount:
                              currency: AED
                              amount: 44482.5
                            average_monthly_amount:
                              currency: AED
                              amount: 1235.63
                            average_monthly_amount_active:
                              currency: AED
                              amount: 44482.5
                            average_monthly_transactions: 0.03
                            active_months: 1
                            lender_count: 1
                            lender_organizations:
                            - tamweelaloula
                          breakdown:
                          - lender_name: tamweelaloula
                            transaction_count: 1
                            total_amount:
                              currency: AED
                              amount: 44482.5
                            average_monthly_amount:
                              currency: AED
                              amount: 1235.63
                            average_monthly_amount_active:
                              currency: AED
                              amount: 44482.5
                            first_transaction_date: '2025-07-17'
                            last_transaction_date: '2025-07-17'
                            active_months: 1
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResult'
              examples:
                InvalidParametersExample:
                  $ref: '#/components/examples/InsightsInvalidParametersExample'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResult'
              examples:
                UserPermissionsNotGrantedExample:
                  $ref: '#/components/examples/InsightsUserPermissionsNotGrantedExample'
                ConsentExpiredExample:
                  $ref: '#/components/examples/InsightsConsentExpiredExample'
                TransactionRangeNotGrantedExample:
                  $ref: '#/components/examples/InsightsTransactionRangeNotGrantedExample'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResult'
              examples:
                UnknownEntityExample:
                  $ref: '#/components/examples/InsightsUnknownEntityExample'
                DataNotFoundExample:
                  $ref: '#/components/examples/InsightsDataNotFoundExample'
        '408':
          description: Request Timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResult'
              examples:
                TimeoutExample:
                  $ref: '#/components/examples/InsightsTimeoutExample'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResult'
              examples:
                InternalServerErrorExample:
                  $ref: '#/components/examples/InsightsInternalServerErrorExample'
      tags:
      - Credit Obligations (New)
components:
  schemas:
    CashFlowNet:
      type: object
      properties:
        overall_amount:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        net_cashflow:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
    CashBalanceTotal:
      type: object
      properties:
        average_balance:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        initial_balance:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        current_balance:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        available_balance:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        frequency_of_contributions:
          description: How often deposits are made to the account
          type: string
    CreditObligationsV2:
      description: Lender-oriented view of credit activity, split into repayments and disbursements.
      type: object
      properties:
        repayments:
          description: Aggregated credit repayment activity (e.g. BNPL instalments, loan repayments).
          allOf:
          - $ref: '#/components/schemas/CreditObligationsRepayments'
        disbursements:
          description: Aggregated credit disbursement activity (loans received).
          allOf:
          - $ref: '#/components/schemas/CreditObligationsDisbursements'
      additionalProperties: false
      required:
      - repayments
      - disbursements
    CreditDebitBehaviour:
      type: object
      properties:
        periods:
          type: array
          items:
            $ref: '#/components/schemas/CreditDebitBehaviourPeriod'
      required:
      - periods
    CashflowPatterns:
      description: Cashflow pattern analysis results.
      type: object
      properties:
        cashflow_patterns:
          description: List of identified cashflow patterns.
          type: array
          items:
            $ref: '#/components/schemas/CashflowPattern'
      required:
      - cashflow_patterns
    CreditAssessmentComputedIndicators:
      description: Derived financial indicators used in credit assessment decisions.
      type: object
      properties:
        average_monthly_net_cashflow:
          description: Average monthly net cashflow (weighted income minus total expenses).
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        dbr:
          description: monthly credit obligations ÷ weighted monthly income, with the lender's configurable ceiling (default 0.45) and the maximum new installment affordable before that ceiling
          allOf:
          - $ref: '#/components/schemas/CreditAssessmentRatioIndicator'
        affordability:
          description: (essential expenses + credit obligations) ÷ weighted monthly income over configured essential categories, with the lender's configurable ceiling (default 0.70) and the maximum new installment affordable before that ceiling.
          allOf:
          - $ref: '#/components/schemas/CreditAssessmentRatioIndicator'
      additionalProperties: false
      required:
      - average_monthly_net_cashflow
      - dbr
      - affordability
    CurrencyAmount:
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          description: The amount of money in the currency specified.
          type: number
      required:
      - currency
      - amount
    InsightsResultType:
      description: type of insight
      type: string
      enum:
      - income
      - employment
      - cashflow
      - credits-obligations
      - non-credits-obligations
      - expenses
      - cash-balances
      - freelancer-cashflow
      - behaviors
      - cashflow-patterns
      - credit-assessments
      - account-controls
      - credit-obligations
    NonCreditObligationsMonthlyAmount:
      type: object
      properties:
        month:
          description: The month name (e.g., "September", "October")
          type: string
        amount:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
    Result:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ResultStatus'
        results_id:
          description: The unique identifier for the request
          type: string
          format: uuid
        message:
          description: A message describing the status of the request
          type: string
        meta:
          description: Meta information about the request
          type:
          - object
          - 'null'
          additionalProperties:
            type: string
        timestamp:
          description: The datetime of when the request was made
          type: string
          format: date-time
        status_detail:
          description: Additional information about the status
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/StatusDetail'
      required:
      - status
      - results_id
      - message
      - timestamp
    CashFlowCategoryAmountCount:
      type: object
      properties:
        category:
          description: The category of the cash flow
          type: string
        amount:
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        count:
          description: The count of transactions in this category
          type: integer
    EmploymentDetails:
      type: object
      properties:
        bank_employer_name:
          description: The name of the employer as it appears in bank transaction descriptions. This is the raw employer name extracted directly from salary payment transaction records.
          type:
          - string
          - 'null'
        matched_reference_employer:
          description: Information about the verified employer entity that matched with the bank employer name. Value will be NULL if no matching stored in our database
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/EmployerDetails'
          required:
          - name
          - cr_number
        salary_consistent:
          description: Boolean indicator that determines if the salary payments from this employer follow a consistent pattern. true indicates stable payment patterns, while false indicates irregularity. This is calculated by comparing both date and amount variances against predefined thresholds (typically 5 days for dates and 1000 currency units for amounts).
          type:
          - boolean
          - 'null'
        salary_date_variance:
          description: A statistical measure of the variability in the timing of salary payments, expressed as the standard deviation of intervals (in days) between consecutive salary payments. Lower values indicate more consistent payment timing. A value of 0 means all payments were made at exactly the same interval.
          type:
          - number
          - 'null'
          format: double
          x-java-type: java.math.BigDecimal
        salary_amount_variance:
          description: A statistical measure of the variability in salary payment amounts, expressed as the standard deviation of payment amounts. Lower values indicate more consistent payment amounts. A value of 0 means all payments were exactly the same amount.
          type:
          - number
          - 'null'
          format: double
          x-java-type: java.math.BigDecimal
        first_salary_date:
          description: The timestamp of the earliest detected salary payment from this employer. This indicates when the employment relationship began or when the earliest available transaction record starts.
          type:
          - string
          - 'null'
          format: date-time
          x-java-type: java.time.Instant
      required:
      - bank_employer_name
      - matched_reference_employer
      - salary_consistent
      - salary_date_variance
      - salary_amount_variance
      - first_salary_date
    CreditObligationsRepayments:
      description: Repayment aggregates and breakdown by lender_name, credit_type.
      type: object
      properties:
        overall:
          description: Overall repayment summary across all lenders.
          allOf:
          - $ref: '#/components/schemas/CreditObligationsOverall'
        breakdown:
          description: One entry per lender that received repayments.
          type: array
          items:
            $ref: '#/components/schemas/CreditObligationsRepaymentBreakdown'
      additionalProperties: false
      required:
      - overall
      - breakdown
    CreditAssessmentOtherIncomeBreakdownItem:
      description: A single non-employment income source with its contribution details.
      type: object
      properties:
        source:
          description: The income source type.
          allOf:
          - $ref: '#/components/schemas/IncomeSourceType'
        total_amount:
          description: Total amount from this income source over the analysis period.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_amount:
          description: Average monthly amount from this income source.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        contribution_factor:
          description: Factor applied to weight this income source in the overall income calculation. Range is 0.0 to 1.0.
          type: number
        contributed_average_monthly_income:
          description: Weighted average monthly amount after applying the contribution factor.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
      additionalProperties: false
      required:
      - source
      - total_amount
      - average_monthly_amount
      - contribution_factor
      - contributed_average_monthly_income
    CurrentCreditCardsBalance:
      type: object
      properties:
        amount:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
    BehavioralMerchantBreakdown:
      description: Aggregate stats for one merchant.
      type: object
      properties:
        merchant_name:
          description: Merchant name.
          type: string
        transaction_count:
          description: Number of transactions with this merchant.
          type: integer
        total_amount:
          description: Total spend with this merchant.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_transaction_amount:
          description: Average transaction amount with this merchant.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_transactions:
          description: Average monthly transaction count for this merchant across the full analysis window.
          type: number
          format: double
          x-java-type: java.math.BigDecimal
        average_monthly_transactions_active:
          description: Average monthly transaction count for this merchant across active months only.
          type: number
          format: double
          x-java-type: java.math.BigDecimal
        average_monthly_amount:
          description: Average monthly spend with this merchant across the full analysis window.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_amount_active:
          description: Average monthly spend with this merchant across active months only.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        first_transaction_date:
          description: Timestamp of the first transaction with this merchant.
          type: string
          format: date-time
        last_transaction_date:
          description: Timestamp of the most recent transaction with this merchant.
          type: string
          format: date-time
        active_months:
          description: Number of months with at least one transaction with this merchant.
          type: integer
      required:
      - merchant_name
      - transaction_count
      - total_amount
      - average_transaction_amount
      - average_monthly_transactions
      - average_monthly_transactions_active
      - average_monthly_amount
      - average_monthly_amount_active
      - first_transaction_date
      - last_transaction_date
      - active_months
    IncomeMonthlyTotal:
      type: object
      properties:
        month:
          description: The month of the reporting period
          type: integer
          format: int32
        year:
          description: The year of the reporting period
          type: integer
          format: int32
        amount:
          description: The total amount of transactions in the Month
          type: number
        count:
          description: Number of transactions in the month
          type: integer
          format: int32
        is_month_complete:
          description: Indicates whether the data for this month is complete
          type: boolean
      x-class-extra-annotation: '@lombok.AllArgsConstructor'
      x-toBuilder: true
    CreditAssessmentBalance:
      description: Balance statistics over the analysis period.
      type: object
      properties:
        average_balance:
          description: Average account balance over the analysis period.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        minimum_balance:
          description: Minimum account balance observed during the analysis period.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        maximum_balance:
          description: Maximum account balance observed during the analysis period.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
      additionalProperties: false
      required:
      - average_balance
      - minimum_balance
      - maximum_balance
    IncomeSourceType:
      description: Classification of income source type (combined enum for all income sources)
      type: string
      enum:
      - EMPLOYMENT
      - RETIREMENT
      - HOUSING_BENEFIT
      - GIG_ECONOMY
      - UNEMPLOYMENT
      - RENTAL
      - TRANSFER_FROM_OWN_APPLICATION
      - STUDENT_STIPEND
      - INVESTMENTS
      - CITIZEN_ACCOUNT
      - SOCIAL_SECURITY
      - SIDE_BUSINESS
      - BONUS
      - CASH_DEPOSIT
    BigPayments:
      type: object
      properties:
        periods:
          type: array
          items:
            $ref: '#/components/schemas/BigPaymentsPeriod'
      required:
      - periods
    CreditObligationsV2Payload:
      description: Insights payload wrapper carrying the lender-oriented credit-obligations
      type: object
      properties:
        credit_obligations:
          description: Lender-oriented credit obligations insights.
          allOf:
          - $ref: '#/components/schemas/CreditObligationsV2'
      additionalProperties: false
      required:
      - credit_obligations
    BehaviorsMerchantSection:
      description: Merchant breakdown with detected-merchant count.
      type: object
      properties:
        detected_merchant_count:
          description: Number of distinct merchants detected.
          type: integer
        transaction_count:
          description: Total number of classifiable debit transactions in the analysis window.
          type: integer
        breakdown:
          description: One entry per detected merchant.
          type: array
          items:
            $ref: '#/components/schemas/BehavioralMerchantBreakdown'
      required:
      - detected_merchant_count
      - transaction_count
      - breakdown
    EmployerDetails:
      type: object
      properties:
        name:
          description: Official name of the employer in English and Arabic.
          allOf:
          - $ref: '#/components/schemas/Translation'
        cr_number:
          description: Employer’s Commercial Registration (CR) number.
          type:
          - integer
          - 'null'
          format: int64
    CreditAssessmentRatioIndicator:
      description: A ratio-based credit indicator including the computed rate, regulatory ceiling, and derived maximum installment.
      type: object
      properties:
        rate:
          description: The computed ratio as a decimal between 0 and 1.
          type: number
        ceiling:
          description: The regulatory or policy ceiling for this ratio as a decimal between 0 and 1.
          type: number
        maximum_monthly_installment:
          description: The maximum monthly installment the entity can afford based on this ratio and its ceiling.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
      additionalProperties: false
      required:
      - rate
      - ceiling
      - maximum_monthly_installment
    FreelancerInflowsOutflows:
      type: object
      properties:
        total_amount:
          description: Total amount of inflows/outflows
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        transactions_count:
          description: Total number of transactions
          type: integer
        periods:
          description: Historical data for different periods
          type: array
          items:
            $ref: '#/components/schemas/FreelancerPeriodFactors'
    CreditObligationsMonthlyTotal:
      type: object
      properties:
        month:
          description: The month number (1-12)
          type: integer
          format: int32
        year:
          description: The year
          type: integer
          format: int32
        is_month_complete:
          description: Indicates if the month has complete data
          type: boolean
        loan_repayments:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/AmountCount'
        loan_received:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/AmountCount'
        credit_cards_repayments:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/AmountCount'
        credit_cards_spending:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/AmountCount'
        credit_cards_balance:
          type:
          - object
          - 'null'
          allOf:
          - $ref: '#/components/schemas/BalanceInsights'
    ExpensesMonthlyAmount:
      type: object
      properties:
        month:
          description: 'Number of month within the year (e.g.: January is represented as 1 and December is represented as 12)'
          type: integer
          format: int32
        year:
          description: Year
          type: integer
          format: int32
        amount:
          description: Total expenses for the month
          type: number
          x-java-type: java.math.BigDecimal
      required:
      - amount
    CreditObligationsOverall:
      description: Aggregate totals across all lenders for a credit activity type.
      type: object
      properties:
        transaction_count:
          description: Total number of transactions across all lenders.
          type: integer
        total_amount:
          description: Total amount across all transactions.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_amount:
          description: Total amount divided by the number of months in the full analysis window.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_amount_active:
          description: Total amount divided by the number of months that had at least one transaction.
          allOf:
          - $ref: '#/components/schemas/CurrencyAmount'
        average_monthly_transactions:
          description: Average number of transactions per month across the full analysis window (all months, not just active months).
          type: number
          format: double
          x-java-type: java.math.BigDecimal
        active_months:
          description: Number of months that contained at least one transaction.
          type: integer
        lender_count:
          description: Number of distinct lender organizations detected.
          type: integer
        lender_organizations:
          description: Distinct lender organization names detected.
          type: array
          items:
            type: string
      additionalProperties: false
      required:
      - transaction_count
      - total_amount
      - average_monthly_amount
      - average_monthly_amount_active
      - average_monthly_transactions
      - active_months
      - lender_count
      - lender_organizations
    Expenses:
      type: object
      properties:
        currency:
          description: The 3 Letter ISO code denominating the currency that the salary is provided in. This will be local currency (AED in UAE).
          type: string
        total:
          description: Insights on the expenses since start_date.
          allOf:
          - $ref: '#/components/schemas/ExpensesTotal'
        monthly_totals:
          description: Total expenses for all months from start_date until today.
          type: array
          items:
            $ref: '#/components/schemas/MonthlyTotalExpenses'
        transactions:
          description: List of expense transactions (internal use only, not serialized in API response)
          type: array
          items:
            $ref: '#/components/schemas/ExpensesTransaction'
          x-field-extra-annotation: '@com.fasterxml.jackson.annotation.JsonIgnore'
      additionalProperties: false
      required:
      - currency
      - total
      - monthly_totals
      - transactions
    IncomeTotal:
      type: object
      properties:
        amount:
          description: The total amount of transactions
          type: number
        count:
          description: The total number of transactions within the time period.
          type: integer
          format: int32
        last_date_time:
          description: End date for transactions range
          type: string
          format: date-time
        first_date_time:
          description: Start date for transactions range
          type: string
          format: date-time
        average_monthly_amount:
          description: The average of all transaction amounts per month within the time period.
          type: number
        average_monthly_count:
          description: The average number of transactions per month within the period.
          type: number
        average_monthly_received_value:
          description: The average received value calculated as total amount divided by the count of months that had income (excluding zero months).
          type: number
        maximum_monthly_amount:
          description: Maximum monthly transaction amount within the period.
          allOf:
          - $ref: '#/components/schemas/MonthlyAmount'
        minimum_monthly_amount:
          description: Minimum monthly transaction amount within the period.
          allOf:
          - $ref: '#/components/schemas/MonthlyAmount'
      x-toBuilder: true
    AccountControls:
      description: 'Account Controls assessment of a connected account: config-independent observable signals, configurable threshold-gate flags, and an aggregated eligibility verdict for underwriting decisions.'
      type: object
      properties:
        signals:
          $ref: '#/components/schemas/AccountControlsSignals'
        thresholds:
          $ref: '#/components/schemas/AccountControlsThresholds'
        verdict:
          $ref: '#/components/schemas/AccountControlsVerdict'
      additionalProperties: false
      required:
      - signals
      - thresholds
      - verdict
    IncomeTransaction:
      type: object
      properties:
        account_id:
          description: The account ID associated with the transaction
          type: s

# --- truncated at 32 KB (92 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lean-technologies/refs/heads/main/openapi/lean-technologies-credit-obligations-new-api-openapi.yml