Supplier invoice API does not detect duplicates, leading to double payments in accounts payable

We’re processing supplier invoices via the Workday REST API and discovered the duplicate detection isn’t working. Multiple invoices with identical invoice numbers from the same supplier are being created, causing duplicate payments.

API call that creates duplicates:


POST /supplierInvoices
{
  "supplierId": "SUP-1001",
  "invoiceNumber": "INV-2025-0603",
  "invoiceDate": "2025-06-01",
  "amount": 5000.00
}

When we submit this request multiple times (due to retry logic), Workday creates separate invoice records instead of rejecting duplicates. The UI prevents duplicate invoice numbers for the same supplier, but the API allows them. Is duplicate detection disabled for API submissions? Do we need to implement client-side checking before posting invoices?

Check your tenant’s supplier invoice configuration. Under Setup > Accounts Payable > Invoice Processing, there’s a setting for “API Duplicate Detection” that controls whether the API enforces business rules for duplicates. It might be disabled in your environment. Also verify that the invoiceNumber field is mapped correctly - if it’s going to a different field than what the UI uses for duplicate checking, the validation won’t work.

I ran into this same issue last year. The problem is that the API’s duplicate detection logic is different from the UI’s. The UI checks supplier + invoice number combination, but the API requires you to explicitly enable duplicate checking by setting a flag in the request body. Try adding “checkForDuplicates”: true to your payload. Without this flag, the API assumes you’ve already validated uniqueness client-side.

The API duplicate detection relies on idempotency keys, which aren’t in your request. Add a unique idempotency key header to each submission: X-Idempotency-Key: {unique-value}. When you retry the same request with the same idempotency key, Workday returns the original response instead of creating a duplicate. This is the recommended approach for handling retries and preventing duplicate submissions through the API.

Added X-Idempotency-Key header to our requests but still seeing duplicates when invoices are submitted from different systems or with different idempotency keys. The idempotency approach only prevents duplicate submissions of the exact same request, not duplicate invoice numbers from different sources. We need business-level duplicate detection based on supplier + invoice number, not just request-level deduplication. Is there a setting to enable this?