openapi: 3.1.0 info: title: Workday Financials Workday Expenses API description: >- API for expense report submission, approval workflows, receipt management, and expense policy enforcement within Workday Expense Management. version: v38.2 contact: name: Workday Support url: https://www.workday.com/en-us/company/latest/support.html termsOfService: https://www.workday.com/en-us/legal.html externalDocs: description: Workday Expenses API Documentation url: https://community.workday.com/sites/default/files/file-hosting/productionapi/index.html servers: - url: https://{tenant}.workday.com/api/expenses/v38.2 description: Workday Expenses Production variables: tenant: description: Workday tenant identifier default: your-tenant tags: - name: Expense Items description: Manage individual expense line items - name: Expense Policies description: Access expense policy configurations - name: Expense Reports description: Create and manage expense reports - name: Receipts description: Upload and manage expense receipts security: - bearerAuth: [] paths: /expenseReports: get: operationId: listExpenseReports summary: Workday Financials List expense reports description: >- Retrieve a collection of expense reports with optional filtering. tags: - Expense Reports parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - name: status in: query description: Filter expense reports by status schema: type: string enum: - Draft - Submitted - Approved - Paid - Returned - Canceled - name: worker in: query description: Filter by worker ID schema: type: string responses: '200': description: Expense reports retrieved successfully content: application/json: schema: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/ExpenseReport' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createExpenseReport summary: Workday Financials Create an expense report description: >- Submit a new expense report for approval processing. tags: - Expense Reports requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExpenseReportCreate' responses: '201': description: Expense report created successfully content: application/json: schema: $ref: '#/components/schemas/ExpenseReport' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /expenseReports/{id}: get: operationId: getExpenseReport summary: Workday Financials Get an expense report description: >- Retrieve details of a specific expense report. tags: - Expense Reports parameters: - $ref: '#/components/parameters/resourceId' responses: '200': description: Expense report details content: application/json: schema: $ref: '#/components/schemas/ExpenseReport' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateExpenseReport summary: Workday Financials Update an expense report description: >- Update a draft expense report. tags: - Expense Reports parameters: - $ref: '#/components/parameters/resourceId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExpenseReportUpdate' responses: '200': description: Expense report updated successfully content: application/json: schema: $ref: '#/components/schemas/ExpenseReport' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /expenseReports/{id}/submit: post: operationId: submitExpenseReport summary: Workday Financials Submit an expense report for approval description: >- Submit a draft expense report into the approval workflow. tags: - Expense Reports parameters: - $ref: '#/components/parameters/resourceId' responses: '200': description: Expense report submitted successfully '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /expenseReports/{id}/expenseItems: get: operationId: listExpenseItems summary: Workday Financials List expense items for a report description: >- Retrieve expense line items for a specific expense report. tags: - Expense Items parameters: - $ref: '#/components/parameters/resourceId' responses: '200': description: Expense items retrieved successfully content: application/json: schema: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/ExpenseItem' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' post: operationId: addExpenseItem summary: Workday Financials Add an expense item to a report description: >- Add a new expense line item to an existing expense report. tags: - Expense Items parameters: - $ref: '#/components/parameters/resourceId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ExpenseItemCreate' responses: '201': description: Expense item added successfully content: application/json: schema: $ref: '#/components/schemas/ExpenseItem' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /receipts: post: operationId: uploadReceipt summary: Workday Financials Upload a receipt description: >- Upload a receipt image for attachment to an expense item. tags: - Receipts requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: Receipt image file description: type: string description: Description of the receipt responses: '201': description: Receipt uploaded successfully content: application/json: schema: $ref: '#/components/schemas/Receipt' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /receipts/{id}: get: operationId: getReceipt summary: Workday Financials Get a receipt description: >- Retrieve details of a specific receipt. tags: - Receipts parameters: - $ref: '#/components/parameters/resourceId' responses: '200': description: Receipt details content: application/json: schema: $ref: '#/components/schemas/Receipt' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteReceipt summary: Workday Financials Delete a receipt description: >- Delete a receipt that is not attached to a submitted expense report. tags: - Receipts parameters: - $ref: '#/components/parameters/resourceId' responses: '204': description: Receipt deleted successfully '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /expensePolicies: get: operationId: listExpensePolicies summary: Workday Financials List expense policies description: >- Retrieve a collection of expense policies. tags: - Expense Policies parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' responses: '200': description: Expense policies retrieved successfully content: application/json: schema: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/ExpensePolicy' '401': $ref: '#/components/responses/Unauthorized' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: OAuth 2.0 bearer token obtained from Workday authentication parameters: resourceId: name: id in: path required: true description: Unique identifier of the resource (WID) schema: type: string limit: name: limit in: query description: Maximum number of results to return schema: type: integer default: 20 maximum: 100 offset: name: offset in: query description: Number of results to skip for pagination schema: type: integer default: 0 responses: Unauthorized: description: Authentication credentials are missing or invalid NotFound: description: The requested resource was not found BadRequest: description: The request was malformed or contained invalid data schemas: ExpenseReport: type: object properties: id: type: string description: Workday ID (WID) for the expense report reportNumber: type: string description: System-generated report number memo: type: string description: Expense report memo or description worker: $ref: '#/components/schemas/WorkerRef' expenseDate: type: string format: date description: Primary expense date totalAmount: type: number format: double description: Total expense amount currency: $ref: '#/components/schemas/CurrencyRef' status: type: string enum: - Draft - Submitted - Approved - Paid - Returned - Canceled description: Current status of the expense report company: $ref: '#/components/schemas/CompanyRef' createdOn: type: string format: date-time description: When the report was created ExpenseReportCreate: type: object required: - memo - expenseDate - company properties: memo: type: string description: Expense report memo or description expenseDate: type: string format: date description: Primary expense date company: $ref: '#/components/schemas/CompanyRef' currency: $ref: '#/components/schemas/CurrencyRef' ExpenseReportUpdate: type: object properties: memo: type: string description: Updated memo or description expenseDate: type: string format: date description: Updated expense date ExpenseItem: type: object properties: id: type: string description: Workday ID (WID) for the expense item expenseItemType: type: string description: Type of expense (e.g., Airfare, Hotel, Meals) amount: type: number format: double description: Expense amount currency: $ref: '#/components/schemas/CurrencyRef' date: type: string format: date description: Date the expense was incurred memo: type: string description: Description of the expense receipt: $ref: '#/components/schemas/ReceiptRef' costCenter: $ref: '#/components/schemas/CostCenterRef' ExpenseItemCreate: type: object required: - expenseItemType - amount - date properties: expenseItemType: type: string description: Type of expense amount: type: number format: double description: Expense amount currency: $ref: '#/components/schemas/CurrencyRef' date: type: string format: date description: Date the expense was incurred memo: type: string description: Description of the expense receipt: $ref: '#/components/schemas/ReceiptRef' Receipt: type: object properties: id: type: string description: Workday ID (WID) for the receipt fileName: type: string description: Name of the uploaded receipt file contentType: type: string description: MIME type of the receipt file uploadedOn: type: string format: date-time description: When the receipt was uploaded description: type: string description: Description of the receipt ExpensePolicy: type: object properties: id: type: string description: Workday ID (WID) for the expense policy name: type: string description: Expense policy name description: type: string description: Policy description active: type: boolean description: Whether the policy is currently active maxAmount: type: number format: double description: Maximum allowable amount per expense requiresReceipt: type: boolean description: Whether receipts are required WorkerRef: type: object properties: id: type: string description: Workday ID of the worker descriptor: type: string description: Display name of the worker CompanyRef: type: object properties: id: type: string description: Workday ID of the company descriptor: type: string description: Display name of the company CurrencyRef: type: object properties: id: type: string description: Workday ID of the currency descriptor: type: string description: Currency code (e.g., USD, EUR) CostCenterRef: type: object properties: id: type: string description: Workday ID of the cost center descriptor: type: string description: Display name of the cost center ReceiptRef: type: object properties: id: type: string description: Workday ID of the receipt descriptor: type: string description: Display name of the receipt