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

# Get expense report for organization

> Retrieves a specific expense report by id for the organization.



## OpenAPI

````yaml openapi/findity-admin-api.json GET /organizations/{organizationId}/reports/{reportId}
openapi: 3.1.0
info:
  title: Findity Admin API
  description: Findity Admin API
  version: 1.0.0
servers:
  - url: https://stage-api.findity.com/api/v1/admin
  - url: https://api.findity.com/api/v1/admin
security:
  - bearerAuth: []
paths:
  /organizations/{organizationId}/reports/{reportId}:
    get:
      tags:
        - Expense Reports
      summary: Get expense report for organization
      description: Retrieves a specific expense report by id for the organization.
      operationId: getOrganizationExpenseReport
      parameters:
        - name: organizationId
          in: path
          required: true
          description: The unique identifier of the organization
          schema:
            $ref: '#/components/schemas/Uuid'
            example: 05b8daba9ba14a49846fe77883248cf0
        - $ref: '#/components/parameters/expenseReportId'
        - $ref: '#/components/parameters/expenseReportInclude'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseReport'
              example:
                id: 550e8400-e29b-41d4-a716-446655440000
                name: Business Trip Stockholm
                personId: 123e4567-e89b-12d3-a456-426614174000
                organizationId: 550e8400-e29b-41d4-a716-446655440001
                dateCreated: '2024-01-15T09:30:00Z'
                lastUpdated: '2024-01-16T14:45:00Z'
                reportNumber: ER-2024-001
                comment: Business trip to Stockholm for client meeting
                emailRecipients: manager@company.com;finance@company.com
                status: APPROVED
                processStatus: PROCESSED
                type: MANUAL
                reimbursement: 2580.5
                reimbursementCurrency: SEK
                sent: '2024-01-16T10:00:00Z'
                paid: '2024-01-18T00:00:00Z'
                approved: '2024-01-17T15:30:00Z'
                previewUrl: >-
                  https://expense.findity.com/api/expensereports/550e8400-e29b-41d4-a716-446655440000
                meta:
                  autoApproval:
                    status: REJECTED
                    reasons:
                      - reason: POLICY_FAILURE
                        description: Violates the company's expense policy.
                      - reason: WEEKEND_PURCHASE_DATE
                        description: The purchase was made during a weekend.
                expenseRecords:
                  - id: rec1-550e8400-e29b-41d4-a716-446655440000
                    status: APPROVED
                    personId: 123e4567-e89b-12d3-a456-426614174000
                    organizationId: 550e8400-e29b-41d4-a716-446655440001
                    categoryId: cat1-550e8400-e29b-41d4-a716-446655440000
                    expenseReportId: 550e8400-e29b-41d4-a716-446655440000
                    dateCreated: '2024-01-15T09:30:00Z'
                    lastUpdated: '2024-01-16T14:45:00Z'
                    reimbursement: 1250
                    reimbursementCurrency: SEK
                    rejectComment: null
                    meta:
                      categoryIconUrl: >-
                        https://expense.findity.com/api/resources/8a5f867e9b204742a8cc2ca2b6c57358
                  - id: rec2-550e8400-e29b-41d4-a716-446655440000
                    status: APPROVED
                    personId: 123e4567-e89b-12d3-a456-426614174000
                    organizationId: 550e8400-e29b-41d4-a716-446655440001
                    categoryId: cat2-550e8400-e29b-41d4-a716-446655440000
                    expenseReportId: 550e8400-e29b-41d4-a716-446655440000
                    dateCreated: '2024-01-15T18:45:00Z'
                    lastUpdated: '2024-01-16T14:45:00Z'
                    reimbursement: 1330.5
                    reimbursementCurrency: SEK
                    rejectComment: null
                    meta:
                      categoryIconUrl: >-
                        https://expense.findity.com/api/resources/9b6f977f8c305753b9dd3db3c7d68469
                ownerName: John Doe
                firstName: John
                lastName: Doe
                organizationName: Acme Corporation
                organizationNumber: 556123-4567
                organizationLanguage: en
                organizationUseNewDimensions: true
                organizationRequiresAttestation: false
                organizationUsesPaymentBasis: true
                expenseRecordCount: 2
                totalAmount: 2580.5
                userCanModifyReports: true
                userCanSendReports: true
                reportGroup: 1
                onHoldStatus:
                  onHold: false
                  reason: null
                bank: SEB1234567890
                dueDate: '2024-01-25T00:00:00Z'
                cardNumber: '**** **** **** 1234'
                invoiceRef: INV-2024-001
                invoiceNumber: INV-2024-001
                invoiceDate: '2024-01-15T00:00:00Z'
                externalVoucherNumber: EXT-12345
                externalVoucherInformation: Successfully exported to external system
                externalVoucherErrorInformation: null
                externalVoucherId: ext-voucher-550e8400-e29b-41d4-a716-446655440000
                reminderSentToUser: false
                employeeId: EMP001
                reminderSentToApprover: false
                hasRejectedExpenseRecords: false
                hasIncorrectApprovalChains: false
                approvalAllowed: true
                currentApproverInfo:
                  approverId: 456e7890-e89b-12d3-a456-426614174999
                  approverName: Jane Smith
                  approverEmail: jane.smith@company.com
                sendChain:
                  currentStep: 2
                  totalSteps: 3
                  nextApprover:
                    approverId: 789e0123-e89b-12d3-a456-426614174888
                    approverName: Bob Johnson
                    approverEmail: bob.johnson@company.com
                tag:
                  simulatedCardReport: false
                  integrationTest: false
                  dimensions:
                    project: PROJ-001
                    department: Sales
                customFields:
                  - fieldDefinitionId: 2b965c866b634698811dabf45a491089
                    value: true
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404Error-2'
              example:
                result: error
                code: EXPENSE_REPORT_NOT_FOUND
                description: Expense report not found
components:
  schemas:
    Uuid:
      type: string
      pattern: ^[0-9a-fA-F]{32}$
      description: UUID without dashes (32-character hex string)
    ExpenseReport:
      type: object
      properties:
        comment:
          type: string
        dateCreated:
          type: string
          readOnly: true
        emailRecipients:
          type: string
        expenseRecords:
          type: array
          items:
            $ref: '#/components/schemas/ExpenseRecord'
        id:
          type: string
        lastUpdated:
          type: string
        name:
          type: string
        organizationId:
          $ref: '#/components/schemas/Uuid'
        personId:
          $ref: '#/components/schemas/Uuid'
        previewUrl:
          type: string
          readOnly: true
        reportNumber:
          type: string
        sent:
          type: string
          readOnly: true
        paid:
          type: string
          format: date-time
          readOnly: true
          description: >-
            Date when the expense report was paid. ISO-8601 format (e.g.,
            2024-01-15T10:30:00Z). Read-only.
        approved:
          type: string
          format: date-time
          readOnly: true
          description: >-
            Date when the expense report was approved. ISO-8601 format (e.g.,
            2024-01-15T10:30:00Z). Read-only.
        status:
          type: string
          enum:
            - APPROVAL
            - APPROVED
            - READY_TO_SEND
            - BULK_TRANSFER
            - ERROR
            - NEW
            - NORMAL
            - ON_HOLD
            - PAID
            - REJECTED
            - SEND
            - SENT
            - TRANSFER
            - TRANSFER_TO_RECIPIENT
            - REVIEW
          readOnly: true
        processStatus:
          type: string
          enum:
            - DRAFT
            - PROCESSING
            - PROCESSED
            - REJECTED
          readOnly: true
        reimbursement:
          type: number
          readOnly: true
        reimbursementCurrency:
          type: string
          readOnly: true
        type:
          type: string
          enum:
            - AUTOMATIC
            - MANUAL
            - COMPANY_CARD
          readOnly: true
        ownerName:
          type: string
        firstName:
          type: string
          description: First name of the expense report owner
        lastName:
          type: string
          description: Last name of the expense report owner
        adminErrorInformation:
          type: string
          description: Error information from admin operations
        organizationName:
          type: string
        organizationNumber:
          type: string
        organizationLanguage:
          type: string
        organizationUseNewDimensions:
          type: boolean
        organizationRequiresAttestation:
          type: boolean
        organizationUsesPaymentBasis:
          type: boolean
        organizationReviewType:
          type: string
          enum:
            - NONE
            - AFTER_SEND
            - AFTER_APPROVAL
          description: >-
            Review type for the organization. None, before approval, or after
            approval. The AFTER_SEND value actually means before approval.
        expenseRecordCount:
          type: integer
          description: Number of expense records in this report
        totalAmount:
          type: number
          description: Total amount of all expense records in the report
        userCanModifyReports:
          type: boolean
        userCanSendReports:
          type: boolean
        reportGroup:
          type: integer
        onHoldStatus:
          type: object
          description: On-hold status information
          readOnly: true
          properties:
            cards:
              type: array
              items:
                type: object
                properties:
                  bank:
                    type: string
                    description: Bank identifier
                  cardNumber:
                    type: string
                    description: Card number (masked)
              description: List of active cards associated with the expense report
            cardMissingConfig:
              type: array
              items:
                type: object
                properties:
                  erId:
                    type: string
                    description: Expense record ID
                  bank:
                    type: string
                    description: Bank identifier
                  cardNumber:
                    type: string
                    description: Card number (masked)
                  cardExternalId:
                    type: string
                    description: External card ID
              description: List of cards missing configuration
            transactionWithAuthStatus:
              type: array
              items:
                type: string
              description: >-
                List of expense record IDs with authorization status
                transactions
            cardDeleted:
              type: array
              items:
                type: object
                properties:
                  erId:
                    type: string
                    description: Expense record ID
                  bank:
                    type: string
                    description: Bank identifier
                  cardNumber:
                    type: string
                    description: Card number (masked)
                  cardExternalId:
                    type: string
                    description: External card ID
              description: List of deleted cards
            allTransactionsEligibleForClearing:
              type: boolean
              description: Whether all transactions are eligible for manual clearing
        bank:
          type: string
          description: Bank information for payment
        dueDate:
          type: string
          format: date-time
          description: Payment due date. ISO-8601 format (e.g., 2024-01-15T10:30:00Z).
        cardNumber:
          type: string
          description: Card number (masked)
        invoiceRef:
          type: string
          description: Invoice reference
        invoiceNumber:
          type: string
          description: Invoice number
        invoiceDate:
          type: string
          format: date-time
          description: Invoice date. ISO-8601 format (e.g., 2024-01-15T10:30:00Z).
        externalVoucherNumber:
          type: string
          description: External voucher number from integration
        externalVoucherInformation:
          type: string
          description: External voucher information
        externalVoucherErrorInformation:
          type: string
          description: Error information from external voucher system
        externalVoucherId:
          type: string
          description: External voucher ID
        reminderSentToUser:
          type: boolean
          description: Whether a reminder has been sent to the user
        employeeId:
          type: string
          description: Employee ID (included when 'employeeId' is in include parameter)
        reminderSentToApprover:
          type: boolean
          description: >-
            Whether an approver has been reminded (included when 'approvalChain'
            is in include parameter)
        hasRejectedExpenseRecords:
          type: boolean
          description: >-
            Whether the report has rejected expense records (included when
            'approvalChain' is in include parameter)
        hasIncorrectApprovalChains:
          type: boolean
          description: >-
            Whether the report has incorrect approval chains (included when
            'approvalChain' or 'sendChain' is in include parameter)
        approvalAllowed:
          type: boolean
          description: >-
            Whether approval is allowed for this report (included when
            'approvalChain' is in include parameter)
        currentApproverInfo:
          type: object
          description: >-
            Information about the current approver (included when
            'approvalChain' is in include parameter)
          properties:
            singleApprover:
              type: boolean
              description: Whether the report has a single approver
            hasIncorrectApprovalChains:
              type: boolean
              description: Whether the report has incorrect approval chains
            approvalChainId:
              type: string
              description: The approval chain ID
            fullName:
              type: string
              description: Full name of the current approver
            email:
              type: string
              description: Email address of the current approver
        sendChain:
          type: object
          description: >-
            Send chain information (included when 'sendChain' is in include
            parameter)
          properties:
            isComplete:
              type: boolean
              description: Whether every active step in the chain has been sent
            senders:
              type: array
              items:
                type: object
                properties:
                  status:
                    type: string
                    description: >
                      Status of this step in the chain. The step a report is
                      currently waiting on is the one with the lowest sortOrder
                      among the steps still in TRANSFER_TO_RECIPIENT, which is
                      what the recipientId filter matches on.
                  recipient:
                    type: object
                    description: The recipient this step sends to
                    properties:
                      id:
                        type: string
                        description: >-
                          Id of the recipient, the value the recipientId filter
                          takes
                      integrationPluginName:
                        type: string
                        description: >-
                          The integration plugin that delivers to this
                          recipient, if the recipient is served by one
                  sortOrder:
                    type: integer
                    description: Position of this step in the chain, ascending
                  collectReport:
                    type: boolean
                    description: >-
                      Whether this step collects the report instead of sending
                      it on
                  recordInstances:
                    type: array
                    description: >-
                      The per expense record send instances belonging to this
                      step
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: External id of the record send instance
                        expenseRecordId:
                          type: string
                          description: The expense record this instance belongs to
                        externalVoucherNumber:
                          type: string
                          description: Voucher number the recipient booked the record under
                        externalVoucherId:
                          type: string
                          description: The recipient's own id for the voucher
                        externalVoucherUrl:
                          type: string
                          description: Link to the voucher in the recipient system
                        externalVoucherInformation:
                          type: string
                          description: Message returned by the recipient for this record
                        externalVoucherErrorInformation:
                          type: string
                          description: Error returned by the recipient for this record
                        bookingDate:
                          type: string
                          format: date-time
                          description: When the recipient booked the record
                        includedInRecipient:
                          type: boolean
                          description: >-
                            Whether the record was part of what was sent to the
                            recipient
                  uniqueVoucherNumbers:
                    type: array
                    items:
                      type: string
                    description: Unique voucher numbers
                  numberOfNonBookedExpenses:
                    type: integer
                    description: Number of non-booked expenses
                  numberOfBookedExpenses:
                    type: integer
                    description: Number of booked expenses
                  aggregatedVoucherNumbers:
                    type: string
                    description: Aggregated voucher numbers
                  aggregatedVoucherInformation:
                    type: string
                    description: Aggregated voucher information
                  aggregatedVoucherErrorInformation:
                    type: string
                    description: Aggregated voucher error information
              description: List of senders in the chain
        tag:
          type: object
          description: Tag information (included when 'tag' is in include parameter)
          properties:
            simulatedCardReport:
              type: boolean
            dimensions:
              type: object
        meta:
          type: object
          description: >-
            Server-computed metadata for the report. Each property is opt-in
            through the include parameter.
          properties:
            autoApproval:
              type: object
              required:
                - status
              description: >
                AI review guidance for the report, produced by the Controller
                agent and rolled up from the verdicts on the report's expenses.
                Only present when 'meta.autoApproval' is in the include
                parameter, the feature is enabled for the organization, and the
                agent has reached a verdict for every expense in the report.
              properties:
                status:
                  type: string
                  enum:
                    - APPROVED
                    - REJECTED
                  description: >
                    The verdict for the whole report. APPROVED means the report
                    is low risk and needs no manual attention. REJECTED means at
                    least one of its expenses was flagged and the report needs
                    manual review - no rejection has taken place and the
                    report's own status is unaffected. The two values match the
                    per-expense verdict the expense API already exposes under
                    meta.autoApproval, so a client can use one mapping for both.
                    A report the agent has not finished with is omitted entirely
                    rather than reported as pending.
                  readOnly: true
                reasons:
                  type: array
                  description: >
                    Why the agent reached that verdict, in the same wording the
                    approver app shows the end user and already translated for
                    the caller's locale. For REJECTED these are the deviations
                    found on the report's expenses, de-duplicated across them
                    and ordered by reason code. For APPROVED these are the
                    checks that came back clean. Omitted when there is nothing
                    to show, so a REJECTED report can arrive without it.
                  readOnly: true
                  items:
                    type: object
                    required:
                      - reason
                      - description
                    properties:
                      reason:
                        type: string
                        enum:
                          - SIMILAR_REJECTED_ORG
                          - SIMILAR_REJECTED_PERSON
                          - SIMILAR_REJECTED_GLOBAL
                          - POLICY_FAILURE
                          - NOT_VALID_RECEIPT
                          - DEVIATING_AMOUNT_ORG
                          - DEVIATING_AMOUNT_PERSON
                          - DEVIATING_AMOUNT_GLOBAL
                          - PREDICT_AMOUNT_DEVIATION
                          - WEEKEND_PURCHASE_DATE
                          - SPECIAL_ITEM_ALCOHOL
                          - SPECIAL_ITEM_TOBACCO
                        description: >
                          The check the agent ran. The set is closed and matches
                          the agent's reason types; new codes are only added
                          together with a new agent capability.
                      description:
                        type: string
                        description: The translated sentence shown for that reason.
        customFields:
          $ref: '#/components/schemas/ArrayOfCustomFields'
    404Error-2:
      type: object
      properties:
        result:
          type: string
        code:
          type: string
        description:
          type: string
    expenseIncludeEnum:
      type: array
      items:
        type: string
        enum:
          - expenseRecords
          - approvalChain
          - sendChain
          - employeeId
          - tag
          - externalReports
          - meta.violations
          - meta.messages
          - meta.autoApproval
          - meta.ids
    ExpenseRecord:
      type: object
      description: ExpenseRecord format
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - NEW
            - NORMAL
            - APPROVAL
            - APPROVED
            - REJECTED
          readOnly: true
        personId:
          $ref: '#/components/schemas/Uuid'
        dateCreated:
          type: string
          readOnly: true
        lastUpdated:
          type: string
          readOnly: true
        organizationId:
          $ref: '#/components/schemas/Uuid'
        categoryId:
          $ref: '#/components/schemas/Uuid'
        rejectComment:
          type: string
          readOnly: true
        expenseReportId:
          $ref: '#/components/schemas/Uuid'
        reimbursement:
          type: number
          readOnly: true
        reimbursementCurrency:
          type: string
          readOnly: true
        meta:
          type: object
          properties:
            categoryIconUrl:
              type: string
              example: >-
                https://expense.findity.com/api/resources/8a5f867e9b204742a8cc2ca2b6c57358
    ArrayOfCustomFields:
      type: array
      items:
        type: object
        properties:
          fieldDefinitionId:
            $ref: '#/components/schemas/Uuid'
          value:
            $ref: '#/components/schemas/AnyValue'
    AnyValue:
      description: 'Can be: string, number, integer, date, boolean'
  parameters:
    expenseReportId:
      in: path
      name: reportId
      required: true
      description: The id of the expense report to retrieve
      schema:
        $ref: '#/components/schemas/Uuid'
      example: f328e47d595c40ad80f27f52626c5b92
    expenseReportInclude:
      name: include
      in: query
      description: >
        Parameter used to include additional data in the response. Available
        options:

        - expenseRecords: Include all expense records in the report

        - approvalChain: Include approval chain information
        (reminderSentToApprover, hasRejectedExpenseRecords,
        hasIncorrectApprovalChains, currentApproverInfo, approvalAllowed)

        - sendChain: Include send chain information (sendChain,
        hasIncorrectApprovalChains)

        - employeeId: Include the employee ID of the report owner

        - tag: Include tag information (simulatedCardReport, integrationTest,
        dimensions)

        - externalReports: Include reports an integration module is still
        working on, under meta.externalReports

        - meta.violations: Include the report's policy violations

        - meta.messages: Include the direct messages attached to the report

        - meta.autoApproval: Include the AI review guidance verdict for the
        report

        - meta.ids: Include the ids of every report matching the filter,
        ignoring pagination, under meta.ids
      required: false
      schema:
        $ref: '#/components/schemas/expenseIncludeEnum'
      example: expenseRecords,approvalChain,employeeId
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````