Date math, minus the surprises

Every date calculation a calendar can break

Settlement dates, invoice terms, SLA deadlines, pay runs. The arithmetic is trivial; the calendar is not. Dierum knows the holidays, weekends, and market closures of 250+ countries and regions, so your code doesn't have to.

Get a free keyRead the docs

The free tier is 100 requests a day. No card.

August 2026 · US
Mo
Tu
We
Th
Fr
Sa
Su
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
holidayweekendtoday

Where naive date math goes wrong

You computeRealityOff by
T+2 from Thu Mar 25, 2027 → MonFri Mar 26 is Good Friday. NYSE closed; most US offices open.1 day
"Due Feb 14" from net-30 termsFeb 14, 2027 is a Sunday, and Feb 15 is Presidents' Day.2 days
Payday = last weekday of DecemberDec 31, 2027 is New Year's Day, observed. Payroll runs the 30th.1 day
5 business days, Riyadh officeSaudi Arabia's weekend is Friday and Saturday. Sunday is a workday.2 days
Dec 27 is a normal Monday in LondonChristmas fell on Saturday. The UK observes Mon 27 and Tue 28 as substitutes.2 days

All five are real cases from the 2027 calendar. Each one is a support ticket, a late-payment dispute, or a failed reconciliation waiting to happen.

The API

/v1/add · /v1/count

Business-day arithmetic in either direction, per region. The primitive everything else is built on.

/v1/due-date

Invoice date plus terms (net-30, net-45 business, end-of-month) rolled to a real working day.

/v1/paydays

A year of pay dates from a rule: last business day, the 15th, semi-monthly. Rolled early, never late.

/v1/common-days

Days that are working days in every region you name. Settlement pairs, support coverage, shipping.

/v1/bridge-days

Where one day of leave buys four or five off. Ranked by efficiency, per country and year.

/v1/batch

Up to a hundred operations in one request. Invoice runs and payroll batches without the round trips.

/v1/holidays + .ics

The raw calendars, as JSON or as a feed your calendar app subscribes to. The feed is free.

/v1/check · /v1/year

Classify one date, or get a year's totals by month for capacity planning.

One call, in your language

curl "https://dierum.io/v1/due-date?region=US&invoice_date=2027-01-15&terms=net30" \
  -H "X-Api-Key: $KEY"

{
  "invoice_date": "2027-01-15",
  "terms":        "net30",
  "nominal_due":  "2027-02-14",   /* a Sunday */
  "due_date":     "2027-02-16",   /* past Presidents' Day */
  "rolled":       true
}

The docs carry the same example in Python, JavaScript, and C#, along with complete recipes for invoicing, SLA tracking, and payroll calendars.

Built for agents too

AI agents integrate Dierum without a human in the loop: a machine-readable OpenAPI spec, a compact llms.txt, one auth header, stable error codes, and self-serve keys. If your agent can read this page, it can wire itself up: signup is one POST, and every calculation is one GET. Date math is exactly the kind of thing an agent should never improvise.

What you're standing on

404,784
holiday records
1,801
regions & markets
2020-2035
coverage
44
fact-checked tests

Holiday data is sourced from open, MIT-licensed calendar projects, checked against independent references, and organized into one queryable dataset with curated weekend rules and market calendars layered on top. Sources and dataset version are public at /health. Requests outside the covered range return an error, not a guess. We would rather refuse than be quietly wrong.