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

# Get spending reversal data

> Returns cursor-paginated reversal invoice data for the authenticated creator over a specified time period. Includes refund and chargeback transactions. Pass `fanUuid` to restrict results to a single fan's reversals on this creator.

A reversal is written as its own invoice rather than as a change to the payment it reverses, and always for the full original amount, because Fanvue has no partial refunds. The original payment therefore stays settled and keeps its own row on `/insights/earnings`; read `reversedTransactionOrderId` on the `refund`/`chargeback` rows there to pair the two.

One gap: a payment that already carries its refund or chargeback marker without a linked reversal invoice never gets one written, so a reversal recorded that way has no row here and nothing to pair.

<Info>
  **Required scope**

  * `read:insights` — Access analytics, metrics, and insights data for performance tracking.
</Info>


## OpenAPI

````yaml /openapi-v1.json get /v1/insights/spending
openapi: 3.1.0
info:
  title: Fanvue API
  version: '0.1'
servers:
  - url: https://api.fanvue.com
security: []
paths:
  /v1/insights/spending:
    get:
      summary: Get spending reversal data
      description: >-
        Returns cursor-paginated reversal invoice data for the authenticated
        creator over a specified time period. Includes refund and chargeback
        transactions. Pass `fanUuid` to restrict results to a single fan's
        reversals on this creator.


        A reversal is written as its own invoice rather than as a change to the
        payment it reverses, and always for the full original amount, because
        Fanvue has no partial refunds. The original payment therefore stays
        settled and keeps its own row on `/insights/earnings`; read
        `reversedTransactionOrderId` on the `refund`/`chargeback` rows there to
        pair the two.


        One gap: a payment that already carries its refund or chargeback marker
        without a linked reversal invoice never gets one written, so a reversal
        recorded that way has no row here and nothing to pair.
      operationId: getSpending
      parameters:
        - $ref: '#/components/parameters/ApiVersionHeader'
        - schema:
            type: string
            format: date-time
            description: >-
              Start date as ISO 8601 datetime string with optional timezone
              offset (e.g., 2024-10-20T00:00:00+01:00 or 2024-10-20T00:00:00Z).
          required: false
          description: >-
            Start date as ISO 8601 datetime string with optional timezone offset
            (e.g., 2024-10-20T00:00:00+01:00 or 2024-10-20T00:00:00Z).
          name: startDate
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              End date as ISO 8601 datetime string with optional timezone offset
              (e.g., 2024-10-25T00:00:00+01:00 or 2024-10-25T00:00:00Z).
              Non-inclusive - data before this date is included.
          required: false
          description: >-
            End date as ISO 8601 datetime string with optional timezone offset
            (e.g., 2024-10-25T00:00:00+01:00 or 2024-10-25T00:00:00Z).
            Non-inclusive - data before this date is included.
          name: endDate
          in: query
        - schema:
            type: array
            items:
              $ref: '#/components/schemas/SpendingType'
            description: Comma-separated list of spending sources
          required: false
          description: 'Comma-separated list of spending sources. Default: all'
          name: source
          in: query
          style: form
          explode: false
        - schema:
            type: string
            description: >-
              Cursor for pagination - If given, pass `nextCursor` to get the
              next page.
          required: false
          description: >-
            Cursor for pagination - If given, pass `nextCursor` to get the next
            page.
          name: cursor
          in: query
        - schema:
            type: number
            minimum: 1
            maximum: 50
            description: >-
              Number of items to return per page (1-50, default: 20). When
              omitted on a cursor request, the size from the previous page
              (carried in the cursor) is reused.
          required: false
          description: >-
            Number of items to return per page (1-50, default: 20). When omitted
            on a cursor request, the size from the previous page (carried in the
            cursor) is reused.
          name: size
          in: query
        - schema:
            type: string
            format: uuid
            description: >-
              Restrict results to reversals belonging to a single fan on this
              creator
          required: false
          description: >-
            Restrict results to reversals belonging to a single fan on this
            creator
          name: fanUuid
          in: query
      responses:
        '200':
          description: Spending reversal data with cursor pagination
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        date:
                          type: string
                          description: Payment date as UTC ISO 8601 datetime string
                        gross:
                          type: number
                          description: >-
                            The reversed payment's amount, converted to USD
                            cents. Every row here is a refund or chargeback, so
                            this is negative and carries the full pre-fee amount
                            of the earning it reverses. That is not always money
                            a fan paid: a referral or affiliate earning can be
                            clawed back too, and `user` is null on those rows.
                        net:
                          type: number
                          description: >-
                            Creator's reversal (refund/chargeback) impact after
                            Fanvue fees, in USD cents. Negative for the same
                            reason as `gross`.
                        currency:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Informational only — the local currency the fan
                            originally paid in (e.g. 'BRL'). The gross and net
                            amounts are already converted to USD cents
                            regardless of this value.
                        source:
                          $ref: '#/components/schemas/SpendingSource'
                        messageUuid:
                          type: string
                          format: uuid
                          description: >-
                            Message UUID when the reversed payment was a message
                            transaction
                        postUuid:
                          type: string
                          format: uuid
                          description: Post UUID when the reversed payment was a post
                        user:
                          type:
                            - object
                            - 'null'
                          properties:
                            uuid:
                              type: string
                              format: uuid
                            handle:
                              type: string
                            displayName:
                              type: string
                            nickname:
                              type:
                                - string
                                - 'null'
                            isTopSpender:
                              type: boolean
                          required:
                            - uuid
                            - handle
                            - displayName
                            - nickname
                            - isTopSpender
                          description: >-
                            Fan's user information (null for transactions
                            without a fan like referrals, affiliates)
                      required:
                        - date
                        - gross
                        - net
                        - currency
                        - source
                        - user
                  nextCursor:
                    type:
                      - string
                      - 'null'
                    description: Cursor for next page, null if no more data
                required:
                  - data
                  - nextCursor
              example:
                data:
                  - date: '2024-01-15T00:00:00.000Z'
                    gross: -5000
                    net: -4250
                    currency: USD
                    source: refund
                    user:
                      uuid: f47ac10b-58cc-4372-a567-0e02b2c3d479
                      handle: sarah-jones
                      nickname: SarahK
                      displayName: Sarah Jones
                      isTopSpender: true
                      avatarUrl: https://media.fanvue.com/avatars/example-avatar.jpg
                      registeredAt: '2024-01-10T12:00:00.000Z'
                  - date: '2024-01-14T00:00:00.000Z'
                    gross: -2500
                    net: -2125
                    currency: USD
                    source: chargeback
                    user:
                      uuid: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
                      handle: mike-smith
                      nickname: null
                      displayName: Mike Smithly
                      isTopSpender: false
                      avatarUrl: https://media.fanvue.com/avatars/example-avatar.jpg
                      registeredAt: '2024-01-10T12:00:00.000Z'
                nextCursor: eyJkYXRlIjoiMjAyNC0wMS0xNVQwMDowMDowMC4wMDBaIn0
        '400':
          description: >-
            Bad Request - API version not supported OR validation failed (dates,
            sources, cursor, pagination)
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/UnsupportedVersionError'
                  - $ref: '#/components/schemas/ValidationError'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/UnauthorizedResponse'
        '410':
          $ref: '#/components/responses/SunsetVersionResponse'
        '429':
          $ref: '#/components/responses/RateLimitResponse'
      security:
        - BearerAuth:
            - read:insights
components:
  parameters:
    ApiVersionHeader:
      name: X-Fanvue-API-Version
      in: header
      required: true
      schema:
        type: string
        default: '2025-06-26'
        example: '2025-06-26'
      description: API version to use for the request
  schemas:
    SpendingType:
      type: string
      enum:
        - all
        - refund
        - chargeback
      description: The spending type filter
    SpendingSource:
      type: string
      enum:
        - refund
        - chargeback
    UnsupportedVersionError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      description: API version not supported
    ValidationError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      required:
        - errors
      description: Request validation failed
  responses:
    UnauthorizedResponse:
      description: Unauthorized Response
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
    SunsetVersionResponse:
      description: API version no longer supported (sunset)
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              message:
                type: string
              nextVersion:
                type: string
            required:
              - error
              - message
    RateLimitResponse:
      description: Too many requests - rate limit exceeded
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying the request
          schema:
            type: integer
        X-RateLimit-Limit:
          description: The maximum number of requests allowed in the current window
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: The number of requests remaining in the current window
          schema:
            type: integer
        X-RateLimit-Reset:
          description: The Unix timestamp (seconds) when the rate limit window resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
  securitySchemes:
    BearerAuth:
      type: oauth2
      description: >-
        OAuth 2.0 access token, presented as a JWT bearer token in the
        `Authorization` header. Obtain a token via the authorization-code flow;
        the scopes granted to the token determine which operations it may call.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.fanvue.com/oauth2/auth
          tokenUrl: https://auth.fanvue.com/oauth2/token
          refreshUrl: https://auth.fanvue.com/oauth2/token
          scopes:
            read:self: >-
              Access your own user profile information, including basic account
              details and settings.
            read:chat: >-
              Read chat conversations, messages, and chat-related data. This
              includes viewing chat lists and message history.
            write:chat: >-
              Create new chats and send messages. This scope is required for any
              chat-related actions that modify data.
            read:experience: >-
              Exchange a fan's experience token for the resolved experience and
              the fan's identity, so an embedded fan-facing experience can
              render the right content.
            write:experience: >-
              Request that the creator publish or unpublish a fan-facing
              experience. The app mints a request token; the creator confirms
              and Fanvue performs the change.
            read:fan: Access fan-related data and information within the platform.
            read:post: Read posts, including post details, comments, likes, and tips.
            write:post: Create, edit, and manage posts and content on behalf of users.
            read:media: Access media files, images, videos, and other content assets.
            write:media: >-
              Upload, modify, and manage media files and content assets. Also
              required for vault folder management.
            read:creator: >-
              Access creator profiles, content, and creator-specific
              information.
            write:creator: Modify creator profiles, settings, and creator-specific data.
            read:insights: >-
              Access analytics, metrics, and insights data for performance
              tracking.
            read:tracking_links: >-
              Read tracking links and the users associated with them, including
              per-user tracking metadata.
            write:tracking_links: Create and delete tracking links.
            read:agency: Read agency information, including the agency's team members.
            write:agency: >-
              Manage agency team members and invites, including inviting new
              team members and creators.

````