Dayforce 数据 API:发薪、请假与钱包
Dayforce 是 Dayforce(总部位于明尼阿波利斯与多伦多、前身为 Ceridian)HCM 套件的员工自助配套应用。员工用雇主的 Dayforce 账户登录后,首页会打开日常的薪酬与工时事务:查看当期与归档工资单,查询请假余额与即将到来的休假,浏览已排班次,打卡上下班,提交请假申请,发起或接受换班,完成入职待办,查看福利选举,设置或更改直接存款,以及——在雇主开通的情况下——通过 Dayforce Wallet On Demand 支取已赚工资。该应用面向美国市场,服务于在 Dayforce 上运行薪酬、工时、排班与福利的企业中的小时工和受薪员工——他们希望在手机上而不是在共用终端前处理工资、排班与休假;在这一员工端角色上,它与 ADP、Workday、Paylocity 等 HCM 服务商的自助应用同台竞争。
最近一次实发用 lastPayAmount 与 changeFromPreviousNetPay 配对,周期由 payPeriodStartDate 与 payPeriodEndDate 界定,再展开为以 payRunHeadersId 为键的表头——grossPay、netPay、disbursedNetPay、payDate、checkNumber、legalEntityName——以及用 shortName、amount、units、rate、amountYTD 重建工资单的行项目。请假余额与这份薪酬并列:每个计划的 remainingBalance、accruedBalance、pendingBalance、grantBalance 及计量 unit,外加下一次已批准休假(tafwId、payAdjCodeName、requestedAmount)。已排班次以 employeeShiftByTimePeriod 行到达,含 timeStart、timeEnd、deptJobName、orgUnitName;打卡记录 time 与取自 clockEntryName 的 type。直接存款设置返回 payGroupCountryCode、isIBAN、financialInstitutionList 与 maxNumAccounts。在开通 Wallet On Demand 时,资格标记 isEligibleForWallet 与 isEligibleForODP 紧挨着以 currencyCode 计价的可用薪资 netPay,并由 hasRequestedSuccessfullyToday 限制当日重复支取。
薪酬与 ERP 机器人把每位员工的 employeeId 与 netPay、payDate 关联,在下次发放前核对上一周期。休假规划读取 remainingBalance 与即将到来的 tafwId 行来预测人力覆盖。预支工资产品先检查 isEligibleForWallet,再拉取可用薪资 netPay,避免超过本期额度。考勤合规工具把每次打卡的 time 与 clockEntryName 对照班次的 timeStart/timeEnd。openData Studio 将这份按员工划分的薪酬、请假、排班、打卡与钱包记录转化为可调用的开放数据,支撑上述集成。
应用截图
API 端点一览
以下端点与请求/响应示例均依据应用界面推导重构,为示意说明,并非实际抓包。
OAuth2 令牌签发(授权码)
POST
/v1/workforce/auth/tokenopendata用授权码(应用内 oauth 回调)换取后续 workforce、排班与钱包调用所携带的 Bearer 令牌。
认证方式: 在租户 authenticationUrl 上的 OAuth2 authorization_code 授权。回调为应用内 oauth 回调。签发 access_token、refresh_token 与 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..." }租户移动站点配置
POST
/v1/workforce/tenant/site-configosint解析已登录租户:命名空间、服务器版本,以及后续会话使用的认证、workforce、排班(mobileApiUrl)与身份(dfidRootUrl)根地址。
认证方式: 未认证引导,或刚签发的 Bearer access_token。在会话其余部分之前解析租户命名空间。
- 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" }当前发薪周期收入摘要
POST
/v1/workforce/pay-runs/earningsopendata返回已登录员工最近一次发薪快照——上次实发、周期起止、工时合计及相对上次实发的变动——即收入首页卡片上的数字。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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 }员工发薪单明细
POST
/v1/workforce/pay-runs/statementopendata返回一次发薪的完整工资单:表头(发薪日、支票号、应发/实发、法律实体)以及重建工资单屏幕所需的收入、扣款与年累计行项目。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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} ] } ] }请假工作台
POST
/v1/workforce/time-away/dashboardopendata加载请假首页:下一次已批准休假、待处理申请、各计划余额与公司假日。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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"}] }请假余额
POST
/v1/workforce/time-away/balancesopendata返回已登录员工各请假计划的累计、已批准、待审批、剩余与额度余额——即 PTO 余额卡片上的数字。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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" } ] }员工班次
POST
/v1/workforce/schedule/shiftsopendata读取已登录员工某时间窗内的已排班次——起止、待命标记、岗位名与组织单元——即排班表背后的行。配套的排班小组件还会返回 nextApprovedTimeAway(tafwId、payAdjCodeName、requestedAmount、unit、durationType)。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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" } ] } } }提交打卡
POST
/v1/workforce/clock/punchesopendata提交一次打卡(time + type)。打卡类型本身由打卡类型目录以 id / clockEntryName 对返回(上班、下班、用餐、转岗)。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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 资格
POST
/v1/workforce/earned-pay/eligibilityopenfinance告知已登录员工能否使用 Dayforce Wallet 与按需发薪,以及注册状态、薪资组国家与州——即预支工资入口前的门槛。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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 可用薪资(按需资金)
POST
/v1/workforce/earned-pay/availableopenfinance读取员工今天可转入 Dayforce Wallet 的已赚未发净额,附带当日是否已成功申请的标记以及可用薪资卡片背后的周期计算明细。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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": [] }直接存款账户查询
POST
/v1/workforce/direct-deposit/accountsopenbanking返回该员工薪资组的直接存款设置目录:国家、IBAN 还是国内路由、允许的支付方式与存款类型、金融机构列表,以及是否必须有剩余账户或上传证明文件。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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}] }员工资料(地址与联系人)
POST
/v1/workforce/profileosint读取「我的资料」所用的员工资料信封:住址、联系方式、紧急联系人,以及是否已有进行中的地址变更申请。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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 }入职工作台
POST
/v1/workforce/onboarding/dashboardopendata加载新员工工作台:欢迎卡(姓名、入职日、岗位、公司)、待办分区、关键联系人、下一步学习任务与入职窗口内的额外资源。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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"}]} }福利选举摘要
POST
/v1/workforce/benefits/electionsopendata列出员工的福利参保窗口——类型、名称、模板、参保编号与剩余天数——即福利选举屏幕背后的摘要。
认证方式: 在站点配置引导返回的租户 authenticationUrl 上取得的 OAuth2 Bearer access_token。
- 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 } ] }
数据类别
- 工资单
- 请假余额
- 排班与班次
- 打卡记录
- 钱包可用薪资
- 直接存款
- 员工资料
- 福利选举
- 入职
数据使用场景与案例
薪酬 / ERP 对账
财务机器人将每位员工的 employeeId 与 lastPayAmount、netPay、payDate 关联,在下次发放前把上一周期的应发、实发与 disbursedNetPay 和总账核对。
休假覆盖规划
劳动力工具读取 remainingBalance、pendingBalance 以及即将到来的 tafwId / payAdjCodeName 行,预测哪些班次需要顶班,而无需把已批准休假再录入一遍。
预支工资准入
按需发薪产品先检查 isEligibleForWallet 与 isEligibleForODP,再拉取可用薪资 netPay 和 hasRequestedSuccessfullyToday,避免超过本期额度或同一天重复支取。
打卡与工时合规
考勤系统把每次打卡的 time 与 clockEntryName 对照班次的 timeStart / timeEnd 和 deptJobName,在薪酬锁定前暴露漏打卡与串岗打卡。
常见问题
Dayforce 接口暴露哪些数据?
已登录员工本人的雇佣记录:发薪表头与工资单行(netPay、grossPay、statementItems),请假余额(remainingBalance、tafwId),已排班次(employeeShiftByTimePeriod),打卡(time、clockEntryName),Wallet On Demand 资格与可用薪资,直接存款设置(isIBAN、financialInstitutionList),资料地址与联系人,入职待办,以及福利参保窗口。
应用如何认证其请求?
登录是在租户 authenticationUrl 上的 OAuth2 授权码流程。应用内回调带回授权码,由令牌签发接口换取 access_token、refresh_token 与 id_token。后续 workforce、排班与钱包调用以 Bearer 携带该 access_token。
这个接口里的 Dayforce Wallet On Demand 是什么?
一条受门槛控制的预支工资路径。资格接口返回 isEligibleForWallet、isEligibleForODP、walletRegistrationStatus、payGroupCountry 与 stateCode。可用薪资接口再返回员工今天可转入钱包的 netPay(currencyCode),以及 hasRequestedSuccessfullyToday 与 periodCalculationDetails。
班次和请假分别在哪?
班次是排班查询(employeeShiftByTimePeriod,含 timeStart、timeEnd、deptJobName、orgUnitName)。请假余额与下一次休假在请假余额与请假工作台接口;配套的排班小组件还会返回 nextApprovedTimeAway(tafwId、payAdjCodeName、requestedAmount)。
与 Dayforce 相似的应用
- ADP Mobile Solutions — ADP 的员工自助应用,覆盖工资单、请假余额、排班与打卡,是 Dayforce 在大型薪酬市场上最接近的同类产品。
- Workday — Workday 员工应用,在 Workday HCM 套件内处理请假、工时卡、报销与已发布排班。
- Paylocity — Paylocity 面向中型企业的薪酬与人事移动应用,提供工资、请假与员工自助。
- UKG — UKG(Ultimate Kronos Group)是一套劳动力管理系统,以排班、工时考勤以及面向小时工的员工自助功能著称。
相关主题
- Dayforce API
- Dayforce 移动端点
- 工资单 API
- 请假余额 API
- Dayforce Wallet On Demand
- 员工自助 API
- HCM 薪酬数据 API
- 直接存款 API
需要集成这个 App 的数据 API?
我们可为任意指定 App 交付定制集成——源码交付 USD 500 起,或托管 API 按调用计费。告诉我们您需要的数据即可。
- 每个项目均签 NDA 与 SOW
- 3–7 天交付
- 验收通过后才付款
- 仅在授权范围内作业