Soldo Expense Reviews API

The Expense Reviews API from Soldo — 7 operation(s) for expense reviews.

Operations 7

GET /business/v2/expense-review/{userId} Get Expense Review #
POST /business/v2/expense-review/{userId}/reminder Send Expense Review Reminder #
POST /business/v2/expense-review/export-expenses/{userId} Export Expense Review #
PUT /business/v2/transactions/{transactionId}/expense-review/change-type Update Expense Review Type #
PUT /business/v2/transactions/{transactionId}/expense-review/request-info Request Expense Review Info #
PUT /business/v2/transactions/{transactionId}/expense-review/update-status Update Expense Review Status #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/soldo-expense-reviews-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

soldo-expense-reviews-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Soldo Business API v2.0 Expense Reviews API
  description: Soldo Business API v2.0 OpenAPI specification
  version: 5.56.0
servers:
- url: https://api.soldo.com
  description: Production server (using live data)
- url: https://api-demo.soldocloud.net
  description: Sandbox server (using test data)
tags:
- name: Expense Reviews
paths:
  /business/v2/expense-review/{userId}:
    get:
      tags:
      - Expense Reviews
      summary: Get Expense Review
      description: Endpoint to get the `ExpenseReview` of a specific `User`.
      operationId: expense-review-get
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
          description: The ID of the `User`.
          example: XMPL1234-000001
      - name: status
        in: query
        description: The status of the `ExpenseReview`.
        schema:
          type: array
          description: The status of the `ExpenseReview`.
          example: APPROVED
          items:
            $ref: '#/components/schemas/ExpenseStatus'
        example: APPROVED
      - name: fromDate
        in: query
        description: 'The beginning of the period of the search `fromDate` included (i.e. greater than or equal to) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
        schema:
          $ref: '#/components/schemas/DateParam'
        example: '2020-04-06T12:48:40Z'
      - name: toDate
        in: query
        description: 'The end of the period of the search `toDate` included (i.e. less than) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
        schema:
          $ref: '#/components/schemas/DateParam'
        example: '2020-05-07T12:48:40Z'
      - name: paymentMethod
        in: query
        description: It determines the filter by payment method of the transaction.
        schema:
          type: array
          description: It determines the filter by payment method of the transaction.
          items:
            $ref: '#/components/schemas/ExpensePaymentMethod'
        example: SUBSCRIPTION
      - name: p
        in: query
        description: It indicates the specific page to display (the counter starts from zero).
        schema:
          type: integer
          format: int32
          default: 0
          description: It indicates the specific page to display (the counter starts from zero).
          example: 3
        example: 3
      - name: s
        in: query
        description: It indicates the number of items per page.
        schema:
          type: integer
          format: int32
          default: 0
          description: It indicates the number of items per page.
          example: 25
          maximum: 50
        example: 25
      - name: d
        in: query
        description: It indicates how the pages are ordered.
        schema:
          $ref: '#/components/schemas/Direction'
        example: DESC
      - name: props
        in: query
        description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
        schema:
          type: array
          description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
          example: creationTime
          items:
            type: string
            description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
            example: creationTime
        example: creationTime
      responses:
        '200':
          description: The returned resource is a `ExpenseReview`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseItem'
        '404':
          description: One or more resource requested does not exist.
      security:
      - standardAuth:
        - expense_review_read
  /business/v2/expense-review/{userId}/reminder:
    post:
      tags:
      - Expense Reviews
      summary: Send Expense Review Reminder
      description: Endpoint to send a reminder of `ExpenseReview` to a specific `User`.
      operationId: expense-review-reminder
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
          description: The ID of the `User`.
          example: XMPL1234-000001
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendExpensesReminder'
      responses:
        '204':
          description: No content as result.
        '400':
          description: Your request has missing arguments or is malformed.
      security:
      - standardAuth:
        - expense_review_read
  /business/v2/expense-review/export-expenses/{userId}:
    post:
      tags:
      - Expense Reviews
      summary: Export Expense Review
      description: Endpoint to export the `ExpenseReview` of a single `User`.
      operationId: expense-review-export
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
          description: The `User` ID.
          example: XMPL1234-000001
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportExpense'
      responses:
        '200':
          description: The result is data containing `ExpenseReview` export.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportExpenseReview'
        '400':
          description: Your request has missing arguments or is malformed.
        '404':
          description: One or more resource requested does not exist.
      security:
      - standardAuth:
        - expense_review_write
  /business/v2/expense-review:
    get:
      tags:
      - Expense Reviews
      summary: Search Expense Reviews
      description: Endpoint to find users with `ExpenseReview` using filtering parameters.
      operationId: expense-review-search
      parameters:
      - name: delegatedBy
        in: query
        schema:
          type: array
          description: Filters expenses by the user who delegated them.
          example: XMPL1234-000001
          items:
            type: string
            description: Filters expenses by the user who delegated them.
            example: XMPL1234-000001
      - name: fromDate
        in: query
        description: 'The beginning of the period of the search `fromDate` included (i.e. greater than or equal to) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
        schema:
          $ref: '#/components/schemas/DateParam'
        example: '2020-04-06T12:48:40Z'
      - name: toDate
        in: query
        description: 'The end of the period of the search `toDate` included (i.e. less than) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
        schema:
          $ref: '#/components/schemas/DateParam'
        example: '2020-05-07T12:48:40Z'
      - name: text
        in: query
        description: A text to search in the expenses reviewer name or surname.
        schema:
          type: string
          description: A text to search in the expenses reviewer name or surname.
          example: John
        example: John
      - name: p
        in: query
        description: It indicates the specific page to display (the counter starts from zero).
        schema:
          type: integer
          format: int32
          default: 0
          description: It indicates the specific page to display (the counter starts from zero).
          example: 3
        example: 3
      - name: s
        in: query
        description: It indicates the number of items per page.
        schema:
          type: integer
          format: int32
          default: 0
          description: It indicates the number of items per page.
          example: 25
          maximum: 50
        example: 25
      - name: props
        in: query
        description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
        schema:
          type: array
          description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
          example: creationTime
          items:
            type: string
            description: It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the `props` parameter in the request.
            example: creationTime
        example: creationTime
      responses:
        '200':
          description: The returned resource is an array of `Expenses`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Expenses'
      security:
      - standardAuth:
        - expense_review_read
  /business/v2/transactions/{transactionId}/expense-review/change-type:
    put:
      tags:
      - Expense Reviews
      summary: Update Expense Review Type
      description: Endpoint to update the type of an `ExpenseReview`.
      operationId: expense-review-update-type
      parameters:
      - name: transactionId
        in: path
        required: true
        schema:
          type: string
          description: The `Transaction` ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExpenseType'
      responses:
        '204':
          description: No content as result.
        '400':
          description: Your request has missing arguments or is malformed.
        '404':
          description: One or more resource requested does not exist.
      security:
      - standardAuth:
        - expense_review_write
  /business/v2/transactions/{transactionId}/expense-review/request-info:
    put:
      tags:
      - Expense Reviews
      summary: Request Expense Review Info
      description: Endpoint to request info to an `User` about an `ExpenseReview`.
      operationId: expense-review-request-info
      parameters:
      - name: transactionId
        in: path
        required: true
        schema:
          type: string
          description: The `Transaction` ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestExpenseInfo'
      responses:
        '204':
          description: No content as result.
        '400':
          description: Your request has missing arguments or is malformed.
        '404':
          description: One or more resource requested does not exist.
      security:
      - standardAuth:
        - expense_review_write
  /business/v2/transactions/{transactionId}/expense-review/update-status:
    put:
      tags:
      - Expense Reviews
      summary: Update Expense Review Status
      description: Endpoint to update the status of an `ExpenseReview`.
      operationId: expense-review-update-status
      parameters:
      - name: transactionId
        in: path
        required: true
        schema:
          type: string
          description: The `Transaction` ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExpenseStatus'
      responses:
        '204':
          description: No content as result.
        '400':
          description: Your request has missing arguments or is malformed.
        '404':
          description: One or more resource requested does not exist.
      security:
      - standardAuth:
        - expense_review_write
webhooks:
  change_expense_type:
    post:
      tags:
      - Expense Reviews
      summary: Expense Review - Change Expense Type
      description: A `Transaction` expense type has been changed.
      operationId: webhook-expensereview-change-expense-type
      parameters:
      - name: X-Soldo-Fingerprint
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint}}'
          description: '[Webhook authentication](ref:webhook-authentication): `SHA512SUM` of the fingerprint values listed in the fingerprint order for this webhook.'
          example: '{{fingerprint}}'
      - name: X-Soldo-Fingerprint-Order
        in: header
        required: true
        schema:
          type: string
          default: startDate, policyUrl, enabled, transactionId
          description: '[Webhook authentication](ref:webhook-authentication): The order of the values used to calculate the fingerprint.'
          example: startDate, policyUrl, enabled, transactionId
      - name: X-Soldo-Fingerprint-Signature
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint_signature}}'
          description: '[Webhook authentication](ref:webhook-authentication): Signature of the `X-Soldo-Fingerprint`. It must be verified using the [Soldo public key](ref:soldo-public-key).'
          example: '{{fingerprint_signature}}'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangeExpenseTypeEvent'
      responses:
        '200':
          description: Success.
      x-soldo:
        fingerprint-order: startDate, policyUrl, enabled, transactionId
  updated_transaction:
    post:
      tags:
      - Expense Reviews
      summary: Expense Review - Updated Transaction
      description: A `Transaction` has been update.
      operationId: webhook-expensereview-updated-transaction
      parameters:
      - name: X-Soldo-Fingerprint
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint}}'
          description: '[Webhook authentication](ref:webhook-authentication): `SHA512SUM` of the fingerprint values listed in the fingerprint order for this webhook.'
          example: '{{fingerprint}}'
      - name: X-Soldo-Fingerprint-Order
        in: header
        required: true
        schema:
          type: string
          default: startDate, policyUrl, enabled, transactionId
          description: '[Webhook authentication](ref:webhook-authentication): The order of the values used to calculate the fingerprint.'
          example: startDate, policyUrl, enabled, transactionId
      - name: X-Soldo-Fingerprint-Signature
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint_signature}}'
          description: '[Webhook authentication](ref:webhook-authentication): Signature of the `X-Soldo-Fingerprint`. It must be verified using the [Soldo public key](ref:soldo-public-key).'
          example: '{{fingerprint_signature}}'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatedTransactionEvent'
      responses:
        '200':
          description: Success.
      x-soldo:
        fingerprint-order: startDate, policyUrl, enabled, transactionId
  completed_transactions_import:
    post:
      tags:
      - Expense Reviews
      summary: Expense Review - Transaction Import Completed
      description: A `Transaction` import has been completed.
      operationId: webhook-expensereview-completed-transactions-import
      parameters:
      - name: X-Soldo-Fingerprint
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint}}'
          description: '[Webhook authentication](ref:webhook-authentication): `SHA512SUM` of the fingerprint values listed in the fingerprint order for this webhook.'
          example: '{{fingerprint}}'
      - name: X-Soldo-Fingerprint-Order
        in: header
        required: true
        schema:
          type: string
          default: startDate, policyUrl, enabled, transactionId
          description: '[Webhook authentication](ref:webhook-authentication): The order of the values used to calculate the fingerprint.'
          example: startDate, policyUrl, enabled, transactionId
      - name: X-Soldo-Fingerprint-Signature
        in: header
        required: true
        schema:
          type: string
          default: '{{fingerprint_signature}}'
          description: '[Webhook authentication](ref:webhook-authentication): Signature of the `X-Soldo-Fingerprint`. It must be verified using the [Soldo public key](ref:soldo-public-key).'
          example: '{{fingerprint_signature}}'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompletedTransactionsImportEvent'
      responses:
        '200':
          description: Success.
      x-soldo:
        fingerprint-order: startDate, policyUrl, enabled, transactionId
components:
  schemas:
    ExpenseDateType:
      type: string
      enum:
      - TRANSACTION
      - SETTLEMENT
    UpdateExpenseType:
      properties:
        type:
          $ref: '#/components/schemas/ExpenseType'
          description: The type of the `Transaction` expense.
          example: TRAVEL_AND_ENTERTAINMENT
        approver_id:
          type: string
          description: The ID of the 'SuperAdmin' `user` who approves/rejects the `expenseReview`.
          example: XMPL1234-000003
      required:
      - approver_id
      - type
    ChangeExpenseTypeEvent:
      properties:
        event_uuid:
          type: string
          description: The webhook unique ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
        event_type:
          $ref: '#/components/schemas/WebhookEventType'
          default: ExpenseReview
          description: The webhook event type.
          example: ExpenseReview
        event_name:
          $ref: '#/components/schemas/WebhookEventName'
          default: change_expense_type
          description: The webhook event name.
          example: change_expense_type
        company_account_id:
          type: string
          description: The company account ID.
          example: XMPL1234
        data:
          $ref: '#/components/schemas/ExpenseReview'
          description: The webhook `ExpenseReview` data.
        subscription_id:
          type: string
          description: The webhook subscription ID used to route this event.
          example: 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
    ExportExpense:
      description: Export the Expenses JSON parameters.
      properties:
        transaction_ids:
          type: array
          description: An array of `Transaction` ID to be exported
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
        exported_by_id:
          type: string
          description: The ID of the `User` who exports the expense.
          example: XMPL1234-000003
      required:
      - transaction_ids
    ExpenseItem:
      properties:
        user_id:
          type: string
          description: 'The ID of the `User` (sortable: no).'
          example: XMPL1234-000001
        user_name:
          type: string
          description: 'The name of the `User` (sortable: yes).'
          example: JOHN
        user_surname:
          type: string
          description: 'The surname of the `User` (sortable: yes).'
          example: DOE
        job_title:
          type: string
          description: 'The job title of the `User` (sortable: yes).'
          example: CTO
        to_review_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `TO_REVIEW` (sortable: no).'
          example: 1
        reviewed_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `REVIEWED` (sortable: no).'
          example: 2
        exported_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `EXPORTED` (sortable: no).'
          example: 1
        total_transaction:
          type: integer
          format: int64
          description: 'The number of `Transaction` items (sortable: no).'
          example: 3
        from_date:
          type: string
          description: 'The beginning of the period of the search (sortable: no).'
          example: '2017-06-01T12:48:40Z'
        to_date:
          type: string
          description: 'The end of the period of the search (sortable: no).'
          example: '2017-06-05T12:48:40Z'
        transaction_to_review:
          type: array
          description: 'The array contains ID of the `Transaction` in status `TO_REVIEW` (sortable: no).'
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
        transaction_reviewed:
          type: array
          description: 'The array contains ID of the `Transaction` in status `REVIEWED` (sortable: no).'
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
        transaction_exported:
          type: array
          description: 'The array array contains ID of the `Transaction` in status `EXPORTED` (sortable: no).'
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
    SendExpensesReminder:
      description: Send Expense reminder JSON parameters.
      properties:
        request_timestamp:
          type: integer
          format: int64
          description: The epoch timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected.
          example: 1576850500000
        from_date:
          $ref: '#/components/schemas/DateParam'
          description: 'The beginning of the period of the search `fromDate` included (i.e. greater than or equal to) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
          example: '2020-04-06T12:48:40Z'
        to_date:
          $ref: '#/components/schemas/DateParam'
          description: 'The end of the period of the search `toDate` included (i.e. less than) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
          example: '2020-05-07T12:48:40Z'
      required:
      - from_date
      - request_timestamp
      - to_date
    DateParam:
      description: 'The end of the period of the search `toDate` included (i.e. less than) (Formats: `yyyy-MM-dd`, `yyyy-MM-ddThh:mm:ss`, `yyyy-MM-ddThh:mm:ssZ`).'
      example: '1970-01-30'
    ExpenseType:
      type: string
      enum:
      - COMPANY
      - PERSONAL
      - TRAVEL_AND_ENTERTAINMENT
    WebhookEventType:
      type: string
      enum:
      - BusinessTrip
      - Card
      - Contact
      - ExpenseReview
      - Group
      - OnlineAds
      - Order
      - Purchase
      - Subscription
      - Transaction
      - TransactionAttachment
      - Employee
      - Vehicle
      - Wallet
    ExpenseReview:
      properties:
        transaction_id:
          type: string
          description: The ID of the `Transaction`.
        expense_status:
          type: string
          description: The status of the expense.
        expense_status_category:
          type: string
          description: The status category of the expense.
        expense_type:
          type: string
          description: The type of the expense.
        expense_date:
          type: string
          description: The date of the expense.
        expense_reviewer:
          type: string
          description: The review of the expense.
        transaction_ids:
          type: array
          description: The `Transaction` IDs of the `ExpenseReport`.
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
        expense_report_protocol_ids:
          type: array
          description: The `ExpenseReport` protocol IDs of the `ExpenseReport`.
          example:
          - 7bf79328-a7ae-4222-aa54-091ff7f429a7
          - 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
          items:
            type: string
        expense_report_id:
          type: string
          description: The ID of the `ExpenseReport`.
    CompletedTransactionsImportEvent:
      properties:
        event_uuid:
          type: string
          description: The webhook unique ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
        event_type:
          $ref: '#/components/schemas/WebhookEventType'
          default: ExpenseReviewConfiguration
          description: The webhook event type.
          example: ExpenseReviewConfiguration
        event_name:
          $ref: '#/components/schemas/WebhookEventName'
          default: completed_transactions_import
          description: The webhook event name.
          example: completed_transactions_import
        company_account_id:
          type: string
          description: The company account ID.
          example: XMPL1234
        data:
          $ref: '#/components/schemas/ExpenseReviewConfiguration'
          description: The webhook `ExpenseReview` data.
        subscription_id:
          type: string
          description: The webhook subscription ID used to route this event.
          example: 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
    Expenses:
      properties:
        total:
          type: integer
          format: int32
          description: It represents the total number of available items in the list.
          example: 168
        pages:
          type: integer
          format: int32
          description: It represents the total number of available pages.
          example: 7
        page_size:
          type: integer
          format: int32
          description: It represents the number of items per page.
          example: 25
        current_page:
          type: integer
          format: int32
          description: It indicates the current page (the counter starts from zero).
          example: 0
        results_size:
          type: integer
          format: int32
          description: It indicates the size of the array results.
          example: 25
        results:
          type: array
          items:
            $ref: '#/components/schemas/Expense'
    ExpenseStatusCategory:
      type: string
      enum:
      - AGAINST_POLICY
      - PERSONAL_EXPENSE
      - OTHER
    ExpenseConfigurationActivityGroup:
      type: string
      enum:
      - USER
      - COMPANY
      - PURCHASE
      - SUBSCRIPTION
      - ONLINE_ADS
      - OUT_OF_PLATFORM_COMPANY
      - OUT_OF_PLATFORM_PERSONAL
    Direction:
      type: string
      description: It indicates how the pages are ordered.
      enum:
      - ASC
      - DESC
      example: DESC
    UpdatedTransactionEvent:
      properties:
        event_uuid:
          type: string
          description: The webhook unique ID.
          example: 7bf79328-a7ae-4222-aa54-091ff7f429a7
        event_type:
          $ref: '#/components/schemas/WebhookEventType'
          default: ExpenseReview
          description: The webhook event type.
          example: ExpenseReview
        event_name:
          $ref: '#/components/schemas/WebhookEventName'
          default: updated_transaction
          description: The webhook event name.
          example: updated_transaction
        company_account_id:
          type: string
          description: The company account ID.
          example: XMPL1234
        data:
          $ref: '#/components/schemas/ExpenseReview'
          description: The webhook `ExpenseReview` data.
        subscription_id:
          type: string
          description: The webhook subscription ID used to route this event.
          example: 2d65bd5e-3fdf-4002-b166-bde7fb8863fa
    Expense:
      properties:
        user_id:
          type: string
          description: 'The ID of the `User` (sortable: no).'
          example: XMPL1234-000001
        user_name:
          type: string
          description: 'The name of the `User` (sortable: yes).'
          example: JOHN
        user_surname:
          type: string
          description: 'The surname of the `User` (sortable: yes).'
          example: DOE
        job_title:
          type: string
          description: 'The job title of the `User` (sortable: yes).'
          example: CTO
        to_review_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `TO_REVIEW` (sortable: no).'
          example: 1
        reviewed_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `REVIEWED` (sortable: no).'
          example: 2
        exported_transaction:
          type: integer
          format: int64
          description: 'The number of the `Transaction` items in status `EXPORTED` (sortable: no).'
          example: 1
        total_transaction:
          type: integer
          format: int64
          description: 'The number of `Transaction` items (sortable: no).'
          example: 3
    ExpensePaymentMethod:
      type: string
      description: It determines the filter by payment method of the transaction.
      enum:
      - USER
      - COMPANY
      - PURCHASE
      - SUBSCRIPTION
      - ONLINE_ADS
      - OUT_OF_PLATFORM_COMPANY
      - OUT_OF_PLATFORM_PERSONAL
    ExpenseReviewConfiguration:
      properties:
        start_date:
          type: string
          description: The starting date from which the expenses can be reviewed.
          example: '2017-06-01T12:48:40Z'
        transaction_categories:
          type: array
          description: It determines the filter by category of the `Transaction`.
          items:
            $ref: '#/components/schemas/ExpenseTransactionCategory'
          uniqueItems: true
        activity_groups:
          type: array
          description: It determines the filter by types of `Cards` whose `Transactions` are considered as expenses to be reviewed.
          items:
            $ref: '#/components/schemas/ExpenseConfigurationActivityGroup'
          uniqueItems: true
        policy_url:
          type: string
          description: The url of the company spending policy
          example: https://www.policy.pdf
        start_date_type:
          $ref: '#/components/schemas/ExpenseDateType'
          description: It determines the type of date filter to be used.
          example: SETTLEMENT
        enabled:
          type: boolean
          description: Indicates `ExpenseReview` configuration is enabled.
        locked:
          type: boolean
          description: Indicates `ExpenseReview` configuration is locked.
          example: false
        update_timestamp:
          type: string
          description: The date and time when the configuration was last updated.
          example: '2017-06-01T12:48:40Z'
    UpdateExpenseStatus:
      properties:
        status:
          $ref: '#/components/schemas/ExpenseStatus'
          description: The expense status of the transaction.
          example: APPROVED
        status_category:
          $ref: '#/components/schemas/ExpenseStatusCategory'
          description: The status category of the transaction expense.
          example: AGAINST_POLICY
        status_reason:
          type: string
          description: The reason of the status.
          example: Expense violates company's reimbursement policy
        approver_id:
          type: string
          description: The ID of the SuperAdmin `User` who approves/rejects the `ExpenseReport`.
          example: XMPL1234-000003
      required:
      - approver_id
      - status
      - status_category
    WebhookEventName:
      type: string
      enum:
      - business_trip_created
      - business_trip_update

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/soldo/refs/heads/main/openapi/soldo-expense-reviews-api-openapi.yml