SAP Concur Expense Expense Entries API

Manage individual expense line items within expense reports including itemizations, attendees, and custom fields.

OpenAPI Specification

sap-concur-expense-expense-entries-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: SAP Concur Expense Allocations Expense Entries API
  description: SAP Concur Expense provides REST APIs for managing the full expense lifecycle including creating and submitting expense reports, managing individual expense entries, capturing receipt images, handling quick expenses, managing allocations across cost centers, and retrieving reimbursement payment batches. Authentication uses OAuth 2.0 with support for authorization code and refresh token flows.
  version: '3.0'
  contact:
    name: SAP Concur Developer Support
    url: https://developer.concur.com/support
  termsOfService: https://developer.concur.com/terms-of-use
servers:
- url: https://us.api.concursolutions.com/api/v3.0
  description: United States Production
- url: https://eu.api.concursolutions.com/api/v3.0
  description: Europe Production
- url: https://cn.api.concursolutions.com/api/v3.0
  description: China Production
security:
- OAuth2:
  - expense.report.read
  - expense.report.write
tags:
- name: Expense Entries
  description: Manage individual expense line items within expense reports including itemizations, attendees, and custom fields.
paths:
  /expense/entries:
    get:
      operationId: listExpenseEntries
      summary: List Expense Entries
      description: Returns a collection of expense entries for the specified report ID. Each entry represents a single expense line item with amount, date, category, and supporting details.
      tags:
      - Expense Entries
      parameters:
      - name: reportID
        in: query
        description: The unique identifier of the expense report
        required: true
        schema:
          type: string
      - name: offset
        in: query
        description: Starting page offset for pagination
        required: false
        schema:
          type: string
      - name: limit
        in: query
        description: Number of records to return per page (max 100)
        required: false
        schema:
          type: integer
          maximum: 100
      responses:
        '200':
          description: Success - Returns list of expense entries
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseEntryCollection'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
    post:
      operationId: createExpenseEntry
      summary: Create Expense Entry
      description: Creates a new expense entry within an expense report. The report must exist and be in draft state. The entry requires an expense type code, transaction date, and transaction amount.
      tags:
      - Expense Entries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpenseEntryCreate'
      responses:
        '200':
          description: Success - Returns the created entry ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseEntryCreateResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
  /expense/entries/{id}:
    get:
      operationId: getExpenseEntry
      summary: Get Expense Entry
      description: Returns a single expense entry by its ID, including all form field values, itemizations, and attendee information.
      tags:
      - Expense Entries
      parameters:
      - name: id
        in: path
        description: The unique identifier of the expense entry
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success - Returns the expense entry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExpenseEntry'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    put:
      operationId: updateExpenseEntry
      summary: Update Expense Entry
      description: Updates an existing expense entry. Only entries in draft reports can be modified.
      tags:
      - Expense Entries
      parameters:
      - name: id
        in: path
        description: The unique identifier of the expense entry
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExpenseEntryUpdate'
      responses:
        '204':
          description: Success - No content returned
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
    delete:
      operationId: deleteExpenseEntry
      summary: Delete Expense Entry
      description: Deletes an expense entry from a draft expense report.
      tags:
      - Expense Entries
      parameters:
      - name: id
        in: path
        description: The unique identifier of the expense entry
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Success - No content returned
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '404':
          description: Not Found
        '500':
          description: Internal Server Error
components:
  schemas:
    ExpenseEntryCreate:
      type: object
      required:
      - ReportID
      - ExpenseTypeCode
      - TransactionDate
      - TransactionAmount
      - TransactionCurrencyCode
      properties:
        ReportID:
          type: string
          description: The parent expense report ID
        ExpenseTypeCode:
          type: string
          description: Expense type code
        TransactionDate:
          type: string
          format: date
          description: Date of the expense transaction
        TransactionAmount:
          type: number
          format: double
          description: Amount of the transaction
        TransactionCurrencyCode:
          type: string
          description: ISO 4217 currency code
        BusinessPurpose:
          type: string
          description: Business purpose for the expense
        VendorDescription:
          type: string
          description: Vendor or merchant name
        LocationName:
          type: string
          description: Location where expense was incurred
        Comment:
          type: string
          description: Additional notes
    ExpenseEntryCollection:
      type: object
      properties:
        Items:
          type: array
          items:
            $ref: '#/components/schemas/ExpenseEntry'
        NextPage:
          type: string
          description: URL to the next page of results
    ExpenseEntry:
      type: object
      properties:
        ID:
          type: string
          description: The unique identifier of the expense entry
        ReportID:
          type: string
          description: The parent expense report ID
        ExpenseTypeCode:
          type: string
          description: Expense type code (e.g., BUSML, AIRFR, HOTEL)
        ExpenseTypeName:
          type: string
          description: Human-readable expense type name
        TransactionDate:
          type: string
          format: date
          description: Date of the expense transaction
        TransactionAmount:
          type: number
          format: double
          description: Amount of the transaction in transaction currency
        TransactionCurrencyCode:
          type: string
          description: ISO 4217 currency code of the transaction
        PostedAmount:
          type: number
          format: double
          description: Amount posted in report currency
        BusinessPurpose:
          type: string
          description: Business purpose for the expense
        VendorDescription:
          type: string
          description: Name of the vendor or merchant
        LocationName:
          type: string
          description: Location where expense was incurred
        IsItemized:
          type: boolean
          description: Whether the entry has been itemized
        HasVAT:
          type: boolean
          description: Whether VAT tax applies to this entry
        ReceiptImageID:
          type: string
          description: ID of the associated receipt image
        URI:
          type: string
          description: URI to retrieve this resource
    ExpenseEntryUpdate:
      type: object
      properties:
        ExpenseTypeCode:
          type: string
          description: Updated expense type code
        TransactionDate:
          type: string
          format: date
          description: Updated transaction date
        TransactionAmount:
          type: number
          format: double
          description: Updated transaction amount
        BusinessPurpose:
          type: string
          description: Updated business purpose
        VendorDescription:
          type: string
          description: Updated vendor description
        Comment:
          type: string
          description: Updated comment
    ExpenseEntryCreateResponse:
      type: object
      properties:
        ID:
          type: string
          description: The unique identifier of the created expense entry
        URI:
          type: string
          description: URI of the created resource
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://us.api.concursolutions.com/oauth2/v0/authorize
          tokenUrl: https://us.api.concursolutions.com/oauth2/v0/token
          scopes:
            expense.report.read: Read expense reports
            expense.report.write: Create and modify expense reports
            expense.report.delete: Delete expense reports
externalDocs:
  description: SAP Concur Expense API Reference
  url: https://developer.concur.com/api-reference/expense/