# Workday — Accounting API: gotchas

> Canonical URL: https://developers.apideck.com/apis/accounting/workday/gotchas

## GET /accounting/tax-rates

Workday returns transaction tax codes without rate values: `effective_tax_rate` and `total_tax_rate` are not populated, and each entry in `components` carries only the tax rate's `id` and `name`, without a `rate`. Reference the tax by `code`, or by a component `id`.

## GET /accounting/bills

Workday bills are backed by the SOAP `Get_Supplier_Invoices` operation, which does not
surface a last-modified timestamp through the unified API:

- `updated_at` and `created_at` are not populated — they return empty for Workday bills.
- `filter[updated_since]` is not supported — Workday exposes no last-modified filter for
  supplier invoices, so passing `updated_since` returns an `UnsupportedFiltersError`.
- Sorting is not supported: `sort[by]=updated_at` (or any `sort`) returns
  `UnsupportedSortFieldError`.

Date narrowing is supported via `filter[billed_since]` (invoice document date on or after)
and `filter[due_since]` (invoice due date on or after).

## POST /accounting/invoices

It is required to provide tracking_categories.id in the line items, which corresponds to the worktag/cost_center_id in Workday. It is required to provide the item.id in the line items.

## PATCH /accounting/invoices/{id}

It is required to provide tracking_categories.id in the line items, which corresponds to the worktag/cost_center_id in Workday. It is required to provide the item.id in the line items. Workday only supports `sales_item` and `service` types for line items and this is required.

## GET /accounting/invoice-items

It is required to provide `transaction_type` filter in the request parameters. If `transaction_type` is `purchase`, purchase-items will be returned. If `transaction_type` is `sale`, sales-items will be returned.

## POST /accounting/invoice-items

It is required to provide `sold` and `purchased` fields in the request body. If `sold` is true, sales-item will be created. If `purchased` is true, purchase-item will be created.

## GET /accounting/invoice-items/{id}

It is required to provide `transaction_type` filter in the request parameters. If `transaction_type` is `purchase`, purchase-item will be returned. If `transaction_type` is `sale`, sales-item will be returned.

## PATCH /accounting/invoice-items/{id}

It is required to provide `sold` and `purchased` fields in the request body. If `sold` is true, sales-item will be created. If `purchased` is true, purchase-item will be created.

## GET /accounting/bill-credit-notes

`total_amount` reflects the sum of the credit note's line items. Workday's header-level control total is optional and frequently left unset, so the header value is not relied on; when it is absent the connector reports the line-item total instead.

Only `filter[supplier_id]` and `filter[subsidiary_id]` narrow the list server-side. Other bill-credit-note filters are not offered because Workday's supplier invoice adjustment search has no equivalent server-side criterion — an unsupported filter is rejected rather than silently ignored. The `supplier_id` and `subsidiary_id` values must reference an existing supplier/company; an unknown id is rejected as an invalid reference rather than returning an empty list.

`status` is `authorised` once the credit note is approved, `draft` while unapproved, and `voided` when cancelled.

## POST /accounting/bill-credit-notes

A bill credit note is always issued as a supplier credit (it decreases the amount owed to the supplier). Send positive amounts; the credit direction is fixed and is not derived from the sign of the amount.

`date_issued` is stored as a calendar date — any time component is dropped. `line_items[].total_amount` is the line's extended amount (`unit_price × quantity`).

Create, update and delete require the connection's Workday integration user to be granted access to supplier invoice adjustments. Without that access Workday rejects the write as unauthorized even though read access to the same records succeeds.

## POST /accounting/suppliers

In Workday, the supplier_category, display_name, addresses, emails, company_id, currency, terms, and payment_method fields are required to create a supplier. display_name and company_id should be same.

## POST /accounting/journal-entries

Status should be set to "draft" or "posted". Default status is "draft".
Only Journal Entries with `draft` status can be updated.
It is required to provide Cost_Center_Reference_ID as worktag in the line items, otherwise the status will automatically be set to "draft".

## PATCH /accounting/journal-entries/{id}

Status should be set to "draft" or "posted". Default status is "draft".
Only Journal Entries with `draft` status can be updated.

## GET /accounting/purchase-orders

When using the `supplier_id` filter, the `updated_since` filter should also be included.

## POST /accounting/purchase-orders

It is required to provide supplier.id, issued_date, company_id. Required fields for line items: tracking_categories.id (maps to Workday worktag/cost_center_id), description, category_id, budget, total_amount and type (must be either `sales_item` or `service`). For `sales_item` type, it is required to provide quantity, unit_price and unit_of_measure.
To create a purchase order with a status `draft`, you need to provide the `status` field with a value `draft`. Default status is `open` (approved).

## PATCH /accounting/purchase-orders/{id}

It is required to provide supplier.id, issued_date, company_id. Required fields for line items: tracking_categories.id (maps to Workday worktag/cost_center_id), description, category_id, budget, total_amount and type (must be either `sales_item` or `service`). For `sales_item` type, it is required to provide quantity, unit_price and unit_of_measure.
Note: Only purchase orders with status `draft` can be updated.

## GET /accounting/departments

Departments resource is not supported in Workday.

## GET /accounting/categories

It is required to pass the filter[type] parameter to the request. For supplier categories, use the `supplier` value. For resource/spend categories, use the `expense` value. For revenue categories, use the `revenue` value.
## GET /accounting/categories/{id}

It is required to pass the filter[type] parameter to the request. For supplier categories, use the `supplier` value. For resource/spend categories, use the `expense` value. For revenue categories, use the `revenue` value.

[API reference](https://developers.apideck.com/apis/accounting/reference.md) · [Coverage matrix](https://developers.apideck.com/apis/accounting/coverage)
