Dayforce icon

Dayforce Data API: Pay Runs, Time Away & Wallet

Dayforce · Business

Dayforce is the employee self-service companion to the Dayforce HCM suite from Dayforce (the Minneapolis- and Toronto-based company formerly known as Ceridian). After a worker signs in with their employer's Dayforce account, the home screen opens onto everyday pay and time tasks: viewing current and archived pay statements, checking time-away balances and upcoming leave, browsing assigned shifts, clocking in and out, submitting time-away requests, offering or accepting shift trades, completing onboarding to-dos, reviewing benefit elections, setting up or changing direct deposit, and — where the employer has turned it on — drawing earned wages through Dayforce Wallet On Demand. Published for the United States, it serves the hourly and salaried employees of companies that run payroll, time, scheduling and benefits on Dayforce — workers who want pay, schedule and leave on their phone rather than at a shared kiosk — and it fills the same employee-facing role as the self-service apps of rival HCM providers such as ADP, Workday and Paylocity.

Pay-run statements pair lastPayAmount with changeFromPreviousNetPay for the period bounded by payPeriodStartDate and payPeriodEndDate, then expand into a header keyed by payRunHeadersId — grossPay, netPay, disbursedNetPay, payDate, checkNumber, legalEntityName — and line items whose shortName, amount, units, rate and amountYTD rebuild the stub. Time-away balances sit beside that payroll: each plan's remainingBalance, accruedBalance, pendingBalance and grantBalance for a unit, plus the next approved leave (tafwId, payAdjCodeName, requestedAmount). Assigned shifts arrive as employeeShiftByTimePeriod rows with timeStart, timeEnd, deptJobName and orgUnitName; clock punches record time and a type drawn from clockEntryName. Direct-deposit setup returns payGroupCountryCode, isIBAN, financialInstitutionList and maxNumAccounts. Where Wallet On Demand is on, eligibility flags isEligibleForWallet and isEligibleForODP sit next to available-pay netPay in a currencyCode, gated by hasRequestedSuccessfullyToday.

Payroll and ERP bots join each employeeId to netPay and payDate to reconcile the last run before the next disbursement. Leave planners read remainingBalance and upcoming tafwId rows to forecast coverage. Earned-wage products check isEligibleForWallet then pull available-pay netPay so a load does not exceed the period. Clock-compliance tools store each punch's time and clockEntryName against the shift's timeStart/timeEnd. openData Studio turns this per-worker pay, leave, schedule, clock and wallet record into callable open data for those integrations.

Screenshots

  • Dayforce screenshot 1
  • Dayforce screenshot 2
  • Dayforce screenshot 3
  • Dayforce screenshot 4
  • Dayforce screenshot 5
  • Dayforce screenshot 6
  • Dayforce screenshot 7
  • Dayforce screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • OAuth2 token issue (authorization code)

    POST /v1/workforce/auth/token opendata

    Exchanges the OAuth2 authorization code (in-app oauth callback) for the Bearer tokens that every later workforce, schedule and wallet call attaches.

    Auth: OAuth2 authorization_code grant at the tenant authenticationUrl. Redirect URI is an in-app oauth callback. Issues access_token, refresh_token and id_token.

    • access_token
    • refresh_token
    • id_token
    • token_type
    • grant_type
    POST /v1/workforce/auth/token HTTP/1.1
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=app://oauth-callback
    {
      "access_token": "eyJhbGciOiJSUzI1NiIs...",
      "token_type": "Bearer",
      "expires_in": 3600,
      "refresh_token": "def50200ab...",
      "id_token": "eyJhbGciOiJSUzI1NiIs..."
    }
  • Tenant mobile site config

    POST /v1/workforce/tenant/site-config osint

    Resolves the signed-in tenant: namespace, server version, and the authentication, workforce, schedule (mobileApiUrl) and identity (dfidRootUrl) roots the rest of the session uses.

    Auth: Unauthenticated bootstrap, or the just-issued Bearer access_token. Resolves the tenant namespace before the rest of the session.

    • namespaceName
    • serverVersion
    • applicationRootUrl
    • authenticationUrl
    • mobileWebServiceUrl
    • mobileSvcUrl
    • mobileApiUrl
    • dfidRootUrl
    • gatewayRootUrl
    POST /v1/workforce/tenant/site-config HTTP/1.1
    Content-Type: application/json
    
    {"namespaceName":"acme"}
    {
      "namespaceName": "acme",
      "serverVersion": "64.1.0",
      "applicationRootUrl": "/app",
      "authenticationUrl": "/auth",
      "mobileWebServiceUrl": "/mobile-web/",
      "mobileSvcUrl": "/mobile-svc/",
      "mobileApiUrl": "/mobile-api",
      "dfidRootUrl": "/identity",
      "gatewayRootUrl": "/gateway"
    }
  • Current pay-run earnings summary

    POST /v1/workforce/pay-runs/earnings opendata

    Returns the signed-in worker's latest pay-run snapshot — last net, period dates, hours total and the change from the previous net — the numbers on the earnings home card.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • payRunHeadersId
    • payPeriodStartDate
    • payPeriodEndDate
    • lastPayAmount
    • currencySymbol
    • hoursGroupTotalDisplay
    • changeFromPreviousNetPay
    POST /v1/workforce/pay-runs/earnings HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "payRunHeadersId": 88421,
      "payPeriodStartDate": "2026-09-14",
      "payPeriodEndDate": "2026-09-27",
      "lastPayAmount": 1842.55,
      "currencySymbol": "$",
      "hoursGroupTotalDisplay": "80.00",
      "changeFromPreviousNetPay": 36.2
    }
  • Employee pay-run statement detail

    POST /v1/workforce/pay-runs/statement opendata

    Returns the full pay stub for a run: header (pay date, check number, gross/net, legal entity) plus earnings, deductions and year-to-date line items that rebuild the statement screen.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • showDayforceWalletBanner
    • isPDFStatementAvailable
    • payRunHeaders
    • payRunResults
    • id
    • employeeId
    • payDate
    • checkNumber
    • grossPay
    • netPay
    • disbursedNetPay
    • legalEntityName
    • isPayrollResult
    • isArchivedPayRun
    • isConnectedPay
    • earningsYTD
    • totalDeductions
    • preTaxDeductions
    • postTaxDeductions
    • grossHours
    • periodStart
    • periodEnd
    • statementItems
    • shortName
    • amount
    • units
    • rate
    • amountYTD
    POST /v1/workforce/pay-runs/statement HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {"payRunHeadersId":88421}
    {
      "showDayforceWalletBanner": true,
      "isPDFStatementAvailable": true,
      "payRunHeaders": [
        {
          "id": 88421,
          "employeeId": 102334,
          "payDate": "2026-10-02",
          "payDateDisplay": "Oct 2, 2026",
          "checkNumber": "901188",
          "grossPay": 2400.00,
          "grossPayDisplay": "$2,400.00",
          "netPay": 1842.55,
          "netPayDisplay": "$1,842.55",
          "disbursedNetPay": 1842.55,
          "legalEntityName": "Acme Manufacturing LLC",
          "isPayrollResult": true,
          "isArchivedPayRun": false,
          "isConnectedPay": false
        }
      ],
      "payRunResults": [
        {
          "earnings": 2400.00,
          "earningsYTD": 38400.00,
          "netPay": 1842.55,
          "netPayYTD": 29480.80,
          "totalDeductions": 557.45,
          "totalDeductionsYTD": 8919.20,
          "preTaxDeductions": 210.00,
          "postTaxDeductions": 347.45,
          "grossHours": 80.0,
          "payDate": "2026-10-02",
          "periodStart": "2026-09-14",
          "periodEnd": "2026-09-27",
          "statementItems": [
            {"isHeader": false, "itemType": "Earning", "shortName": "Regular", "amount": 2400.00, "currencySymbol": "$", "units": 80.0, "rate": 30.0, "amountYTD": 38400.00, "unitsYTD": 1280.0}
          ]
        }
      ]
    }
  • Time-away dashboard

    POST /v1/workforce/time-away/dashboard opendata

    Loads the time-away home: next approved leave, upcoming requests, per-plan balances and company holidays behind the leave dashboard.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • nextTimeAway
    • upcomingRequests
    • balances
    • companyHolidays
    POST /v1/workforce/time-away/dashboard HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "nextTimeAway": {"tafwId": 44102, "timeStart": "2026-10-10T00:00:00", "timeEnd": "2026-10-12T00:00:00", "payAdjCodeName": "Vacation"},
      "upcomingRequests": {"count": 2},
      "balances": [
        {"id": 12, "name": "Vacation", "unit": "hours", "remainingBalance": "62.5"}
      ],
      "companyHolidays": [{"name": "Thanksgiving", "startDate": "2026-11-26"}]
    }
  • Time-away balances

    POST /v1/workforce/time-away/balances opendata

    Returns each time-away plan's accrued, approved, pending, remaining and grant balances for the signed-in worker — the figures on the PTO balance card.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • id
    • name
    • startDate
    • endDate
    • unit
    • accruedBalance
    • approvedBalance
    • pendingBalance
    • remainingBalance
    • exceededBalance
    • grantBalance
    • remainingGrantBalance
    POST /v1/workforce/time-away/balances HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "balances": [
        {
          "id": 12,
          "name": "Vacation",
          "startDate": "2026-01-01T00:00:00",
          "endDate": "2026-12-31T00:00:00",
          "unit": "hours",
          "accruedBalance": "80.0",
          "approvedBalance": "16.0",
          "pendingBalance": "8.0",
          "remainingBalance": "56.0",
          "exceededBalance": "0.0",
          "grantBalance": "80.0",
          "remainingGrantBalance": "56.0"
        }
      ]
    }
  • Employee shifts

    POST /v1/workforce/schedule/shifts opendata

    Reads the signed-in worker's assigned shifts for a window — start/end, on-call flag, job name and org unit — the rows behind the schedule grid. A companion schedule-widget query also returns nextApprovedTimeAway (tafwId, payAdjCodeName, requestedAmount, unit, durationType).

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • employeeShiftByTimePeriod
    • id
    • timeStart
    • timeEnd
    • isOnCall
    • onCallStatusId
    • deptJobName
    • orgUnitName
    POST /v1/workforce/schedule/shifts HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {"start":"2026-09-28T00:00:00","end":"2026-10-04T23:59:59"}
    {
      "data": {
        "scheduleQueries": {
          "employeeShiftByTimePeriod": [
            {
              "id": "SH-90211",
              "timeStart": "2026-09-29T09:00:00",
              "timeEnd": "2026-09-29T17:00:00",
              "isOnCall": false,
              "onCallStatusId": null,
              "deptJobName": "Cashier",
              "orgUnitName": "Store 14"
            }
          ]
        }
      }
    }
  • Submit clock punch

    POST /v1/workforce/clock/punches opendata

    Posts a clock punch (time + type). Punch types themselves come from a clock-entry-types catalog as id / clockEntryName pairs (Clock In, Clock Out, meal, transfer).

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • time
    • type
    • clockEntryName
    • id
    POST /v1/workforce/clock/punches HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {"time":"2026-09-29T09:01:12","type":1}
    {
      "time": "2026-09-29T09:01:12",
      "type": 1,
      "clockEntryName": "Clock In"
    }
  • Wallet On Demand eligibility

    POST /v1/workforce/earned-pay/eligibility openfinance

    Tells the app whether the signed-in worker can use Dayforce Wallet and On-Demand Pay, plus registration status, pay-group country and state — the gate in front of earned-wage access.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • isEligibleForWallet
    • isEligibleForODP
    • walletRegistrationStatus
    • birthDate
    • payGroupCountry
    • stateCode
    POST /v1/workforce/earned-pay/eligibility HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "isEligibleForWallet": true,
      "isEligibleForODP": true,
      "walletRegistrationStatus": "Registered",
      "birthDate": "1991-04-12T00:00:00Z",
      "payGroupCountry": "US",
      "stateCode": "MN"
    }
  • Wallet available pay (On Demand funds)

    POST /v1/workforce/earned-pay/available openfinance

    Reads how much earned-but-unpaid net the worker can load to Dayforce Wallet today, with a same-day request flag and the period calculation breakdown behind the available-pay card.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • netPay
    • currencyCode
    • hasRequestedSuccessfullyToday
    • periodCalculationDetails
    • success
    • errors
    POST /v1/workforce/earned-pay/available HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "netPay": 412.80,
      "currencyCode": "USD",
      "hasRequestedSuccessfullyToday": false,
      "periodCalculationDetails": [{"label": "Hours this period", "value": "24.5"}],
      "success": true,
      "errors": []
    }
  • Direct-deposit account lookup

    POST /v1/workforce/direct-deposit/accounts openbanking

    Returns the direct-deposit setup catalog for the worker's pay group: country, IBAN vs. domestic routing, allowed pay methods and deposit types, institution list, and whether a remainder account or document upload is required.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • currencySymbol
    • payGroup
    • payGroupCountryCode
    • fieldInfoList
    • payMethods
    • depositTypes
    • maxNumAccounts
    • remainderRequired
    • allowDistributeByPct
    • isIBAN
    • financialInstitutionList
    • hasWorkFlow
    • isMandatoryDocumentUpload
    POST /v1/workforce/direct-deposit/accounts HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "currencySymbol": "$",
      "payGroup": "US-BIWEEKLY",
      "payGroupCountryCode": "US",
      "maxNumAccounts": 5,
      "remainderRequired": true,
      "allowDistributeByPct": true,
      "isIBAN": false,
      "hasWorkFlow": false,
      "isMandatoryDocumentUpload": false,
      "payMethods": [{"id": 1, "name": "Checking"}],
      "depositTypes": [{"id": 1, "name": "Percent"}],
      "financialInstitutionList": [{"name": "Wells Fargo", "routingNumber": "121000248"}],
      "fieldInfoList": [{"name": "accountNumber", "required": true}]
    }
  • Employee profile (address & contacts)

    POST /v1/workforce/profile osint

    Reads the worker's profile envelope used by My Profile: person addresses, contact channels, emergency contacts, and whether an address-change request is already in flight.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • personAddress
    • contactInformation
    • emergencyContact
    • isAddressChangeRequestInProcess
    POST /v1/workforce/profile HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "personAddress": [{"address1": "100 Hennepin Ave", "city": "Minneapolis", "state": "MN", "postalCode": "55401", "country": "US"}],
      "contactInformation": [{"type": "Mobile", "value": "+1-612-555-0199"}],
      "emergencyContact": [{"name": "Alex Rivera", "relationship": "Spouse", "phone": "+1-612-555-0144"}],
      "isAddressChangeRequestInProcess": false
    }
  • Onboarding dashboard

    POST /v1/workforce/onboarding/dashboard opendata

    Loads the new-hire dashboard: welcome card (name, first day, position, company), to-do sections, key people, next learning actions and extra resources for the onboarding window.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • startDate
    • endDate
    • welcome
    • todos
    • people
    • nextActionItems
    • additionalResources
    • title
    • employeeName
    • firstDay
    • position
    • hasMessage
    • companyName
    POST /v1/workforce/onboarding/dashboard HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "startDate": "2026-10-06T00:00:00",
      "endDate": "2026-11-03T00:00:00",
      "welcome": {
        "title": "Welcome",
        "employeeName": "Jordan Lee",
        "firstDay": "2026-10-06T09:00:00",
        "position": "Cashier",
        "hasMessage": true,
        "companyName": "Acme Manufacturing LLC"
      },
      "todos": {"sections": [{"items": [{"title": "Upload I-9 documents"}]}]},
      "people": {"persons": [{"name": "Sam Patel", "role": "Manager"}]},
      "nextActionItems": {"learningTypes": []},
      "additionalResources": {"resources": [{"title": "Employee handbook"}]}
    }
  • Benefit elections summary

    POST /v1/workforce/benefits/elections opendata

    Lists the worker's benefit enrollment windows — type, name, template, enrollment id and days remaining — the summary behind the benefits elections screen.

    Auth: OAuth2 Bearer access_token from the token-issue call on the tenant authenticationUrl returned by the site-config bootstrap.

    • enrollmentTypeId
    • enrollmentType
    • enrollmentName
    • templateId
    • employeeEnrollmentId
    • numberOfDaysDueIn
    POST /v1/workforce/benefits/elections HTTP/1.1
    Authorization: Bearer eyJhbGciOi...
    Content-Type: application/json
    
    {}
    {
      "enrollments": [
        {
          "enrollmentTypeId": 2,
          "enrollmentType": "OpenEnrollment",
          "enrollmentName": "2026 Open Enrollment",
          "templateId": 88,
          "employeeEnrollmentId": 55012,
          "numberOfDaysDueIn": 14
        }
      ]
    }

Data categories

  • pay statements
  • time-off balances
  • schedules and shifts
  • clock punches
  • wallet available pay
  • direct deposit
  • employee profile
  • benefit elections
  • onboarding

Where teams use this data

  • Payroll / ERP reconciliation

    Finance bots join each employeeId to lastPayAmount, netPay and payDate so the last run's gross, net and disbursedNetPay can be checked against the GL before the next disbursement.

  • Leave-coverage planning

    Workforce tools read remainingBalance, pendingBalance and upcoming tafwId / payAdjCodeName rows to forecast which shifts need coverage without re-keying approved leave.

  • Earned-wage access gate

    On-demand pay products check isEligibleForWallet and isEligibleForODP, then pull available-pay netPay and hasRequestedSuccessfullyToday so a wallet load does not exceed the period or double-draw the same day.

  • Clock and timesheet compliance

    Attendance systems store each punch's time and clockEntryName against the shift's timeStart / timeEnd and deptJobName so missed punches and off-job clocks surface before payroll locks.

Frequently asked questions

What data does the Dayforce interface expose?

The signed-in worker's own employment record: pay-run headers and stub line items (netPay, grossPay, statementItems), time-away balances (remainingBalance, tafwId), assigned shifts (employeeShiftByTimePeriod), clock punches (time, clockEntryName), Wallet On Demand eligibility and available pay, direct-deposit setup (isIBAN, financialInstitutionList), profile addresses and contacts, onboarding to-dos, and benefit enrollment windows.

How does the app authenticate its requests?

Sign-in is an OAuth2 authorization-code grant at the tenant authenticationUrl. An in-app redirect returns a code that the token-issue call exchanges for access_token, refresh_token and id_token. Later workforce, schedule and wallet calls send that access_token as a Bearer.

What is Dayforce Wallet On Demand in this surface?

A gated earned-wage path. The eligibility call returns isEligibleForWallet, isEligibleForODP, walletRegistrationStatus, payGroupCountry and stateCode. The available-pay call then returns the netPay (in currencyCode) the worker can load today, plus hasRequestedSuccessfullyToday and periodCalculationDetails.

Where do shifts and time-away live?

Shifts are the schedule query (employeeShiftByTimePeriod with timeStart, timeEnd, deptJobName, orgUnitName). Time-away balances and the next leave sit on the time-away balances and dashboard calls; a companion schedule widget also returns nextApprovedTimeAway (tafwId, payAdjCodeName, requestedAmount).

Apps similar to Dayforce

  • ADP Mobile Solutions — ADP's employee self-service app for pay statements, time-off balances, schedules and clock punches — the closest large-payroll peer to Dayforce.
  • Workday — Workday's employee app for time off, timecards, expenses and published schedules inside the Workday HCM suite.
  • Paylocity — Paylocity's mid-market payroll and HR mobile app for pay, time off and employee self-service.
  • UKG — UKG (Ultimate Kronos Group) is a workforce-management suite known for scheduling, time and attendance, and hourly employee self-service.

Topics

  • Dayforce API
  • Dayforce mobile endpoints
  • pay statement API
  • time away balance API
  • Dayforce Wallet On Demand
  • employee self-service API
  • HCM payroll data API
  • direct deposit API

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote