CSG Systems Transactions API

Payment transaction processing (credit card, echeck, scheduled)

OpenAPI Specification

csg-transactions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: CSG Forte REST Customers Transactions API
  description: CSG Forte provides full-stack REST APIs for payment processing within a PCI-compliant architecture. The API enables merchants and partners to create and update credit card, echeck, and scheduled transactions, securely manage customer and payment data, and query settlement information. Authentication uses standard HTTP credential headers with organization ID, location ID, and API key.
  version: 3.0.0
  contact:
    name: Forte Support
    url: https://support.forte.net/
  license:
    name: Forte Terms of Service
    url: https://www.forte.net/
servers:
- url: https://api.forte.net/v3
  description: Forte REST API v3 Production
- url: https://sandbox.forte.net/api/v3
  description: Forte REST API v3 Sandbox
security:
- basicAuth: []
tags:
- name: Transactions
  description: Payment transaction processing (credit card, echeck, scheduled)
paths:
  /organizations/{organizationId}/locations/{locationId}/transactions:
    get:
      operationId: listTransactions
      summary: List transactions for a location
      description: Returns a paginated list of transactions for the specified organization and location. Supports filtering by date range, status, and payment method type.
      tags:
      - Transactions
      parameters:
      - name: organizationId
        in: path
        required: true
        description: Organization identifier (org_XXXXX format)
        schema:
          type: string
          pattern: ^org_[A-Za-z0-9]+$
      - name: locationId
        in: path
        required: true
        description: Location identifier (loc_XXXXX format)
        schema:
          type: string
          pattern: ^loc_[A-Za-z0-9]+$
      - name: start_date
        in: query
        description: Filter transactions on or after this date (YYYY-MM-DD)
        schema:
          type: string
          format: date
      - name: end_date
        in: query
        description: Filter transactions on or before this date (YYYY-MM-DD)
        schema:
          type: string
          format: date
      - name: action
        in: query
        description: Filter by transaction action
        schema:
          type: string
          enum:
          - sale
          - authorize
          - capture
          - void
          - credit
          - force
      - name: response_code
        in: query
        description: Filter by response code (A for approved, D for declined, etc.)
        schema:
          type: string
      - name: page_index
        in: query
        schema:
          type: integer
          default: 1
      - name: page_size
        in: query
        schema:
          type: integer
          default: 50
          maximum: 200
      responses:
        '200':
          description: List of transactions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionList'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    post:
      operationId: createTransaction
      summary: Create a payment transaction
      description: Submits a new payment transaction. Supports credit card sales, authorizations, captures, voids, credits, and ACH/echeck transactions. Also supports scheduled/recurring transactions.
      tags:
      - Transactions
      parameters:
      - name: organizationId
        in: path
        required: true
        schema:
          type: string
      - name: locationId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionRequest'
      responses:
        '201':
          description: Transaction created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '400':
          $ref: '#/components/responses/BadRequest'
  /organizations/{organizationId}/locations/{locationId}/transactions/{transactionId}:
    get:
      operationId: getTransaction
      summary: Get transaction details
      description: Returns detailed information for a specific transaction.
      tags:
      - Transactions
      parameters:
      - name: organizationId
        in: path
        required: true
        schema:
          type: string
      - name: locationId
        in: path
        required: true
        schema:
          type: string
      - name: transactionId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Transaction details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateTransaction
      summary: Update a transaction (void or capture)
      description: Updates an existing transaction. Used to void, capture, or credit a prior transaction.
      tags:
      - Transactions
      parameters:
      - name: organizationId
        in: path
        required: true
        schema:
          type: string
      - name: locationId
        in: path
        required: true
        schema:
          type: string
      - name: transactionId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionUpdateRequest'
      responses:
        '200':
          description: Transaction updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transaction'
components:
  schemas:
    Transaction:
      type: object
      properties:
        transaction_id:
          type: string
          description: Unique transaction identifier (trn_XXXXX format)
        location_id:
          type: string
        action:
          type: string
          enum:
          - sale
          - authorize
          - capture
          - void
          - credit
          - force
          - verify
        authorization_amount:
          type: number
          format: double
        authorization_code:
          type: string
        entered_by:
          type: string
        received_date:
          type: string
          format: date-time
        transaction_date:
          type: string
          format: date
        response:
          $ref: '#/components/schemas/TransactionResponse'
        billing_address:
          $ref: '#/components/schemas/Address'
        card:
          $ref: '#/components/schemas/CardInfo'
        echeck:
          $ref: '#/components/schemas/EcheckInfo'
        customer_token:
          type: string
        paymethod_token:
          type: string
        schedule_id:
          type: string
    CardRequest:
      type: object
      properties:
        card_type:
          type: string
        name_on_card:
          type: string
        account_number:
          type: string
          description: Full card number (PCI sensitive)
        expire_month:
          type: string
          pattern: ^(0[1-9]|1[0-2])$
        expire_year:
          type: string
          pattern: ^[0-9]{4}$
        cvv:
          type: string
    CardInfo:
      type: object
      properties:
        card_type:
          type: string
          enum:
          - visa
          - mstr
          - disc
          - amex
          - jcb
          - dine
          - enrt
        name_on_card:
          type: string
        masked_account_number:
          type: string
          description: Masked card number (e.g., XXXX-XXXX-XXXX-1234)
        expire_month:
          type: string
        expire_year:
          type: string
    TransactionList:
      type: object
      properties:
        number_results:
          type: integer
        page_index:
          type: integer
        page_size:
          type: integer
        results:
          type: array
          items:
            $ref: '#/components/schemas/Transaction'
    TransactionRequest:
      type: object
      required:
      - action
      - authorization_amount
      properties:
        action:
          type: string
          enum:
          - sale
          - authorize
          - capture
          - void
          - credit
          - force
          - verify
        authorization_amount:
          type: number
          format: double
          minimum: 0.01
        entered_by:
          type: string
        order_number:
          type: string
        customer_token:
          type: string
        paymethod_token:
          type: string
        card:
          $ref: '#/components/schemas/CardRequest'
        echeck:
          $ref: '#/components/schemas/EcheckRequest'
        billing_address:
          $ref: '#/components/schemas/Address'
        xdata:
          type: object
          description: Custom key-value pairs for extended transaction data
          additionalProperties:
            type: string
    TransactionUpdateRequest:
      type: object
      required:
      - action
      properties:
        action:
          type: string
          enum:
          - capture
          - void
          - credit
        authorization_amount:
          type: number
          format: double
    Address:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        company_name:
          type: string
        physical_address:
          type: string
        locality:
          type: string
          description: City
        region:
          type: string
          description: State/province
        postal_code:
          type: string
        country_code:
          type: string
          default: US
    TransactionResponse:
      type: object
      properties:
        environment:
          type: string
          enum:
          - live
          - sandbox
        response_type:
          type: string
          enum:
          - A
          - D
          - E
          - F
          - U
          description: A=Approved, D=Declined, E=Error, F=Force, U=Undetermined
        response_code:
          type: string
        response_desc:
          type: string
        authorization_code:
          type: string
        avs_result:
          type: string
        cvv_result:
          type: string
    Error:
      type: object
      properties:
        response_type:
          type: string
        response_code:
          type: string
        response_desc:
          type: string
    EcheckRequest:
      type: object
      properties:
        account_type:
          type: string
          enum:
          - checking
          - savings
        account_number:
          type: string
        routing_number:
          type: string
        sec_code:
          type: string
          enum:
          - PPD
          - CCD
          - WEB
          - TEL
    EcheckInfo:
      type: object
      properties:
        account_type:
          type: string
          enum:
          - checking
          - savings
        masked_account_number:
          type: string
        routing_number:
          type: string
  responses:
    Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication using API access ID as username and API secure key as password. Include organization ID and location ID in the X-Forte-Auth-Organization-Id and X-Forte-Auth-Location-Id request headers.