Invoice email daily limit returns 429 instead of 500 from 2027-01-14
- Provider
- Xero
- Endpoint
POST /api.xro/2.0/Invoices/{InvoiceID}/Email- Effective
- 2027-01-14
- Severity
- medium
- Change
- status-code
- Status
- verified
What changed
From 2027-01-14, POST Invoices/{InvoiceID}/Email returns 429 Too Many Requests instead of a generic 500 when the organisation reaches its daily invoice-email limit. The 429 has no Retry-After header. Code that treats 500 as a retryable server error, or retries a 429 at once with a short backoff, will mishandle the limit.
What to do
Handle a 429 from the invoice Email endpoint separately from the per-minute rate limit. It is a daily limit with no Retry-After header, so don't retry immediately. Queue the send for after the daily reset, or tell the user sending was delayed. Stop relying on a 500 to detect this case.
Sources
- Provider notice (2026-10-15)
- https://raw.githubusercontent.com/XeroAPI/Xero-OpenAPI/master/xero_accounting.yaml
Check your code
npx shapi-cli scan .shapi scan lists the call sites this change affects; shapi fix repairs them test-first when the advisory has an automatic fix. All advisories · Markdown · OSV · JSON