SAP Concur Expense Entries v3.0

This reference is readable without JavaScript. Download the OpenAPI document.

Runtime

/api/purple-suite/{instanceId}/contracts/expense/concur
[
  {
    "method": "get",
    "path": "/expense/entries",
    "operationId": "get_expense_entries"
  },
  {
    "method": "post",
    "path": "/expense/entries",
    "operationId": "post_expense_entries"
  },
  {
    "method": "get",
    "path": "/expense/entries/:id",
    "operationId": "get_expense_entries_id"
  },
  {
    "method": "put",
    "path": "/expense/entries/:id",
    "operationId": "put_expense_entries_id"
  },
  {
    "method": "delete",
    "path": "/expense/entries/:id",
    "operationId": "delete_expense_entries_id"
  }
]

Credentials

Coverage and limitations

{
  "documentScope": "full",
  "runtimeFidelity": "modeled",
  "counts": {
    "operations": 5
  },
  "notes": [
    "All 5 operations declared by the pinned Entries document are mounted as `modeled-core`: list, create, retrieve, update and delete an expense line item. Entries are attached to a report and are retrievable from both sides — `GET /expense/entries?reportID=` and the report's own totals. 5 of the 12 declared list filters are removed because they select on attendee, VAT and payment-batch sub-resources this contract does not model.",
    "Creating, updating or deleting an entry recomputes the owning report's `Total`, `TotalClaimedAmount`, `AmountDueEmployee` and `LastModifiedDate` in one transaction. `Journey` (mileage) is accepted and echoed as declared; itemizations, attendees and VAT details are separate Concur APIs and are not modeled.",
    "Provenance `oas`: a vendor-published Swagger 2.0 document from SAP's own documentation repository. `runtimeFidelity` is `modeled`, not `exact`: the served request schema is deliberately narrowed and the runtime is deterministic synthetic state, not captured Concur tenant behaviour.",
    "Swagger 2.0 `basePath` cannot template a variable, so the instance-scoped prefix is expressed as a literal `/api/purple-suite/{instanceId}/contracts/expense/concur` basePath with `host`, `schemes` and the vendor `x-servers` block removed. The reference viewer supplies a templated server that overrides it, so a Scalar try-it-out still targets a concrete instance; the cost falls on a strict Swagger 2.0 client reading the raw document, which treats `{instanceId}` as a literal path segment.",
    "Vendor-document defect repaired in the served projection only: the pinned collection definition declares `Items` as a single `$ref` object while its sibling `NextPage` is documented as \"The URI of the next page of results, if any.\" The projection declares `Items` as an array of the pinned item schema; `sources/` is unchanged.",
    "Concur's report/entry approval workflow, and every other Concur product surface, declares no operation in these documents and is therefore not modeled rather than faked."
  ]
}

Provides access to expense line items within a user's expense reports. Supports creating, retrieving, updating, and deleting expense entries, including mileage, VAT, and attendee data. Suited for ERP integrations and travel management tools that need to read or write detailed expense data within the SAP Concur platform.

Servers

[]

Authentication schemes

{}

Each operation lists its security requirements. An empty security array permits an unauthenticated request. Use the scheme and headers declared for the selected contract.

Operations

GET /expense/entries

Get expense entries

Gets all expense entries owned by the user. Executable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.

Authentication

[
  {
    "OAuth2": []
  }
]

Request, responses and operation details

{
  "tags": [
    "Resources"
  ],
  "summary": "Get expense entries",
  "description": "Gets all expense entries owned by the user.\n\nExecutable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.",
  "parameters": [
    {
      "name": "reportID",
      "in": "query",
      "description": "The report ID of the entries to be retrieved.  Format: An alpha-numeric GUID string.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    },
    {
      "name": "paymentTypeID",
      "in": "query",
      "description": "The ID of the payment type of the entries to be retrieved.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    },
    {
      "name": "isBillable",
      "in": "query",
      "description": "Determines whether the operation retrieves entries that are billable. Format: true or false",
      "required": false,
      "type": "boolean"
    },
    {
      "name": "expenseTypeCode",
      "in": "query",
      "description": "The code for the expense type for the entries to be retrieved.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    },
    {
      "name": "offset",
      "in": "query",
      "description": "The starting point of the next set of results, after the limit specified in the limit field has been reached.",
      "required": false,
      "type": "string",
      "maxLength": 256,
      "pattern": "^[A-Za-z0-9_.:-]*$"
    },
    {
      "name": "limit",
      "in": "query",
      "description": "The number of records to return. Default value: 25",
      "required": false,
      "type": "integer",
      "format": "int32",
      "minimum": 1,
      "maximum": 100,
      "default": 25
    },
    {
      "name": "user",
      "in": "query",
      "description": "The login ID of the user who owns the entries. The user must have the Web Services Admin role to use this parameter.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "schema": {
        "$ref": "#/definitions/EntryCollection"
      }
    }
  },
  "operationId": "get_expense_entries",
  "x-purplesuite-classification": "modeled-core"
}

POST /expense/entries

Create expense entry

Creates a new expense entry for the specified user. Executable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.

Authentication

[
  {
    "OAuth2": []
  }
]

Request, responses and operation details

{
  "tags": [
    "Resources"
  ],
  "summary": "Create expense entry",
  "description": "Creates a new expense entry for the specified user.\n\nExecutable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.",
  "parameters": [
    {
      "name": "content",
      "in": "body",
      "description": "The expense entry object to create.",
      "required": true,
      "schema": {
        "$ref": "#/definitions/EntryPost"
      }
    },
    {
      "name": "user",
      "in": "query",
      "description": "The login ID of the user who owns the entries. The user must have the Web Services Admin role to use this parameter.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "schema": {
        "$ref": "#/definitions/CreateResponse"
      }
    },
    "400": {
      "description": "Bad Request",
      "schema": {
        "$ref": "#/definitions/Void"
      }
    }
  },
  "operationId": "post_expense_entries",
  "x-purplesuite-classification": "modeled-core"
}

GET /expense/entries/{id}

Get a single expense entry

Gets the specified expense entry. Executable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.

Authentication

[
  {
    "OAuth2": []
  }
]

Request, responses and operation details

{
  "tags": [
    "Resources"
  ],
  "summary": "Get a single expense entry",
  "description": "Gets the specified expense entry.\n\nExecutable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "The expense entry ID.",
      "required": true,
      "type": "string"
    },
    {
      "name": "user",
      "in": "query",
      "description": "The login ID of the user who owns the entries. The user must have the Web Services Admin role to use this parameter.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "schema": {
        "$ref": "#/definitions/EntryGet"
      }
    }
  },
  "operationId": "get_expense_entries_id",
  "x-purplesuite-classification": "modeled-core"
}

PUT /expense/entries/{id}

Update an expense entry

Updates the specified expense entry. Only the fields provided in the supplied object are updated. Missing fields will not be altered. Executable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.

Authentication

[
  {
    "OAuth2": []
  }
]

Request, responses and operation details

{
  "tags": [
    "Resources"
  ],
  "summary": "Update an expense entry",
  "description": "Updates the specified expense entry. Only the fields provided in the supplied object are updated. Missing fields will not be altered.\n\nExecutable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "The expense entry ID.",
      "required": true,
      "type": "string"
    },
    {
      "name": "content",
      "in": "body",
      "description": "The partial or complete expense entry object to update.",
      "required": true,
      "schema": {
        "$ref": "#/definitions/EntryPut"
      }
    },
    {
      "name": "user",
      "in": "query",
      "description": "The login ID of the user who owns the entries. The user must have the Web Services Admin role to use this parameter.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "schema": {
        "$ref": "#/definitions/Void"
      }
    },
    "400": {
      "description": "Bad Request",
      "schema": {
        "$ref": "#/definitions/Void"
      }
    }
  },
  "operationId": "put_expense_entries_id",
  "x-purplesuite-classification": "modeled-core"
}

DELETE /expense/entries/{id}

Delete an expense entry

DEPRECATED: 06/26/2025 UNSUPPORTED: 06/26/2026 Deletes the specified expense entry. Executable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.

Authentication

[
  {
    "OAuth2": []
  }
]

Request, responses and operation details

{
  "deprecated": true,
  "tags": [
    "Resources"
  ],
  "summary": "Delete an expense entry",
  "description": "DEPRECATED: 06/26/2025 UNSUPPORTED: 06/26/2026 Deletes the specified expense entry.\n\nExecutable core. Requests are narrowed to the published parameters listed here (exact-value filters, no wildcards; `YYYY-MM-DD` date bounds; `limit` 1-100) and to the declared request properties. The `Items` array shape is the served repair of the pinned document's own cursor inconsistency. The PurpleSuite instance key stands in for a Concur OAuth access token on the vendor's `Authorization: Bearer` transport; no token-exchange operation is pinned in this document.",
  "parameters": [
    {
      "name": "id",
      "in": "path",
      "description": "The ID of the expense entry to delete.",
      "required": true,
      "type": "string"
    },
    {
      "name": "user",
      "in": "query",
      "description": "The login ID of the user who owns the entries. The user must have the Web Services Admin role to use this parameter.",
      "required": false,
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "pattern": "^[^*%]*$"
    }
  ],
  "responses": {
    "200": {
      "description": "Success",
      "schema": {
        "$ref": "#/definitions/Void"
      }
    }
  },
  "operationId": "delete_expense_entries_id",
  "x-purplesuite-classification": "modeled-core"
}

Schemas and reusable components

Document metadata and extensions

{
  "x-sap-shortText": "Creates, retrieves, updates, and deletes expense line items",
  "swagger": "2.0",
  "basePath": "/api/purple-suite/{instanceId}/contracts/expense/concur",
  "produces": [
    "application/json",
    "application/xml"
  ],
  "consumes": [
    "application/json",
    "application/xml"
  ],
  "info": {
    "title": "SAP Concur Expense Entries v3.0 — PurpleSuite executable core",
    "description": "Provides access to expense line items within a user's expense reports. Supports creating, retrieving, updating, and deleting expense entries, including mileage, VAT, and attendee data. Suited for ERP integrations and travel management tools that need to read or write detailed expense data within the SAP Concur platform.",
    "version": "3.0",
    "x-purplesuite-contract": {
      "system": "expense",
      "paint": "concur",
      "profileId": "concur-expense-entries-v3",
      "revision": "v3.0; SAP-docs/preview.developer.concur.com @ main, src/api-explorer/v3-0 Swagger 2.0 set",
      "vendorBaseUrl": "https://www.concursolutions.com/api/v3.0",
      "documentScope": "full",
      "runtimeFidelity": "modeled",
      "operations": 5,
      "boundaries": [
        "Swagger 2.0 `basePath` has no variable templating, so the `{instanceId}` in this document's basePath is a literal brace pair. The PurpleSuite reference viewer overrides it with a templated server, so try-it-out resolves a real instance; a strict Swagger 2.0 client reading the raw document must substitute the instance id itself.",
        "`securityDefinitions` is the vendor's OAuth2 client-credentials declaration, verbatim. PurpleSuite accepts the instance key as the bearer token on that same transport; the vendor token endpoint is not pinned in this document and no token-exchange route is mounted.",
        "Concur's report and entry approval workflow (submit, approve, send back, recall) declares no operation in these three documents, so none is modeled. The same is true of Itemizations, Attendees, Allocations, Quick Expenses, Payment Batches, Expense Group Configurations, Receipt Images and the Identity v4 API, which are separate Concur products.",
        "An unspecified `user` means \"the OAuth Consumer\" in the vendor document. There is no OAuth consumer here: on a list operation an unspecified `user` returns every owner in the instance (equivalent to `user=ALL`), and on a write it resolves to the instance's service persona, the first person in the shared roster."
      ]
    }
  },
  "securityDefinitions": {
    "OAuth2": {
      "type": "oauth2",
      "description": "To use this API, you need to get OAuth client credentials (client ID, secret, and geolocation) from SAP Concur, and be authorized to use the relevant scope. Refer to the <a href=\"https://developer.concur.com/api-reference/authentication/getting-started.html\">full authentication information</a> for more information.",
      "tokenUrl": "https://us.api.concursolutions.com/oauth2/v0",
      "flow": "application"
    }
  },
  "security": [
    {
      "OAuth2": []
    }
  ],
  "tags": [
    {
      "name": "Resources",
      "description": ""
    }
  ],
  "definitions": {
    "CreateResponse": {
      "properties": {
        "ID": {
          "type": "string"
        },
        "URI": {
          "type": "string"
        }
      }
    },
    "CustomField": {
      "properties": {
        "Code": {
          "type": "string",
          "description": "For list fields, this is the list item code."
        },
        "ListItemID": {
          "type": "string",
          "description": "For list fields, this is the list item ID."
        },
        "Type": {
          "type": "string",
          "description": "The custom field type. Supported values: Amount, Boolean, ConnectedList, Date, Integer, List, Number, Text"
        },
        "Value": {
          "type": "string",
          "description": "The value in the Org Unit or Custom field. For list fields, this is the name of the list item.  Maximum length: 48 characters"
        }
      }
    },
    "EntryCollection": {
      "properties": {
        "Items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EntryGet"
          }
        },
        "NextPage": {
          "type": "string",
          "description": "The URI of the next page of results, if any."
        }
      },
      "type": "object"
    },
    "EntryGet": {
      "properties": {
        "AllocationType": {
          "type": "string",
          "description": "The type of allocations for the expense. Supported values: P - partial allocation, F - full allocation, N - no allocation."
        },
        "ApprovedAmount": {
          "type": "number",
          "format": "double",
          "description": "The approved amount of the expense entry, in the report currency."
        },
        "CompanyCardTransactionID": {
          "type": "string",
          "description": "The unique identifier for a company card transaction that is associated with this expense. This element is null when there is no company card transaction associated with this expense."
        },
        "Custom1": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom10": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom11": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom12": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom13": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom14": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom15": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom16": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom17": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom18": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom19": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom2": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom20": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom21": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom22": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom23": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom24": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom25": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom26": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom27": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom28": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom29": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom3": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom30": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom31": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom32": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom33": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom34": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom35": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom36": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom37": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom38": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom39": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom4": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom40": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom5": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom6": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom7": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom8": {
          "$ref": "#/definitions/CustomField"
        },
        "Custom9": {
          "$ref": "#/definitions/CustomField"
        },
        "Description": {
          "type": "string",
          "description": "The description of the expense. Maximum length: 64 characters"
        },
        "ElectronicReceiptID": {
          "type": "string",
          "description": "The unique identifier for an eReceipt that is associated with this expense. This element is null when there is no eReceipt associated with this expense."
        },
        "EmployeeBankAccountID": {
          "type": "string",
          "description": "The unique identifier of an employee bank account that is associated with this expense. Typically, this element is used when Expense Pay reimburses the employee for this expense."
        },
        "ExchangeRate": {
          "type": "number",
          "format": "double",
          "description": "The currency conversion rate that converts the transaction amount that is in the transaction currency into the posted amount that is in the report currency. This element is typically not provided. If this element is empty for transactions in a currency different than the user's reimbursement currency, Expense will use the company's configured exchange rates to determine the posted amount for the transaction. If the system is not able to determine the exchange rate, a value of 1.0 will be used."
        },
        "ExpenseTypeCode": {
          "type": "string",
          "description": "The code for the expense type."
        },
        "ExpenseTypeName": {
          "type": "string",
          "description": "The name of the expense type, localized to the user's language."
        },
        "FormID": {
          "type": "string",
          "description": "The ID of the form used by this expense entry."
        },
        "HasAppliedCashAdvance": {
          "type": "boolean",
          "description": "Whether the entry has a cash advance applied to it. Format: true or false"
        },
        "HasAttendees": {
          "type": "boolean",
          "description": "Indicates whether the expense has attendees. Format: true or false"
        },
        "HasComments": {
          "type": "boolean",
          "description": "Whether the expense has comments. Format: true or false"
        },
        "HasExceptions": {
          "type": "boolean",
          "description": "Whether the expense has exceptions. Format: true or false"
        },
        "HasImage": {
          "type": "boolean",
          "description": "Indicates whether there is an entry image attached to the entry. Format: true or false"
        },
        "HasItemizations": {
          "type": "boolean",
          "description": "Indicates whether the expense has itemizations. Use the Format: true or false"
        },
        "HasVAT": {
          "type": "boolean",
          "description": "Indicates whether the entry has VAT data. Format: true or false"
        },
        "ID": {
          "type": "string",
          "description": "The unique identifier of the resource."
        },
        "IsBillable": {
          "type": "boolean",
          "description": "Indicates whether the expense is billable. Format: true or false"
        },
        "IsImageRequired": {
          "type": "boolean",
          "description": "Indicates whether an entry image is required for the entry. Format: true or false"
        },
        "IsPaidByExpensePay": {
          "type": "boolean",
          "description": "Whether the entry is paid using the Expense Pay service. This element has a value if the report has reached the Processing Payment workflow step, because this is when Concur Expense determines whether it will be paid by Expense Pay. Format: true or false"
        },
        "IsPersonal": {
          "type": "boolean",
          "description": "Indicates whether the expense is personal (that is, non-reimbursable). Format: true or false"
        },
        "IsPersonalCardCharge": {
          "type": "boolean",
          "description": "Indicates whether the expense entry was imported from a personal card feed. Format: true or false"
        },
        "Journey": {
          "$ref": "#/definitions/Journey"
        },
        "LastModified": {
          "type": "string",
          "format": "date-time",
          "description": "The UTC date when the entry was last modified."
        },
        "LocationCountry": {
          "type": "string",
          "description": "The 2-letter ISO 3166-1 country code where the expense was incurred."
        },
        "LocationID": {
          "type": "string",
          "description": "The unique identifier for the location where the expense was incurred."
        },
        "LocationName": {
          "type": "string",
          "description": "The location where the expense was incurred, usually the city name."
        },
        "LocationSubdivision": {
          "type": "string",
          "description": "The ISO 3166-2:2007 country subdivision state, province, or other country subdivision where the expense was incurred."
        },
        "OrgUnit1": {
          "$ref": "#/definitions/CustomField"
        },
        "OrgUnit2": {
          "$ref": "#/definitions/CustomField"
        },
        "OrgUnit3": {
          "$ref": "#/definitions/CustomField"
        },
        "OrgUnit4": {
          "$ref": "#/definitions/CustomField"
        },
        "OrgUnit5": {
          "$ref": "#/definitions/CustomField"
        },
        "OrgUnit6": {
          "$ref": "#/definitions/CustomField"
        },
        "PaymentTypeID": {
          "type": "string",
          "description": "The ID of the payment type for the entry. For mileage expenses, use the Cash payment type. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes always use the Cash payment type."
        },
        "PaymentTypeName": {
          "type": "string",
          "description": "The name of the payment type, localized to the user's language."
        },
        "PostedAmount": {
          "type": "number",
          "format": "double",
          "description": "The amount of the expense entry, in the report currency."
        },
        "ReceiptReceived": {
          "type": "boolean",
          "description": "Indicates whether this entry has been reviewed by a processor. Format: true or false"
        },
        "ReportID": {
          "type": "string",
          "description": "The report ID of the report where the entry will be added."
        },
        "ReportOwnerID": {
          "type": "string",
          "description": "The login ID of the report owner."
        },
        "SpendCategoryCode": {
          "type": "string",
          "description": "The ID of the spending category that is specified for this expense entry."
        },
        "SpendCategoryName": {
          "type": "string",
          "description": "The name of the spending category that is specified for this expense entry, localized to the user's language."
        },
        "TaxReceiptType": {
          "type": "string",
          "description": "The receipt type for this entry. Supported values: T - tax receipt, R - regular receipt, N - no receipt"
        },
        "TransactionAmount": {
          "type": "number",
          "format": "double",
          "description": "The amount of the expense entry, in the transaction currency paid to the vendor. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes use a distance instead of a transaction amount."
        },
        "TransactionCurrencyCode": {
          "type": "string",
          "description": "The 3-letter ISO 4217 currency code for the expense entry transaction amount. This is the currency in which the vendor was paid. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because for these two expense codes the currency is always the Report Currency."
        },
        "TransactionDate": {
          "type": "string",
          "format": "date-time",
          "description": "The date when the good or service associated with this expense entry was provided. Format: YYYY-MM-DD"
        },
        "TripID": {
          "type": "string",
          "description": "The unique identifier of a trip in the Itinerary Service that includes a travel booking associated with this expense. This element is null when there is no trip associated with the expense."
        },
        "URI": {
          "type": "string",
          "description": "The URI to the resource."
        },
        "VendorDescription": {
          "type": "string",
          "description": "The name of the vendor for the expense entry. Maximum length: 64 characters"
        },
        "VendorListItemID": {
          "type": "string",
          "description": "The unique identifier for a vendor list item."
        },
        "VendorListItemName": {
          "type": "string",
          "description": "The name of an item from a vendor list."
        }
      }
    },
    "EntryPost": {
      "properties": {
        "Comment": {
          "type": "string",
          "description": "A comment that describes the expense entry. Maximum length: 500 characters"
        },
        "Custom1": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom10": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom11": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom12": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom13": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom14": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom15": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom16": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom17": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom18": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom19": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom2": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom20": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom21": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom22": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom23": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom24": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom25": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom26": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom27": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom28": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom29": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom3": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom30": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom31": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom32": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom33": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom34": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom35": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom36": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom37": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom38": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom39": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom4": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom40": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom5": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom6": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom7": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom8": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom9": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Description": {
          "type": "string",
          "description": "The description of the expense. Maximum length: 64 characters"
        },
        "ExchangeRate": {
          "type": "number",
          "format": "double",
          "description": "The currency conversion rate that converts the transaction amount that is in the transaction currency into the posted amount that is in the report currency. This element is typically not provided. If this element is empty for transactions in a currency different than the user's reimbursement currency, Expense will use the company's configured exchange rates to determine the posted amount for the transaction. If the system is not able to determine the exchange rate, a value of 1.0 will be used."
        },
        "ExpenseTypeCode": {
          "type": "string",
          "description": "The code for the expense type. Use \"GET /expense/expensegroupconfigurations\" to learn the expense type code for expense types that are active for this report's policy."
        },
        "IsBillable": {
          "type": "boolean",
          "description": "Indicates whether the expense is billable. Format: true or false"
        },
        "IsPersonal": {
          "type": "boolean",
          "description": "Indicates whether the expense is personal (that is, non-reimbursable). Format: true or false"
        },
        "Journey": {
          "$ref": "#/definitions/Journey"
        },
        "LocationID": {
          "type": "string",
          "description": "The unique identifier for the location where the expense was incurred. Use the \"GET /common/locations\" function to get information for this location."
        },
        "OrgUnit1": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit2": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit3": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit4": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit5": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit6": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "PaymentTypeID": {
          "type": "string",
          "description": "The ID of the payment type for the entry. For mileage expenses, use the Cash payment type. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes always use the Cash payment type."
        },
        "ReportID": {
          "type": "string",
          "description": "The report ID of the report where the entry will be added."
        },
        "TaxReceiptType": {
          "type": "string",
          "description": "The receipt type for this entry. Supported values: T - tax receipt, R - regular receipt, N - no receipt"
        },
        "TransactionAmount": {
          "type": "number",
          "format": "double",
          "description": "The amount of the expense entry, in the transaction currency paid to the vendor.\tFor expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes use a distance instead of a transaction amount."
        },
        "TransactionCurrencyCode": {
          "type": "string",
          "description": "The 3-letter ISO 4217 currency code for the expense entry transaction amount. This is the currency in which the vendor was paid. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because for these two expense codes the currency is always the Report Currency."
        },
        "TransactionDate": {
          "type": "string",
          "format": "date-time",
          "description": "The date when the good or service associated with this expense entry was provided. Format: YYYY-MM-DD"
        },
        "VendorDescription": {
          "type": "string",
          "description": "The name of the vendor for the expense entry. Maximum length: 64 characters"
        },
        "VendorListItemID": {
          "type": "string",
          "description": "The unique identifier for a vendor list item."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "EntryPut": {
      "properties": {
        "Comment": {
          "type": "string",
          "description": "A comment that describes the expense entry. Maximum length: 500 characters"
        },
        "Custom1": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom10": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom11": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom12": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom13": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom14": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom15": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom16": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom17": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom18": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom19": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom2": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom20": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom21": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom22": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom23": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom24": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom25": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom26": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom27": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom28": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom29": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom3": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom30": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom31": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom32": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom33": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom34": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom35": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom36": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom37": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom38": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom39": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom4": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom40": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom5": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom6": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom7": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom8": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Custom9": {
          "type": "string",
          "description": "The details from the Custom fields. These fields may not have data, depending on the configuration."
        },
        "Description": {
          "type": "string",
          "description": "The description of the expense. Maximum length: 64 characters"
        },
        "ExchangeRate": {
          "type": "number",
          "format": "double",
          "description": "The currency conversion rate that converts the transaction amount that is in the transaction currency into the posted amount that is in the report currency. This element is typically not provided. If this element is empty for transactions in a currency different than the user's reimbursement currency, Expense will use the company's configured exchange rates to determine the posted amount for the transaction. If the system is not able to determine the exchange rate, a value of 1.0 will be used."
        },
        "ExpenseTypeCode": {
          "type": "string",
          "description": "The code for the expense type."
        },
        "IsBillable": {
          "type": "boolean",
          "description": "Indicates whether the expense is billable. Format: true or false"
        },
        "IsPersonal": {
          "type": "boolean",
          "description": "Indicates whether the expense is personal (that is, non-reimbursable). Format: true or false"
        },
        "Journey": {
          "$ref": "#/definitions/Journey"
        },
        "LocationID": {
          "type": "string",
          "description": "The unique identifier for the location where the expense was incurred."
        },
        "OrgUnit1": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit2": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit3": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit4": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit5": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "OrgUnit6": {
          "type": "string",
          "description": "The details from the Org Unit fields. These fields may not have data, depending on the configuration."
        },
        "PaymentTypeID": {
          "type": "string",
          "description": "The ID of the payment type for the entry.  For mileage expenses, use the Cash payment type. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes always use the Cash payment type."
        },
        "ReportID": {
          "type": "string",
          "description": "The report ID of the report where the entry will be added."
        },
        "TaxReceiptType": {
          "type": "string",
          "description": "The receipt type for this entry. Supported values: T - tax receipt, R - regular receipt, N - no receipt"
        },
        "TransactionAmount": {
          "type": "number",
          "format": "double",
          "description": "The amount of the expense entry, in the transaction currency paid to the vendor. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because these two expense codes use a distance instead of a transaction amount."
        },
        "TransactionCurrencyCode": {
          "type": "string",
          "description": "The 3-letter ISO 4217 currency code for the expense entry transaction amount. This is the currency in which the vendor was paid. For expense types with an expense code that uses a transaction amount instead of a distance, this element is required. This element should not be used for expense types with an expense code for Company Car or Personal Car, because for these two expense codes the currency is always the Report Currency."
        },
        "TransactionDate": {
          "type": "string",
          "format": "date-time",
          "description": "The date when the good or service associated with this expense entry was provided. Format: YYYY-MM-DD"
        },
        "VendorDescription": {
          "type": "string",
          "description": "The name of the vendor for the expense entry. Maximum length: 64 characters"
        },
        "VendorListItemID": {
          "type": "string",
          "description": "The unique identifier for a vendor list item."
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "Journey": {
      "properties": {
        "BusinessDistance": {
          "type": "integer",
          "format": "int32",
          "description": "The portion of the journey for business use, in the report owner's unit of measure for distances. This element is required in order to post a personal car mileage expense entry, or to post a company car mileage expense when there is no PersonalDistance value. When using the Odometer elements, the sum of PersonalDistance and BusinessDistance must equal the difference between OdometerEnd and OdometerStart."
        },
        "EndLocation": {
          "type": "string",
          "description": "Indicates where the journey ended. This is also known as the \"To Location\". Maximum length: 100 characters"
        },
        "NumberOfPassengers": {
          "type": "integer",
          "format": "int32",
          "description": "The number of people in the vehicle during the journey. Used with Variable-Rate, Personal or Company Car."
        },
        "OdometerEnd": {
          "type": "integer",
          "format": "int32",
          "description": "The odometer reading at the end of the journey. The value must be greater than the OdometerStart value. This element is used with Variable-Rate and Company Car configuration types."
        },
        "OdometerStart": {
          "type": "integer",
          "format": "int32",
          "description": "The odometer reading at the start of the journey. This element is used with Variable-Rate and Company Car configuration types."
        },
        "PersonalDistance": {
          "type": "integer",
          "format": "int32",
          "description": "The portion of the journey for personal use. This element is required in order to post a company car mileage expense when there is no BusinessDistance value. Format: positive integer. When using the Odometer elements, the sum of PersonalDistance and BusinessDistance must equal the difference between OdometerEnd and OdometerStart. Used with Company Car configuration types."
        },
        "StartLocation": {
          "type": "string",
          "description": "Indicates where the journey started. This is also known as the \"From Location\". Maximum length: 100 characters"
        },
        "UnitOfMeasure": {
          "type": "string",
          "description": "The unit of measure for distance and odometer values. Supported values: M - miles, K - kilometers"
        },
        "VehicleID": {
          "type": "string",
          "description": "The unique identifier for the vehicle used for this journey. This element is used only with Company Car configuration types. Use the GET Vehicles function to learn the Vehicle ID."
        }
      }
    },
    "Void": {
      "properties": {}
    }
  }
}
Interactive API explorer (requires JavaScript)