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

# Get Expense Report



## OpenAPI

````yaml /openapi/reimbursement/expenses/openapi.yaml get /v1/expense-reports/{reportId}
openapi: 3.0.3
info:
  title: Reimbursement
  description: API for managing reimbursement expenses.
  version: '1.0'
servers:
  - url: https://api.spirii.com/reimbursement
security:
  - BearerAuth: []
tags:
  - name: Reimbursement Expenses
    description: Operations related to expense reimbursement.
paths:
  /v1/expense-reports/{reportId}:
    get:
      tags:
        - Reimbursement Expenses
      summary: Get Expense Report
      operationId: getExpenseReportById
      parameters:
        - $ref: '#/components/parameters/reportId_path'
      responses:
        '200':
          description: Returns a single expense report with a list of expenses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseData'
        default:
          $ref: '#/components/responses/ProblemDetail'
components:
  parameters:
    reportId_path:
      name: reportId
      required: true
      in: path
      description: Unique identifier of the Expense Report.
      schema:
        type: integer
        example: 42
  schemas:
    ExpenseData:
      type: object
      properties:
        expenses:
          type: array
          description: List of individual expenses included in this report.
          items:
            $ref: '#/components/schemas/ExpenseItem'
        report:
          description: Summary of the Expense Report.
          allOf:
            - $ref: '#/components/schemas/ExpenseReport'
      required:
        - expenses
    ExpenseItem:
      type: object
      properties:
        amountInCents:
          type: number
          description: >-
            Total reimbursement amount for this expense, in the smallest
            currency unit (e.g. cents).
        authIdTag:
          $ref: '#/components/schemas/AuthIdTag'
        consumptionInWattHours:
          type: number
          description: >-
            Total energy consumed across all charging sessions linked to this
            expense, in watt-hours.
        currency:
          type: string
          description: ISO 4217 currency code for the reimbursement amount.
          example: EUR
        IBAN:
          type: string
          description: >-
            IBAN of the recipient's bank account used for the reimbursement
            transfer.
          example: DK9520000123456789
        id:
          type: string
          format: uuid
          description: Unique identifier of the expense.
        paymentStatus:
          $ref: '#/components/schemas/ExpensePaymentStatus'
        period:
          $ref: '#/components/schemas/Period'
        recipientName:
          type: string
          example: John Doe
          description: Name of the recipient.
        recipientCrmId:
          type: integer
          description: Spirii ID of the recipient.
          example: 123456
        recipientExternalId:
          type: string
          description: External ID of the recipient (Your ID).
          example: testExternalId
        reportStatus:
          $ref: '#/components/schemas/ExpenseReportStatus'
      required:
        - amountInCents
        - consumptionInWattHours
        - currency
        - IBAN
        - id
        - recipientName
        - recipientCrmId
        - reportStatus
    ExpenseReport:
      type: object
      properties:
        companyName:
          type: string
          description: Name of the fleet company associated with this Expense Report.
          example: Example Company Inc.
        currency:
          type: string
          nullable: true
          description: ISO 4217 currency code for the reimbursement amount.
          example: EUR
        emailAddressList:
          type: array
          description: Email addresses notified when the report is approved.
          items:
            type: string
            format: email
            nullable: true
          example:
            - manager1@email.com
            - manager2@email.com
        id:
          type: integer
          description: Unique identifier of the Expense Report.
          example: 42
        invalidInformation:
          description: >-
            Issues blocking approval of this Expense Report. When present, all
            flagged problems must be resolved before the report can be approved.
          allOf:
            - $ref: '#/components/schemas/InvalidInformation'
        period:
          $ref: '#/components/schemas/Period'
        status:
          $ref: '#/components/schemas/ExpenseReportStatus'
        totalAmountInCents:
          type: number
          description: >-
            Total reimbursable amount across all expenses, in the smallest
            currency unit (e.g. cents).
        totalConsumptionInWattHours:
          type: number
          description: >-
            Total energy consumed across all charging sessions in the report, in
            watt-hours.
      required:
        - companyName
        - id
        - period
        - status
        - totalAmountInCents
        - totalConsumptionInWattHours
    ProblemDetail:
      type: object
      description: RFC 9457 problem details.
      properties:
        type:
          type: string
          example: about:blank
          description: >-
            A URI reference that identifies the problem type. When this member
            is not present, its value is assumed to be "about:blank".
          format: uri
        title:
          example: Bad Request
          description: >-
            A short, human-readable summary of the problem type. It should not
            change from occurrence to occurrence of the problem, except for
            purposes of localization.
          type: string
        status:
          example: 400
          description: >-
            The HTTP status code generated by the origin server for this
            occurrence of the problem.
          type: integer
        detail:
          example: Invalid request body
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          type: string
        instance:
          example: /v1/uri-called/
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          type: string
          format: uri-reference
        errors:
          example:
            - currentPage must be a positive integer
          description: >-
            Optional field containing additional error details, such as
            validation errors.
          type: array
          items:
            type: string
      required:
        - type
        - title
        - status
        - detail
        - instance
    AuthIdTag:
      type: object
      properties:
        uid:
          type: string
          description: >-
            UID of the authentication token. This is what the charger uses to
            authorise.
        label:
          type: string
          nullable: true
          description: >-
            Label of the authentication token. This is often printed on the
            physical token.
        billingReference:
          type: string
          nullable: true
          description: Additional billing reference on the token.
    ExpensePaymentStatus:
      type: string
      description: Status of an expense payment.
      enum:
        - Awaiting funds
        - Failed
        - In progress
        - Not started
        - Paid
      x-enum-varnames:
        - Awaiting funds
        - Failed
        - In progress
        - Not started
        - Paid
      x-enum-descriptions:
        - >-
          The Expense Report has been approved but the payment transfer has not
          yet executed.
        - Payment transfer failed.
        - Payment transfer is currently being processed.
        - >-
          The Expense Report has not been approved yet; payment has not been
          initiated.
        - Payment transfer has been completed successfully.
    Period:
      type: object
      description: Month of the most recent expense in the report.
      properties:
        year:
          type: integer
          description: Calendar year of the period.
          example: 2026
        monthIndex:
          type: integer
          minimum: 0
          maximum: 11
          description: A number between 0 and 11 (January to December).
          example: 0
      required:
        - year
        - monthIndex
    ExpenseReportStatus:
      type: string
      description: Status of the Expense Report.
      enum:
        - Active
        - Pending
        - Approved
        - FundsReceived
      x-enum-varnames:
        - Active
        - Pending
        - Approved
        - FundsReceived
      x-enum-descriptions:
        - Current month's expense report.
        - Expense Report ready to be approved.
        - Expense Report has been approved, but not yet paid for.
        - Expense Report has been finalized (approved and paid for).
    InvalidInformation:
      type: object
      description: >-
        Issues blocking approval of the Expense Report. When present, all
        flagged problems must be resolved before the report can be approved.
      properties:
        awaitingExpenseReportList:
          type: array
          items:
            type: integer
          description: >-
            IDs of other Pending Expense Reports for the same fleet customer.
            These must be resolved before this report can be approved.
        companyCustomer:
          description: >-
            The fleet (company) customer has missing required fields.
            `customerCrmId` is the customer's Spirii ID, `name` is the company
            name, and `invalidFields` lists the names of the missing fields
            (possible values: `email`, `name`, `phoneNumber`, `address`, `city`,
            `country`, `zipcode`).
          allOf:
            - $ref: '#/components/schemas/InvalidCustomerFields'
        supplierCustomer:
          description: >-
            The fleet supplier (or operator) has missing required fields.
            `customerCrmId` is the supplier's Spirii ID, `name` is the supplier
            name, and `invalidFields` lists the names of the missing fields
            (possible values: `name`, `address`, `city`, `country`, `zipcode`).
          allOf:
            - $ref: '#/components/schemas/InvalidCustomerFields'
        invalidBeneficiary:
          description: >-
            One or more expenses are linked to the fleet company customer
            instead of an individual driver customer. `customerCrmId` is the
            fleet customer's Spirii ID, and `expenseIds` contains the IDs of the
            affected expenses. These must be re-linked to the correct driver
            customer before the report can be approved.
          allOf:
            - $ref: '#/components/schemas/InvalidBeneficiary'
        kycNotPassed:
          type: boolean
          description: >-
            When `true`, the fleet customer has not completed KYC (Know Your
            Customer) verification with PPS.
        missingReimbursementRates:
          type: array
          items:
            $ref: '#/components/schemas/MissingReimbursementRate'
          description: >-
            Charging locations with CDRs that have missing reimbursement rate
            data. Each entry identifies a location and the end dates of affected
            charging sessions.
        recipientList:
          type: array
          items:
            $ref: '#/components/schemas/InvalidCustomerFields'
          description: >-
            Expense recipients (employees/drivers) with missing required
            personal information. `customerCrmId` is the driver's Spirii ID,
            `name` is their display name, and `invalidFields` lists the names of
            the missing fields (possible values: `email`, `name`, `iban`).
    InvalidCustomerFields:
      type: object
      description: A customer with one or more invalid required fields blocking approval.
      properties:
        customerCrmId:
          type: string
          description: Spirii ID of the customer.
        name:
          type: string
          description: Display name of the customer.
        invalidFields:
          type: array
          items:
            type: string
          description: Names of the missing or invalid fields.
      required:
        - customerCrmId
        - name
        - invalidFields
    InvalidBeneficiary:
      type: object
      description: >-
        One or more expenses are linked to the fleet company customer instead of
        an individual driver customer. Usually due to an incorrectly configured
        Location, which is invalid for reimbursement.
      properties:
        customerCrmId:
          type: string
          description: Spirii ID of the fleet customer.
        expenseIds:
          type: array
          items:
            type: string
          description: >-
            IDs of the affected expenses that must be re-linked to the correct
            driver customer.
      required:
        - customerCrmId
        - expenseIds
    MissingReimbursementRate:
      type: object
      description: A charging location that has CDRs with missing reimbursement rate data.
      properties:
        locationId:
          type: integer
          description: Spirii ID of the location.
        locationName:
          type: string
          description: Display name of the charging location.
        cdrEndDates:
          type: array
          items:
            type: string
            format: date-time
          description: End dates of the affected charging sessions (ISO 8601).
      required:
        - locationId
        - locationName
        - cdrEndDates
  responses:
    ProblemDetail:
      description: >-
        An error occurred. Returns a response body conforming to [RFC
        9457](https://www.rfc-editor.org/rfc/rfc9457).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetail'
  securitySchemes:
    BearerAuth:
      scheme: bearer
      bearerFormat: JWT
      description: Authorization via a JWT bearer token.
      type: http

````