jXchange REST

Translates information between Jack Henry's SilverLake and CIF 20/20 core platforms and third-party applications via a REST surface. Resources span deposits, loans, customers, accounts, transactions, and general ledger — the system-of-record contract for community-bank cores.

jXchange REST is one of 11 APIs that Jack Henry & Associates publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Core Banking, jXchange, SilverLake, CIF 20/20, and Deposits. The published artifact set on APIs.io includes an OpenAPI specification and API documentation.

OpenAPI Specification

jxchange-rest-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: jXchange REST
  description: |
    jXchange is Jack Henry's information-translation surface that brokers
    requests between third-party applications and the SilverLake or
    CIF 20/20 community-bank cores. The REST variant exposes deposits,
    loans, customers, accounts, transactions, and general-ledger domains.
    A SOAP variant is also published at jackhenry.dev/jxchange-soap/.
  version: '2024'
servers:
  - url: https://jxchange.jackhenry.com
    description: jXchange production gateway
tags:
  - name: Customers
    description: Customer (CIF) records.
  - name: Deposit Accounts
    description: DDA/savings/CD deposit accounts.
  - name: Loan Accounts
    description: Consumer and commercial loans.
  - name: Transactions
    description: Account postings and history.
  - name: General Ledger
    description: GL account inquiry.
  - name: Cards
    description: Card relationships on accounts.
security:
  - bearerAuth: []
paths:
  /jxchange/v1/customers:
    get:
      summary: Search Customers
      operationId: searchCustomers
      tags: [Customers]
      parameters:
        - name: ssn
          in: query
          schema: { type: string }
        - name: lastName
          in: query
          schema: { type: string }
        - name: cursor
          in: query
          schema: { type: string }
      responses:
        '200':
          description: Customer matches.
          content:
            application/json:
              schema:
                type: object
                properties:
                  customers:
                    type: array
                    items: { $ref: '#/components/schemas/Customer' }
                  nextCursor: { type: string, nullable: true }
  /jxchange/v1/customers/{customerId}:
    get:
      summary: Get Customer
      operationId: getCustomer
      tags: [Customers]
      parameters:
        - name: customerId
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Customer record.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/Customer' }
  /jxchange/v1/deposit-accounts/{accountNumber}:
    get:
      summary: Get Deposit Account
      operationId: getDepositAccount
      tags: [Deposit Accounts]
      parameters:
        - name: accountNumber
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Deposit-account record.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/DepositAccount' }
  /jxchange/v1/loan-accounts/{accountNumber}:
    get:
      summary: Get Loan Account
      operationId: getLoanAccount
      tags: [Loan Accounts]
      parameters:
        - name: accountNumber
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Loan-account record.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/LoanAccount' }
  /jxchange/v1/accounts/{accountNumber}/transactions:
    get:
      summary: List Account Transactions
      operationId: listAccountTransactions
      tags: [Transactions]
      parameters:
        - name: accountNumber
          in: path
          required: true
          schema: { type: string }
        - name: startDate
          in: query
          schema: { type: string, format: date }
        - name: endDate
          in: query
          schema: { type: string, format: date }
      responses:
        '200':
          description: Transactions for the account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  transactions:
                    type: array
                    items: { $ref: '#/components/schemas/CoreTransaction' }
  /jxchange/v1/general-ledger/{glAccountNumber}:
    get:
      summary: Get GL Account
      operationId: getGlAccount
      tags: [General Ledger]
      parameters:
        - name: glAccountNumber
          in: path
          required: true
          schema: { type: string }
      responses:
        '200':
          description: General-ledger account.
          content:
            application/json:
              schema: { $ref: '#/components/schemas/GLAccount' }
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    Customer:
      type: object
      properties:
        customerId: { type: string }
        firstName: { type: string }
        lastName: { type: string }
        ssnLast4: { type: string }
        dateOfBirth: { type: string, format: date }
        primaryAddress:
          type: object
          properties:
            line1: { type: string }
            line2: { type: string }
            city: { type: string }
            state: { type: string }
            postalCode: { type: string }
        primaryPhone: { type: string }
        primaryEmail: { type: string, format: email }
        relationshipOpenDate: { type: string, format: date }
    DepositAccount:
      type: object
      properties:
        accountNumber: { type: string }
        product: { type: string }
        productType:
          type: string
          enum: [Checking, Savings, MoneyMarket, CD]
        status:
          type: string
          enum: [Open, Closed, Dormant, Frozen]
        currentBalance: { type: number, format: double }
        availableBalance: { type: number, format: double }
        interestYTD: { type: number, format: double }
        openDate: { type: string, format: date }
        primaryOwnerCustomerId: { type: string }
    LoanAccount:
      type: object
      properties:
        accountNumber: { type: string }
        product: { type: string }
        loanType:
          type: string
          enum: [Mortgage, HELOC, Auto, Consumer, Commercial, SBA]
        status:
          type: string
          enum: [Current, PastDue, ChargedOff, PaidOff]
        originalAmount: { type: number, format: double }
        currentBalance: { type: number, format: double }
        interestRate: { type: number, format: double }
        nextPaymentAmount: { type: number, format: double }
        nextPaymentDate: { type: string, format: date }
        maturityDate: { type: string, format: date }
        primaryOwnerCustomerId: { type: string }
    CoreTransaction:
      type: object
      properties:
        transactionId: { type: string }
        postDate: { type: string, format: date }
        effectiveDate: { type: string, format: date }
        amount: { type: number, format: double }
        type:
          type: string
          enum: [Debit, Credit, Fee, Interest, Adjustment]
        description: { type: string }
        memo: { type: string }
        runningBalance: { type: number, format: double }
        sourceCode: { type: string }
    GLAccount:
      type: object
      properties:
        glAccountNumber: { type: string }
        name: { type: string }
        balance: { type: number, format: double }
        accountClass:
          type: string
          enum: [Asset, Liability, Equity, Income, Expense]
        branch: { type: string }