> ## 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 card account activities

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

Returns the activity on your Business Account's card account: card transactions, plus repayments, adjustments, rebates and interest on your card balance. Use it to build a card spend feed, reconcile card transactions with your accounting system, or find declined card transactions. Filter by card, cardholder, transaction category, activity type, status or date range to get just what you need. See [Activities](/concepts/activities).



## OpenAPI

````yaml /openapi/2026-07-13.json get /2026-07-13/cards/activities
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/activities:
    get:
      tags:
        - Cards
      summary: List card account activities
      description: >-
        Required API-key scope: `card_activities:read`.


        Returns the activity on your Business Account's card account: card
        transactions, plus repayments, adjustments, rebates and interest on your
        card balance. Use it to build a card spend feed, reconcile card
        transactions with your accounting system, or find declined card
        transactions. Filter by card, cardholder, transaction category, activity
        type, status or date range to get just what you need. See
        [Activities](/concepts/activities).
      operationId: listActivities
      parameters:
        - name: page
          required: false
          in: query
          description: >-
            Which page of results to return, starting at 1 (the default). Use it
            with `meta.totalPages` to go through all results.
          schema:
            minimum: 1
            maximum: 9007199254740991
            default: 1
            type: integer
        - name: limit
          required: false
          in: query
          description: >-
            How many items to return per page. It must be between 1 and 100
            (default 20).
          schema:
            minimum: 1
            maximum: 100
            default: 20
            type: integer
        - name: type
          required: false
          in: query
          description: >-
            Only return certain kinds of activity: `CHARGE`, `REPAYMENT`,
            `ADJUSTMENT`, `REBATE` or `INTEREST`. Separate several with commas,
            for example `CHARGE,REPAYMENT`, or leave it out to get every type.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - CHARGE
                - REPAYMENT
                - ADJUSTMENT
                - REBATE
                - INTEREST
        - name: status
          required: false
          in: query
          description: >-
            Only return card transactions in certain states, for example
            `DECLINED` to find declined card transactions. It applies only to
            card transactions, so other activity types are left out when you use
            it.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              enum:
                - PENDING
                - CLEARED
                - DECLINED
                - VOIDED
        - name: cardId
          required: false
          in: query
          description: >-
            Only return activity on specific cards. Pass one or more card IDs
            from [List cards](/api-reference/cards/list-cards), separated by
            commas.
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: userId
          required: false
          in: query
          description: >-
            Only return activity on cards held by specific team members, using
            the `userId` values from [List team
            members](/api-reference/team-members/list-team-members).
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
        - name: categoryId
          required: false
          in: query
          description: >-
            Only return card transactions in specific transaction categories,
            using the IDs from [List transaction
            categories](/api-reference/cards/list-transaction-categories).
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: hasReceipt
          required: false
          in: query
          description: >-
            Set to `false` to find activity that has no receipt, or `true` for
            activity that has one. Combine `hasReceipt=false` with `type=CHARGE`
            to find card transactions that still need a receipt.
          schema:
            type: boolean
        - name: chargeId
          required: false
          in: query
          description: >-
            Look up one card transaction by its ID: the transaction ID (TID)
            shown in the dashboard. It must match exactly.
          schema:
            minLength: 1
            maxLength: 255
            type: string
        - name: from
          required: false
          in: query
          description: >-
            Only return activity created on or after this date (`YYYY-MM-DD`,
            UTC). Use it with `to` to pull a month or a statement period.
          schema:
            type: string
            format: date
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
        - name: to
          required: false
          in: query
          description: >-
            Only return activity created on or before this date (`YYYY-MM-DD`,
            UTC). The whole day is included.
          schema:
            type: string
            format: date
            pattern: >-
              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityList'
              examples:
                activities:
                  summary: Account activities
                  value:
                    items:
                      - id: txn_00000000-0000-0000-0000-00000000f001
                        chargeId: tid_0uWewrFOTL
                        type: CHARGE
                        status: DECLINED
                        declineReason:
                          code: '51'
                          description: >-
                            Not enough balance to complete the transaction.
                            Please add funds or use a different payment method.
                        createdAt: '2026-07-13T08:00:00.000Z'
                        clearedAt: null
                        isCredit: false
                        billAmount:
                          amount: '100.00'
                          currency: USD
                        transactionAmount:
                          amount: '100.00'
                          currency: USD
                        conversionRate: '1'
                        merchant: Example merchant
                        card:
                          id: 3db05d6f-97a9-4c06-a578-087b14b4f859
                          title: Travel card
                          last4: '4242'
                        category:
                          id: d022bf27-0f9c-457a-a06f-d8e301f6944b
                          name: Travel
                        note: null
                        hasReceipt: true
                    meta:
                      totalItems: 1
                      itemCount: 1
                      itemsPerPage: 20
                      totalPages: 1
                      currentPage: 1
        '400':
          description: '`BAD_REQUEST`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                BAD_REQUEST:
                  summary: BAD_REQUEST
                  value:
                    statusCode: 400
                    type: INVALID_REQUEST_ERROR
                    message: Bad request.
        '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:
    ActivityList:
      type: object
      properties:
        items:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Reap's unique ID for this activity.
              chargeId:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The transaction ID (TID) of a card transaction, the same one
                  shown in the dashboard. Give it to Reap Support when asking
                  about a card transaction. Null for other activity types.
              type:
                type: string
                enum:
                  - CHARGE
                  - REPAYMENT
                  - ADJUSTMENT
                  - REBATE
                  - INTEREST
                description: >-
                  What kind of activity this is: `CHARGE` (a card transaction),
                  `REPAYMENT` (a repayment of your card balance), `ADJUSTMENT`
                  (a correction made by Reap), `REBATE` (a rebate credited to
                  your card account) or `INTEREST` (interest charged on an
                  unpaid balance).
              status:
                anyOf:
                  - type: string
                    enum:
                      - PENDING
                      - CLEARED
                      - DECLINED
                      - VOIDED
                    description: >-
                      Where a card transaction is in its lifecycle: `PENDING`
                      (authorised, not yet settled by the merchant), `CLEARED`
                      (settled), `DECLINED` (not approved) or `VOIDED`
                      (cancelled before settling). Null for other activity
                      types.
                  - type: 'null'
                description: >-
                  Where a card transaction is in its lifecycle: `PENDING`
                  (authorised, not yet settled by the merchant), `CLEARED`
                  (settled), `DECLINED` (not approved) or `VOIDED` (cancelled
                  before settling). Null for other activity types.
              declineReason:
                anyOf:
                  - type: object
                    properties:
                      code:
                        type: string
                        description: >-
                          The decline code, for example `51` for insufficient
                          balance.
                      description:
                        type: string
                        description: >-
                          A plain-English explanation of the decline, which you
                          can show to the cardholder.
                    required:
                      - code
                      - description
                  - type: 'null'
                description: >-
                  Why a card transaction was declined. Null for card
                  transactions that weren't declined and for other activity
                  types.
              createdAt:
                type: string
                format: date-time
                pattern: >-
                  ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                description: When the activity happened, in UTC.
              clearedAt:
                anyOf:
                  - type: string
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                  - type: 'null'
                description: >-
                  When a card transaction settled, in UTC. Null while it's still
                  pending, or if it never settles.
              isCredit:
                anyOf:
                  - type: boolean
                  - type: 'null'
                description: >-
                  `true` when funds come back to the card account (such as a
                  refund, repayment or rebate), and `false` when they go out.
              billAmount:
                anyOf:
                  - type: object
                    properties:
                      amount:
                        type: string
                        description: >-
                          The amount as a string with two decimals, for example
                          `100.00`.
                      currency:
                        type: string
                        description: The three-letter currency code, for example `USD`.
                    required:
                      - amount
                      - currency
                  - type: 'null'
                description: >-
                  The amount applied to your card account, in your card's
                  currency (`USD` or `HKD`). Use this for accounting and
                  reconciliation.
              transactionAmount:
                anyOf:
                  - type: object
                    properties:
                      amount:
                        type: string
                        description: >-
                          The amount as a string with two decimals, for example
                          `100.00`.
                      currency:
                        type: string
                        description: The three-letter currency code, for example `USD`.
                    required:
                      - amount
                      - currency
                  - type: 'null'
                description: >-
                  The amount in the merchant's own currency. It differs from
                  `billAmount` when the merchant charges in another currency.
              conversionRate:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  The exchange rate used to convert `transactionAmount` into
                  `billAmount`, as a string. It's `1` when both are in the same
                  currency.
              merchant:
                anyOf:
                  - type: string
                  - type: 'null'
                description: The merchant's name as it appears on the card transaction.
              card:
                anyOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        description: >-
                          The card's ID, which you can use with [Retrieve a
                          card](/api-reference/cards/retrieve-a-card) and the
                          other card endpoints.
                      title:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The card's nickname, for example `Ada – Marketing
                          tools`.
                      last4:
                        anyOf:
                          - type: string
                          - type: 'null'
                        description: >-
                          The last four digits of the card number. To see the
                          full card details, use [Reveal card
                          details](/api-reference/cards/reveal-card-details).
                    required:
                      - id
                      - title
                      - last4
                  - type: 'null'
                description: >-
                  The card the activity happened on. Null for activity that
                  isn't tied to a card, such as a repayment.
              category:
                anyOf:
                  - type: object
                    properties:
                      id:
                        type: string
                        description: >-
                          The transaction category's ID, which you can use as
                          the `categoryId` filter.
                      name:
                        type: string
                        description: >-
                          The transaction category's display name, for example
                          `Travel`.
                    required:
                      - id
                      - name
                  - type: 'null'
                description: >-
                  The card transaction's transaction category, set automatically
                  from the merchant or corrected by your team. Null if it hasn't
                  been categorised yet.
              note:
                anyOf:
                  - type: string
                  - type: 'null'
                description: >-
                  A free-text note your team added to the card transaction in
                  the dashboard, if there is one.
              hasReceipt:
                type: boolean
                description: Whether a receipt has been attached to this card transaction.
            required:
              - id
              - chargeId
              - type
              - status
              - declineReason
              - createdAt
              - clearedAt
              - isCredit
              - billAmount
              - transactionAmount
              - conversionRate
              - merchant
              - card
              - category
              - note
              - hasReceipt
          description: The activities on this page, one object per activity.
        meta:
          type: object
          properties:
            totalItems:
              type: number
              description: How many items match your filters, across all pages.
            itemCount:
              type: number
              description: How many items are on this page.
            itemsPerPage:
              type: number
              description: The page size you asked for with `limit`.
            totalPages:
              type: number
              description: >-
                How many pages there are in total. Keep requesting the next
                `page` until you reach this number.
            currentPage:
              type: number
              description: The page number you're looking at, starting at 1.
          required:
            - totalItems
            - itemCount
            - itemsPerPage
            - totalPages
            - currentPage
          description: >-
            Pagination details, so you know how many results exist and which
            page you're on.
      required:
        - items
        - meta
    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.