> ## Documentation Index
> Fetch the complete documentation index at: https://direct-api.reap.global/llms.txt
> Use this file to discover all available pages before exploring further.

# List transaction categories

> Required API-key scope: `cards:read`.

Returns the transaction categories used to classify card transactions, such as Flights or Software. Reap sets each card transaction's category automatically from the merchant, and your team can correct it in the dashboard. Use the `id` values to filter [List card account activities](/api-reference/cards/list-card-account-activities) by `categoryId`. See [Activities](/concepts/activities).

The API reads categories; your team can correct them in the dashboard. See [Reviewing and Categorizing Transactions](https://support.reap.global/hc/en-us/articles/16904559037455-Reviewing-and-Categorizing-Transactions) in the Help Center.


## OpenAPI

````yaml GET /2026-07-13/cards/transaction-categories
openapi: 3.1.0
info:
  title: Reap Business Account API
  description: >

    # Introduction


    The Reap Business Account API lets you manage cards, spend and Treasury

    funding for your Business Account from your own systems. Every endpoint is

    authenticated with an API key sent in the `x-api-key` header and versioned

    with a date in the URL (`/2026-07-13/...`).


    Guides, concepts and the full setup reference live on the docs site:

    [direct-api.reap.global](https://direct-api.reap.global).



    ## Errors


    All errors share a single JSON envelope:


    ```json

    {
      "statusCode": 400,
      "type": "INVALID_REQUEST_ERROR",
      "code": "SPEND_CAP_TOO_LOW",
      "message": "Spend cap cannot be lower than the amount already spent on this card.",
      "param": "spendCap",
      "requestId": "01H..."
    }

    ```


    - `statusCode`: HTTP status, duplicated in the body.

    - `type`: coarse category, **always present**. Branch on this for
    retry/re-auth decisions.

    - `code`: stable, machine-readable identifier. Present only for
    programmatically-actionable errors.

    - `message`: human-readable explanation, safe to surface to users.

    - `param`: offending field for validation errors (optional).

    - `details`: structured extra context such as validation issues or required
    API-key scopes (optional).

    - `requestId`: correlation id; include it when contacting support
    (optional).


    The specific error codes each endpoint can return are documented on that

    endpoint's responses below.


    ### Error types


    | Type | Description |

    | --- | --- |

    | `INVALID_REQUEST_ERROR` | The request was rejected due to invalid input, a
    missing resource, or a business-rule violation (HTTP 400/404/409/422). |

    | `AUTHENTICATION_ERROR` | Authentication is missing or invalid (HTTP 401).
    |

    | `PERMISSION_ERROR` | The caller is authenticated but not permitted to
    perform the action (HTTP 403). |

    | `RATE_LIMIT_ERROR` | Too many requests; retry after a delay (HTTP 429). |

    | `API_ERROR` | An unexpected error occurred on our side (HTTP 5xx). |

    | `UPSTREAM_ERROR` | An upstream service returned an error (HTTP 502/503). |
  version: '2026-07-13'
  contact: {}
servers:
  - url: https://api.global.direct.reap.global
security: []
tags: []
paths:
  /2026-07-13/cards/transaction-categories:
    get:
      tags:
        - Cards
      summary: List transaction categories
      description: >-
        Required API-key scope: `cards:read`.


        Returns the transaction categories used to classify card transactions,
        such as Flights or Software. Reap sets each card transaction's category
        automatically from the merchant, and your team can correct it in the
        dashboard. Use the `id` values to filter [List card account
        activities](/api-reference/cards/list-card-account-activities) by
        `categoryId`. See [Activities](/concepts/activities).
      operationId: listTransactionCategories
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCategoryList'
              examples:
                transactionCategories:
                  summary: Transaction categories
                  value:
                    items:
                      - id: 4ef5a2c4-b2e4-4b63-900c-f60819a78674
                        name: Software
                      - id: fbdc675f-5391-430d-9058-b6f0684f9060
                        name: Travel
        '401':
          description: '`UNAUTHORIZED`, `AUTH_CREDENTIAL_MISSING`, `API_KEY_INVALID`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UNAUTHORIZED:
                  summary: UNAUTHORIZED
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    message: Authentication required.
                AUTH_CREDENTIAL_MISSING:
                  summary: AUTH_CREDENTIAL_MISSING
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: AUTH_CREDENTIAL_MISSING
                    message: Authentication is required.
                API_KEY_INVALID:
                  summary: API_KEY_INVALID
                  value:
                    statusCode: 401
                    type: AUTHENTICATION_ERROR
                    code: API_KEY_INVALID
                    message: API key is invalid.
        '403':
          description: >-
            `FORBIDDEN`, `API_KEY_IP_NOT_ALLOWED`,
            `AUTH_INSUFFICIENT_PERMISSIONS`, `AUTH_METHOD_NOT_ALLOWED`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                FORBIDDEN:
                  summary: FORBIDDEN
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    message: You do not have permission to perform this action.
                API_KEY_IP_NOT_ALLOWED:
                  summary: API_KEY_IP_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: API_KEY_IP_NOT_ALLOWED
                    message: Request IP is not allowed for this API key.
                AUTH_INSUFFICIENT_PERMISSIONS:
                  summary: AUTH_INSUFFICIENT_PERMISSIONS
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_INSUFFICIENT_PERMISSIONS
                    message: Insufficient permissions.
                    details:
                      requiredScopes:
                        - <required-scope>
                AUTH_METHOD_NOT_ALLOWED:
                  summary: AUTH_METHOD_NOT_ALLOWED
                  value:
                    statusCode: 403
                    type: PERMISSION_ERROR
                    code: AUTH_METHOD_NOT_ALLOWED
                    message: >-
                      This endpoint does not accept the credential type
                      provided.
        '429':
          description: '`API_KEY_RATE_LIMITED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                API_KEY_RATE_LIMITED:
                  summary: API_KEY_RATE_LIMITED
                  value:
                    statusCode: 429
                    type: RATE_LIMIT_ERROR
                    code: API_KEY_RATE_LIMITED
                    message: API key rate limit exceeded.
        '500':
          description: '`INTERNAL_ERROR`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                INTERNAL_ERROR:
                  summary: INTERNAL_ERROR
                  value:
                    statusCode: 500
                    type: API_ERROR
                    message: An unexpected error occurred.
      security:
        - apiKey: []
components:
  schemas:
    TransactionCategoryList:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: >-
                  The transaction category's ID. Use it as the `categoryId`
                  filter in [List card account
                  activities](/api-reference/cards/list-card-account-activities).
                format: uuid
              name:
                type: string
                description: >-
                  The transaction category's display name, for example
                  `Flights`.
            required:
              - id
              - name
          description: The transaction categories used to classify card transactions.
      required:
        - items
    ErrorResponse:
      type: object
      properties:
        statusCode:
          type: integer
          minimum: 100
          maximum: 599
          description: The HTTP status code, repeated in the body for convenience.
        type:
          type: string
          enum:
            - INVALID_REQUEST_ERROR
            - AUTHENTICATION_ERROR
            - PERMISSION_ERROR
            - RATE_LIMIT_ERROR
            - API_ERROR
            - UPSTREAM_ERROR
          description: >-
            The broad kind of error, for example `RATE_LIMIT_ERROR`. It's always
            present: use it to decide whether to retry, re-authenticate or fix
            the request.
        code:
          description: >-
            A stable, machine-readable error code, for example
            `CARD_CREATION_REQUIRES_DEPOSIT`. It's present when there's a
            specific action you can take, and each endpoint lists the codes it
            can return.
          type: string
        message:
          type: string
          description: >-
            A plain-English explanation of the error that's safe to show to your
            users.
        param:
          description: >-
            The request field that caused a validation error, for example
            `spendCap`.
          type: string
        details:
          description: >-
            Extra structured information, such as the list of validation issues
            or the API-key scopes your key is missing.
        requestId:
          description: >-
            A unique ID for this request. Include it when you contact Reap
            Support so the team can find it.
          type: string
      required:
        - statusCode
        - type
        - message
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Enter your API key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.