Catalog/hr-pto-accrual

Calculators

PTO accrual balance calculator API

Compute accrued PTO as (annualPtoDays x hoursPerDay / payPeriodsPerYear) x periodsElapsed + carryover, optionally capped, then balance = accrued - used, in hours and days. Deterministic leave-accrual math. Answers 'how much PTO have I accrued','my vacation balance in days','PTO after 13 pay periods'.

Price$0.01per request
MethodPOST
Route/v1/calc/hr-pto-accrual
StatusLive
MIME typeapplication/json
Rate limit120/minute
CacheNo cache
hrptoleavevacationaccrualcalcpayrollbenefits
API URLhttps://x402.hexl.dev/v1/calc/hr-pto-accrual
Integration docs
Example request
{
  "annualPtoDays": 15,
  "periodsElapsed": 13,
  "carryoverHours": 16,
  "usedHours": 24
}
Example response
{
  "annualPtoDays": 15,
  "hoursPerDay": 8,
  "annualPtoHours": 120,
  "accrualPerPeriod": 4.6154,
  "periodsElapsed": 13,
  "accruedHours": 76,
  "carryoverHours": 16,
  "usedHours": 24,
  "balanceHours": 52,
  "balanceDays": 6.5
}
Input schema
{
  "type": "object",
  "required": [
    "annualPtoDays",
    "periodsElapsed"
  ],
  "properties": {
    "annualPtoDays": {
      "type": "number",
      "description": "Annual PTO entitlement in days",
      "examples": [
        15
      ]
    },
    "hoursPerDay": {
      "type": "number",
      "default": 8,
      "examples": [
        8
      ]
    },
    "payPeriodsPerYear": {
      "type": "number",
      "default": 26,
      "examples": [
        26
      ]
    },
    "periodsElapsed": {
      "type": "number",
      "description": "Pay periods accrued so far",
      "examples": [
        13
      ]
    },
    "carryoverHours": {
      "type": "number",
      "default": 0,
      "examples": [
        16
      ]
    },
    "usedHours": {
      "type": "number",
      "default": 0,
      "examples": [
        24
      ]
    },
    "maxAccrualHours": {
      "type": "number",
      "description": "Optional accrual cap in hours",
      "examples": [
        200
      ]
    }
  }
}
Output schema
{
  "type": "object",
  "additionalProperties": true
}