Bizday

Federal office and Reserve Bank business days

Add, count, check, and roll business days for a Monday–Friday week. The default calendar is the OPM federal-office schedule. us-fed-banking is the Federal Reserve Banks schedule: a Saturday holiday does not close Friday. Both are computed on this server. No account. No cookies.

Count business days

1 business day from July 3, 2026 through July 6, 2026 on federal offices.

  • July 3, 2026: federal offices closed, banks open (Independence Day observed).
  • Saturdays and Sundays are not business days.

Calendar

Both ends count when they are business days, the same shape as Excel NETWORKDAYS. Changing a date or the calendar asks this site’s API. Sources: OPM Federal Holidays and Federal Reserve K.8. Not legal, payroll, or financial advice.

Try it

July 4, 2026 is a Saturday. For most federal employees the holiday is Friday, July 3. The next business day after Thursday, July 2 is Monday, July 6.

Set BIZDAY to this site's origin, with no path, then run either command.

BIZDAY=http://209.38.202.154
curl -s "$BIZDAY/v1/business-days/add?start=2026-07-02&days=1"
{
  "calendar": "us-federal-opm",
  "start": "2026-07-02",
  "days": 1,
  "date": "2026-07-06",
  "business_day": true
}

Samples on this page leave out sources and disclaimer. The live JSON includes both.

Dates are civil dates (YYYY-MM-DD), not timestamps. There is no time zone to get wrong.

A due date that lands on a closure stays put only when that date is already a business day. On the default calendar, Friday, July 3, 2026 is Independence Day observed, so it rolls to Monday, July 6. Thursday, July 2 does not roll. add cannot express that: days=1 always leaves the start date.

curl -s "$BIZDAY/v1/business-days/roll?date=2026-07-03&direction=next"
{
  "calendar": "us-federal-opm",
  "date": "2026-07-03",
  "direction": "next",
  "rolled": true,
  "result": "2026-07-06",
  "result_weekday": "Monday",
  "reason": "observed federal holiday"
}

July 3, 2026: offices closed, banks open

Independence Day is Saturday, July 4, 2026. Federal offices close Friday, July 3. Federal Reserve Banks stay open that Friday. The Board of Governors in Washington closes with the offices, not with the Banks. Omit calendar and you still get us-federal-opm.

curl -s "$BIZDAY/v1/business-days/check?date=2026-07-03&calendar=us-fed-banking"
{
  "calendar": "us-fed-banking",
  "date": "2026-07-03",
  "weekday": "Friday",
  "business_day": true
}

One business day after Thursday, July 2 is Friday, July 3 on the Bank calendar, and Monday, July 6 on the office calendar. Sunday holidays close the following Monday on both. GET /v1/calendars lists the ids, the source URL, and the Saturday rule.

Veterans Day 2026 is a Wednesday, November 11, so federal offices and Reserve Banks both close.

Endpoints

GET /v1 lists them as JSON. Parameters shown in the table are required. calendar is optional on every calculation. Unknown parameters are rejected. The default calendar is us-federal-opm.

Agents should read /llms.txt first. It names both calendars and points at OpenAPI 3.1 (/openapi.json). The server URL inside that file is /, so it describes the host that served it. Examples in the file are real responses, including sources.

The same six calculations are MCP tools at POST /mcp (streamable HTTP, no session). Protocol versions are 2026-07-28, 2025-11-25, 2025-06-18, and 2025-03-26. Tool names match the operation ids is_business_day, add_business_days, count_business_days, roll_date, list_holidays, and list_calendars. GET /.well-known/mcp.json is the manifest. GET /.well-known/mcp/server-card.json is the server card: the same tools, no auth. The API process builds those files, /openapi.json, and /llms.txt.

RequestWhat you get
/v1/business-days/check?date=2026-07-03 Whether that date is a business day, why, and the previous and next business days.
/v1/business-days/add?start=2026-07-02&days=1 The date days business days away. The start date is day 0, matching Excel WORKDAY. days may be negative or zero.
/v1/business-days/diff?start=2026-11-25&end=2026-11-27 How many business days are in the inclusive span, matching Excel NETWORKDAYS. Negative when end is earlier.
/v1/business-days/roll?date=2026-07-03&direction=next That date if it is a business day. Otherwise the nearest business day. direction is next or previous. This is not Excel WORKDAY.
/v1/holidays?year=2026 The eleven nationwide holidays for that legal year, with the actual date and the observed day off. On us-fed-banking, a Saturday holiday has observed: null because Friday stays open.
/v1/calendars Both calendars: id, name, source URL, Saturday and Sunday rules, coverage, last verified, and changelog.
/v1/health Liveness. Not rate limited.

Holidays in the count are already skipped. Do not subtract them a second time.

What “business day” means here

A business day is Monday through Friday, and not an observed nationwide federal holiday.

Supported dates: 2021-01-01 through 2100-12-31. Juneteenth has been a federal holiday only since 2021, so earlier years are rejected rather than guessed.

Checked against OPM’s Federal Holidays tables for 2021–2030 on 2026-10-17. Years after 2030 use the same rules. They are not a copy of a later OPM table.

What it does not include

Not legal, payroll, or financial advice. For pay and leave, use the OPM schedule and your agency’s rules. roll is only the calendar step. It does not decide whether a filing is timely. USCIS Policy Alert PA-2026-15 (effective October 23, 2026) moves some paper deadlines that are written as a number of days to the next business day, and does not move every date that falls on a weekend.

Limits

Preview traffic is free: 60 requests per minute per IP on the calculation endpoints and on POST /mcp tool calls. /v1, /v1/health, /openapi.json, /llms.txt, /.well-known/mcp.json, /.well-known/mcp/server-card.json, and MCP initialize, ping, server/discover, and tools/list are exempt. Over the limit you get 429 and a Retry-After header. There is no API key yet.

Calendar responses are JSON. The calculation routes are GET. POST /mcp is JSON-RPC. Responses send Access-Control-Allow-Origin: *. A browser Origin is accepted only when its host is this server. Successful calendar GET responses may be cached for five minutes. MCP responses are not cached.

Pricing

Not for sale yet. The planned offer is a one-time pack of 5,000 calls for $9, paid through Stripe, with the key shown on the return page. No monthly subscription. No card data would be stored on this server.

A Stripe restricted key is installed, in test mode only. Checkout stays off until a public contact address is printed on the privacy page.

Sources