> ## Documentation Index
> Fetch the complete documentation index at: https://help.kajabi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction details

>   The transaction system is a critical part of Kajabi's payment infrastructure, handling all monetary operations while maintaining detailed records for accounting, reporting, and compliance purposes.

  ## Transaction Attributes
  * `provider` (string) - The payment processor used for the payment
  * `action` (string) - Indicate the type of transaction:
    * `charge` - One-time payment
    * `refund` - Money returned to customer
    * `subscribe` - New subscription
    * `subscription_charge` - Recurring subscription payment
    * `free_purchase` - $0 transaction
    * `test` - Test transaction
    * `dispute` - Disputed charge
    * `subscription_update` - Subscription modification
  * `state` (string) - The transaction's status:
    * `initialized` - Transaction started
    * `succeeded` - Transaction completed successfully
    * `failed` - Transaction failed
  * `payment_type` (string) - Indicates the payment structure (nullable)
  * `amount_in_cents` (integer) - The USD price in cents (for precise decimal handling) can be negative for refunds
  * `sales_tax_in_cents` (integer) - The USD sales tax in cents (for precise decimal handling)
  * `payment_fee_in_cents` (integer) - Payment processing fee associated with the transaction (Kajabi Payments only)
  * `currency` (string) - String representing the currency code (nullable) automatically upcased
    * Defaults to "USD" if not specified
  * `currency_symbol` (string) - String representing the currency symbol (nullable)
    * Example: "$" for USD
  * `formatted_amount` (string) - String representing the amount in a human-readable format
    * Includes currency symbol
    * Does not include currency code
    * Example: "$19.99"
  * `settlement_amount_in_cents` (integer) - Price of the payment in cents based on the settlement currency (Kajabi Payments only)
  * `settlement_fee_amount_in_cents` (integer) - Payment processing fee associated with the transaction based on the settlement currency (Kajabi Payments only)
  * `settlement_currency` (string) - Currency of the payment based on settlement, typically the currency of the attached bank account (Kajabi Payments only)
  * `created_at` (string) - The creation date and time, ISO date string format (read-only)

  ## Sparse Fields
  Use the `fields[transactions]` parameter to request only specific attributes:
  ### Only return amount_in_cents and sales_tax_in_cents attributes
  * `GET /v1/transactions/123?fields[transactions]=amount_in_cents,sales_tax_in_cents`

  Response will only include requested fields
  ```json
  {
    "data": {
      "id": "123",
      "type": "transactions",
      "attributes": {
        "amount_in_cents": 9900,
        "sales_tax_in_cents": 990
      }
    }
  }
  ```
  ## Include Relationships
  Use the `include` parameter to include related resources:

  > **Deprecated:** the `offer` relationship is deprecated and will be removed in a future version. It is only populated for single-offer transactions and is `null` for bundled (multi-offer) transactions. Use the `purchases` relationship instead — it lists every offer purchase a transaction covers, for all transaction types.

  ### Include customer and purchases relationships
  * `GET /v1/transactions/123?include=customer,purchases`

  Response will include related resources
  ```json
  {
    "data": {
      "id": "123",
      "type": "transactions",
      "attributes": {
        "action": "subscription_charge",
        "state": "succeeded",
        "payment_type": "subscription",
        "amount_in_cents": 100,
        "sales_tax_in_cents": 0,
        "currency": "USD",
        "currency_symbol": "$",
        "formatted_amount": "$1.00",
        "created_at": "2025-03-14T19:17:38.000Z"
      },
      "relationships": {
        "customer": {
          "data": {
            "id": "456",
            "type": "customers"
          }
        },
        "purchases": {
          "data": [
            {
              "id": "501",
              "type": "purchases"
            }
          ]
        }
      }
    },
    "included": [
      {
        "id": "456",
        "type": "customers",
        "attributes": {
          "name": "John Doe",
          "email": "email@example.com",
          "avatar": "https://example.com/avatar.jpg",
          "external_user_id": "123",
          "public_bio": "Public Bio",
          "public_location": "Public Location",
          "public_website": "https://example.com",
          "socials": {
            "twitter": "https://twitter.com",
            "facebook": "https://facebook.com",
            "linkedin": "https://linkedin.com"
          },
          "net_revenue": 10000,
          "sign_in_count": 10,
          "last_request_at": "2024-01-15T10:30:00Z",
          "bounced_at": "2024-01-15T10:30:00Z",
          "created_at": "2024-01-15T10:30:00Z",
          "updated_at": "2024-01-15T10:30:00Z"
        }
      },
      {
        "id": "501",
        "type": "purchases",
        "attributes": {
          "amount_in_cents": 100,
          "payment_type": "subscription",
          "currency": "USD",
          "quantity": 1,
          "created_at": "2025-03-14T19:17:38.000Z",
          "updated_at": "2025-03-14T19:17:38.000Z"
        },
        "relationships": {
          "offer": {
            "data": {
              "id": "789",
              "type": "offers"
            }
          }
        }
      }
    ]
  }
  ```
  ## Using Multiple Parameters Together
  You can combine sparse fields and include in a single request:
  ### Get transaction with specific fields and included relationships
  * `GET /v1/transactions/123?include=customer&fields[transactions]=amount_in_cents,sales_tax_in_cents&fields[customers]=name,email`

  Response will include transaction with only requested fields and included customer with only name and email fields
  ```json
  {
    "data": {
      "id": "123",
      "type": "transactions",
      "attributes": {
        "amount_in_cents": 9900,
        "sales_tax_in_cents": 990
      },
      "relationships": {}
    },
    "included": [
      {
        "id": "456",
        "type": "customers",
        "attributes": {
          "name": "John Doe",
          "email": "john@example.com"
        }
      }
    ]
  }
```




## OpenAPI

````yaml /openapi.yaml get /v1/transactions/{id}
openapi: 3.1.1
info:
  title: Kajabi API V1
  version: 1.1.0
  description: >
    ## Public API

    * Server URL `https://api.kajabi.com`

    * Endpoint paths are prefixed with `/v1`

    * Version endpoint `GET https://api.kajabi.com/v1/version`

    * See the [Developers Site](https://developers.kajabi.com) for documentation
    and examples.

    * Try the demo [Postman
    collection](https://www.postman.com/kajabi-apis/beta-public-api-demo/collection/fg4iyaz/kajabi-public-api-v1)

    ## API Keys

    * Your API `client_id` and `client_secret` are available on the [User API
    Keys](https://app.kajabi.com/admin/settings/security) section of the Kajabi
    Admin Portal.
      * Custom API Keys can be created with specific permissions.
      * Click the "Create User API Key" button, enter a name (e.g. "My project"), select the user and permissions, and click "Create".
      * For security purposes, you may "Delete" or "Rotate" the api credentials at any time; which will invalidate any access tokens granted with the credentials.
    ## Video Walkthroughs

    *
    [Capabilities](https://drive.google.com/file/d/1Puc9B2sSdA-RQb7YMxmUXg4FVoEXytoc/view?usp=sharing)

    * [Getting
    Started](https://drive.google.com/file/d/1hbGRShkxven_QMWvgYrerHKURbcZrnvJ/view?usp=sharing)

    * [Error
    Examples](https://drive.google.com/file/d/1i0wQK71I1jpaZVsxYwsn62gVj40S_E7Y/view?usp=sharing)

    * [External Contact
    Form](https://drive.google.com/file/d/1HqpULXvan5TOK3LvM7nILCuCkCaX0kFT/view?usp=sharing)
  contact:
    email: support@kajabi.com
    name: Support
    url: >-
      https://help.kajabi.com/hc/en-us/articles/4404549690523-How-to-Get-Help-From-Kajabi-Live-Agents
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.kajabi.com
    description: Production
security: []
paths:
  /v1/transactions/{id}:
    get:
      tags:
        - Transactions
      summary: Transaction details
      description: |2
          The transaction system is a critical part of Kajabi's payment infrastructure, handling all monetary operations while maintaining detailed records for accounting, reporting, and compliance purposes.

          ## Transaction Attributes
          * `provider` (string) - The payment processor used for the payment
          * `action` (string) - Indicate the type of transaction:
            * `charge` - One-time payment
            * `refund` - Money returned to customer
            * `subscribe` - New subscription
            * `subscription_charge` - Recurring subscription payment
            * `free_purchase` - $0 transaction
            * `test` - Test transaction
            * `dispute` - Disputed charge
            * `subscription_update` - Subscription modification
          * `state` (string) - The transaction's status:
            * `initialized` - Transaction started
            * `succeeded` - Transaction completed successfully
            * `failed` - Transaction failed
          * `payment_type` (string) - Indicates the payment structure (nullable)
          * `amount_in_cents` (integer) - The USD price in cents (for precise decimal handling) can be negative for refunds
          * `sales_tax_in_cents` (integer) - The USD sales tax in cents (for precise decimal handling)
          * `payment_fee_in_cents` (integer) - Payment processing fee associated with the transaction (Kajabi Payments only)
          * `currency` (string) - String representing the currency code (nullable) automatically upcased
            * Defaults to "USD" if not specified
          * `currency_symbol` (string) - String representing the currency symbol (nullable)
            * Example: "$" for USD
          * `formatted_amount` (string) - String representing the amount in a human-readable format
            * Includes currency symbol
            * Does not include currency code
            * Example: "$19.99"
          * `settlement_amount_in_cents` (integer) - Price of the payment in cents based on the settlement currency (Kajabi Payments only)
          * `settlement_fee_amount_in_cents` (integer) - Payment processing fee associated with the transaction based on the settlement currency (Kajabi Payments only)
          * `settlement_currency` (string) - Currency of the payment based on settlement, typically the currency of the attached bank account (Kajabi Payments only)
          * `created_at` (string) - The creation date and time, ISO date string format (read-only)

          ## Sparse Fields
          Use the `fields[transactions]` parameter to request only specific attributes:
          ### Only return amount_in_cents and sales_tax_in_cents attributes
          * `GET /v1/transactions/123?fields[transactions]=amount_in_cents,sales_tax_in_cents`

          Response will only include requested fields
          ```json
          {
            "data": {
              "id": "123",
              "type": "transactions",
              "attributes": {
                "amount_in_cents": 9900,
                "sales_tax_in_cents": 990
              }
            }
          }
          ```
          ## Include Relationships
          Use the `include` parameter to include related resources:

          > **Deprecated:** the `offer` relationship is deprecated and will be removed in a future version. It is only populated for single-offer transactions and is `null` for bundled (multi-offer) transactions. Use the `purchases` relationship instead — it lists every offer purchase a transaction covers, for all transaction types.

          ### Include customer and purchases relationships
          * `GET /v1/transactions/123?include=customer,purchases`

          Response will include related resources
          ```json
          {
            "data": {
              "id": "123",
              "type": "transactions",
              "attributes": {
                "action": "subscription_charge",
                "state": "succeeded",
                "payment_type": "subscription",
                "amount_in_cents": 100,
                "sales_tax_in_cents": 0,
                "currency": "USD",
                "currency_symbol": "$",
                "formatted_amount": "$1.00",
                "created_at": "2025-03-14T19:17:38.000Z"
              },
              "relationships": {
                "customer": {
                  "data": {
                    "id": "456",
                    "type": "customers"
                  }
                },
                "purchases": {
                  "data": [
                    {
                      "id": "501",
                      "type": "purchases"
                    }
                  ]
                }
              }
            },
            "included": [
              {
                "id": "456",
                "type": "customers",
                "attributes": {
                  "name": "John Doe",
                  "email": "email@example.com",
                  "avatar": "https://example.com/avatar.jpg",
                  "external_user_id": "123",
                  "public_bio": "Public Bio",
                  "public_location": "Public Location",
                  "public_website": "https://example.com",
                  "socials": {
                    "twitter": "https://twitter.com",
                    "facebook": "https://facebook.com",
                    "linkedin": "https://linkedin.com"
                  },
                  "net_revenue": 10000,
                  "sign_in_count": 10,
                  "last_request_at": "2024-01-15T10:30:00Z",
                  "bounced_at": "2024-01-15T10:30:00Z",
                  "created_at": "2024-01-15T10:30:00Z",
                  "updated_at": "2024-01-15T10:30:00Z"
                }
              },
              {
                "id": "501",
                "type": "purchases",
                "attributes": {
                  "amount_in_cents": 100,
                  "payment_type": "subscription",
                  "currency": "USD",
                  "quantity": 1,
                  "created_at": "2025-03-14T19:17:38.000Z",
                  "updated_at": "2025-03-14T19:17:38.000Z"
                },
                "relationships": {
                  "offer": {
                    "data": {
                      "id": "789",
                      "type": "offers"
                    }
                  }
                }
              }
            ]
          }
          ```
          ## Using Multiple Parameters Together
          You can combine sparse fields and include in a single request:
          ### Get transaction with specific fields and included relationships
          * `GET /v1/transactions/123?include=customer&fields[transactions]=amount_in_cents,sales_tax_in_cents&fields[customers]=name,email`

          Response will include transaction with only requested fields and included customer with only name and email fields
          ```json
          {
            "data": {
              "id": "123",
              "type": "transactions",
              "attributes": {
                "amount_in_cents": 9900,
                "sales_tax_in_cents": 990
              },
              "relationships": {}
            },
            "included": [
              {
                "id": "456",
                "type": "customers",
                "attributes": {
                  "name": "John Doe",
                  "email": "john@example.com"
                }
              }
            ]
          }
        ```
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: fields[transactions]
          in: query
          required: false
          description: >-
            Partial attributes as specified, e.g.
            fields[transactions]=amount_in_cents,sales_tax_in_cents
          schema:
            type: string
        - name: include
          in: query
          required: false
          description: Load the related resources, for example ?include=customer,purchases
          schema:
            type: string
      responses:
        '200':
          description: Success, shows details of a specified transaction
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/transactions_show_response'
        '401':
          description: Unauthorized, Authorization header is missing or invalid
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_unauthorized'
        '404':
          description: Not found, the resource is unknown
          content:
            application/vnd.api+json:
              schema:
                $ref: '#/components/schemas/errors_unavailable'
      security:
        - Bearer: []
components:
  schemas:
    transactions_show_response:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            type:
              type: string
            attributes:
              $ref: '#/components/schemas/transactions_attributes'
            relationships:
              type: object
              properties:
                customer:
                  type: object
                  properties:
                    data:
                      $ref: '#/components/schemas/resource_identifier'
                offer:
                  type: object
                  deprecated: true
                  description: >-
                    DEPRECATED: use `purchases`. Populated only for single-offer
                    transactions; null for bundled (multi-offer) transactions.
                  properties:
                    data:
                      $ref: '#/components/schemas/resource_identifier'
                purchases:
                  type: object
                  description: >-
                    Offer purchases this transaction covers (one entry for
                    single-offer transactions, several for bundled).
                  properties:
                    data:
                      $ref: '#/components/schemas/resource_identifiers'
        links:
          type: object
          properties:
            self:
              type: string
            current:
              type: string
    errors_unauthorized:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/errors_attributes'
    errors_unavailable:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/errors_attributes'
    transactions_attributes:
      type: object
      properties:
        action:
          type: string
        state:
          type: string
        payment_type:
          type:
            - string
            - 'null'
        amount_in_cents:
          type: integer
        sales_tax_in_cents:
          type: integer
        currency:
          type: string
        currency_symbol:
          type: string
        formatted_amount:
          type: string
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: ISO 8601 date-time, read only
    resource_identifier:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
      required:
        - id
        - type
    resource_identifiers:
      type: array
      items:
        $ref: '#/components/schemas/resource_identifier'
    errors_attributes:
      type: object
      properties:
        status:
          type: string
        source:
          type: object
          nullable: true
          properties:
            pointer:
              type: string
        title:
          type: string
        detail:
          type: string
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer

````