DailyPay earned-wage and payday APIs
DailyPay On-Demand Pay, made by DailyPay, Inc., gives U.S. employees at participating employers access to earned wages before their scheduled payday. Workers can view the amount available from reported shifts and tips, choose an instant debit-card transfer or next-business-day ACH to a linked bank account, and review previous paychecks and the pay left for payday. The app also includes the DailyPay Card and Friday Card, direct-deposit setup, savings jars, automatic payday reserves, and identity-verification steps. It serves employees whose employers offer the service, with sign-in through email, employer SSO, or device biometrics; it is an employer-linked earned-wage-access product rather than a consumer payday-loan application.
Earned-wage availability connects reported shifts and tips to the payday remainder through availableBalanceCents, lastShiftReportedAt and lastTipReportedAt. Pay-period records add grossEarningsAmountCents, netEarningsAmountCents, totalTransferredEarlyAmountCents and remainderAmountCents, while remainderPaymentReceivingAccount identifies the destination for the remaining pay. Payroll reconciliation tools can compare those amounts across pay periods without confusing an early wage transfer with the final settlement.
Transfer estimates pair nowFeeAmountCents and nextFeeAmountCents with dailyWithdrawalLimitAmountCents, remainingWithdrawalAmountCents and attemptsLeft. Submitted payments carry paymentId, paymentStatus and totalFeeAmountCents, allowing transfer-cost monitors to relate the estimate to its receipt. Receiving-account records supply instantEnabled, rtpCreditable and reconfirm for eligibility checks.
Card activity contributes transactionId, amountCents and cashbackAmountCents; savings records contribute balanceCents, fixedDeductionAmountCents and targetAmountCents. Direct-deposit and identity workflows add dduStatus, photoIdStatus and agreementVersion. With appropriate employee-data authorization, payroll integrators and card-program teams can connect these records for settlement reconciliation, receiving-account checks and onboarding-state tracking. openData Studio turns this field-level model into callable open data; the paths and sample values shown here are illustrative, not production connection details.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Hydrate on-demand-pay available balance
GET
/v1/earned-pay/availabilityopenbankingLoads the home available-balance tile: earned wages the employer has reported this pay period, whether instant and next-day rails are open, and any lock that blocks a transfer.
Auth: Authorization: Bearer <authToken>. Employee session established through sign-in; also sends Accept-Language, X-Whitelabel-Partner, X-Country-Code and X-App-Version.
- availableBalanceCents
- availableBalance
- lastShiftReportedAt
- lastTipReportedAt
- totalBonusAmountCents
- minAdvanceAmountCents
- canTransfer
- instantAvailable
- photoIdStatus
- transfersDisabledReason
GET /v1/earned-pay/availability HTTP/1.1 Authorization: Bearer <authToken> X-Whitelabel-Partner: dailypay X-Country-Code: US Accept-Language: en{ "employee": { "id": "emp_18402", "uuid": "6f2c1a90-4b11-4e2a-9c0d-11aa22bb33cc", "status": "active", "minAdvanceAmountCents": 500, "currentPayPeriodSummary": { "availableBalanceCents": 18650, "availableBalance": "186.50", "lastShiftReportedAt": "2026-10-22T18:04:00Z", "lastTipReportedAt": "2026-10-22T18:10:00Z", "totalBonusAmountCents": 1200 }, "pullAdvance": { "unlocked": true, "canTransfer": true, "instantEnabled": true, "instantAvailable": true, "nextDayAvailable": true, "photoIdStatus": "approved", "transfersDisabledReason": null } } }Quote on-demand-pay transfer
GET
/v1/earned-pay/estimatesopenfinancePrices an early-wage transfer before the worker confirms it: instant vs ACH eligibility, now/next-day fees, and remaining daily withdrawal headroom against the chosen receiving account.
Auth: Authorization: Bearer <authToken> plus X-Whitelabel-Partner, X-Country-Code and X-App-Version.
- totalAmountCents
- receivingAccountId
- receivingAccountType
- validAmount
- instantUnlocked
- achUnlocked
- nowFeeAmountCents
- nextFeeAmountCents
- dailyWithdrawalLimitAmountCents
- remainingWithdrawalAmountCents
- attemptsLeft
- hasTakenWeeklyTransfer
GET /v1/earned-pay/estimates?totalAmountCents=7500&receivingAccountType=bank_account&receivingAccountId=ba_4419 HTTP/1.1 Authorization: Bearer <authToken> X-Country-Code: US{ "employee": { "id": "emp_18402", "currentPayPeriodSummary": { "availableBalanceCents": 18650, "totalBonusAmountCents": 1200 }, "pullAdvance": { "unlocked": true, "instantEnabled": true, "instantAvailable": true, "nextDayAvailable": true, "confirmAdvanceAmount": { "validAmount": true, "instantUnlocked": true, "instantLockedReason": null, "achUnlocked": true, "achLockedReason": null, "errorMessages": [] }, "transferFees": { "freePull": false, "freeInstant": false, "freeNextDay": true, "nowFeeAmountCents": 299, "nextFeeAmountCents": 0, "hasTakenWeeklyTransfer": false }, "transferLimitDetails": { "attemptsLeft": 3, "dailyMaxTransferLimit": 5, "dailyWithdrawalLimitAmountCents": 50000, "remainingWithdrawalAmountCents": 42500, "instantMaxTransferLimit": 3, "numberOfPaidInstantTranfersTakenToday": 1, "earliestTransferTime": "2026-10-23T12:00:00Z" } } } }Submit instant debit-card transfer
POST
/v1/earned-pay/disbursementsopenbankingPosts an instant account-funding transfer of earned wages onto a linked debit card after the quote screen, returning the paymentId and fee that land on paycheck history.
Auth: Authorization: Bearer <authToken>. A debit-card transfer may require a 3-D Secure verification step before submission.
- paymentId
- paymentMethod
- paymentStatus
- paymentType
- processedOn
- totalAmountCents
- totalFeeAmountCents
- receivingAccount
- accountNumber
- speed
POST /v1/earned-pay/disbursements HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "totalAmountCents": 7500, "receivingAccountId": "dc_9182", "receivingAccountType": "debit_card", "speed": "instant" }{ "paymentId": "pay_77c1", "paymentMethod": "debit_card", "paymentStatus": "processed", "paymentType": "advance", "processedOn": "2026-10-23", "totalAmountCents": 7500, "totalFeeAmountCents": 299, "isSavings": false, "receivingAccount": { "id": "dc_9182", "accountNumber": "4411", "name": "Chase Debit", "receivingAccountType": "debit_card" } }List paycheck history
GET
/v1/payroll/periodsopenfinancePages closed and open pay periods for the paycheck-history screen, splitting shift vs tip earnings and showing how much already left early versus the remainder still due on payday.
Auth: Authorization: Bearer <authToken> plus X-Whitelabel-Partner and X-Country-Code.
- payPeriods
- providerDisplayName
- startsAtDate
- endsAtDate
- nextPaymentExpectedAtDate
- totalAmountCents
- totalShiftsEarningsCents
- totalTipsEarningsCents
- grossEarningsAmountCents
- netEarningsAmountCents
- remainderAmountCents
- totalTransferredEarlyAmountCents
- totalFeeAmountCents
GET /v1/payroll/periods?page=1&perPage=10 HTTP/1.1 Authorization: Bearer <authToken>{ "employee": { "id": "emp_18402", "tipsEnabled": true, "earlyDepositEnabled": true, "payPeriods": { "items": [ { "id": "pp_2091", "uuid": "aa11bb22-cc33-4dd4-8ee5-ff6677889900", "providerDisplayName": "Northwind Retail", "startsAtDate": "2026-10-06", "endsAtDate": "2026-10-19", "status": "open", "nextPaymentExpectedAtDate": "2026-10-24", "totalAmountCents": 62400, "totalShiftsEarningsCents": 59800, "totalTipsEarningsCents": 2600, "summary": { "grossEarningsAmountCents": 71200, "netEarningsAmountCents": 62400, "remainderAmountCents": 43750, "totalFeeAmountCents": 299, "totalTransferredEarlyAmountCents": 18650 } } ] } } }Read paycheck and settlement detail
GET
/v1/payroll/periods/{payPeriodId}/settlementopenfinanceOpens a single pay period from paycheck history: early advances already taken, payday-reserve withholdings, and the bank or card that will receive the remainder on payday.
Auth: Authorization: Bearer <authToken>.
- payPeriodId
- availableBalanceCents
- advancedAmountCents
- daysUntilNextPayday
- companyPayPeriodAdvanceable
- remainderAmountCents
- totalPaydayReservesAmountCents
- remainderPaymentReceivingAccount
- advances
- advanceType
GET /v1/payroll/periods/pp_2091/settlement HTTP/1.1 Authorization: Bearer <authToken>{ "employee": { "id": "emp_18402", "tipsEnabled": true, "payPeriod": { "id": "pp_2091", "providerDisplayName": "Northwind Retail", "startsAtDate": "2026-10-06", "endsAtDate": "2026-10-19", "status": "open", "daysUntilNextPayday": 1, "availableBalanceCents": 18650, "advancedAmountCents": 18650, "companyPayPeriodAdvanceable": true, "summary": { "grossEarningsAmountCents": 71200, "netEarningsAmountCents": 62400, "remainderAmountCents": 43750, "totalFeeAmountCents": 299, "totalTransferredEarlyAmountCents": 18650, "totalPaydayReservesAmountCents": 0, "negativeBalancePaidSettlementAmountCents": 0 }, "remainderPaymentReceivingAccount": { "id": "ba_4419", "accountNumber": "2190", "name": "Chase Checking", "nickname": "Main", "receivingAccountType": "bank_account", "primary": true }, "advances": { "items": [ { "paymentId": "pay_77c1", "advanceType": "pull", "paymentStatus": "processed", "totalAmountCents": 7500, "totalFeeAmountCents": 299 } ] } } } }Read DailyPay Card balance
GET
/v1/spending-card/positionopenbankingReads the DailyPay Card / Friday Card spending balance shown on the cards tab, including whether paycheck direct deposit is already pointed at the card.
Auth: Authorization: Bearer <authToken> plus X-Whitelabel-Partner.
- availableBalanceCents
- ledgerBalanceCents
- fridayCard
- status
- currency
- directDeposit
- nextPayday
GET /v1/spending-card/position HTTP/1.1 Authorization: Bearer <authToken>{ "card": { "id": "dpc_3301", "status": "active", "fridayCard": false, "availableBalanceCents": 41220, "ledgerBalanceCents": 41220, "currency": "USD" }, "directDeposit": { "status": "active", "nextPayday": "2026-10-24" } }List DailyPay Card transactions
GET
/v1/spending-card/activityopenbankingPages the DailyPay Card ledger used by the card-opened transactions/history screen, including cash-back that has already posted.
Auth: Authorization: Bearer <authToken>.
- transactionId
- postedAt
- amountCents
- merchantName
- status
- cashbackAmountCents
- currency
GET /v1/spending-card/activity?page=1 HTTP/1.1 Authorization: Bearer <authToken>{ "items": [ { "transactionId": "txn_9012", "postedAt": "2026-10-22T16:41:00Z", "amountCents": -1287, "currency": "USD", "merchantName": "RITE AID", "status": "posted", "cashbackAmountCents": 12 } ], "page": 1, "hasMore": true }Read savings account summary
GET
/v1/reserves/positionopenfinanceReturns the savings-pod cash position and whether automatic payday deductions / round-ups are on, feeding the savings-jars home tile.
Auth: Authorization: Bearer <authToken>.
- directSavingsEnabled
- roundupSavingsEnabled
- balanceCents
- accruedAutoSavingsAmountCents
- fixedDeductionAmountCents
- savingsDeduction
GET /v1/reserves/position HTTP/1.1 Authorization: Bearer <authToken>{ "directSavingsEnabled": true, "roundupSavingsEnabled": false, "balanceCents": 8500, "accruedAutoSavingsAmountCents": 2500, "fixedDeductionAmountCents": 2500, "savingsDeduction": true }List savings jars
GET
/v1/reserves/goalsopenfinanceLists named savings jars the worker can fund from earned wages or payday reserves, as shown on the savings-jars promo and transfer-money screens.
Auth: Authorization: Bearer <authToken>.
- jars
- id
- name
- balanceCents
- targetAmountCents
- status
GET /v1/reserves/goals HTTP/1.1 Authorization: Bearer <authToken>{ "jars": [ { "id": "jar_12", "name": "Emergency", "balanceCents": 6000, "targetAmountCents": 20000, "status": "active" } ] }Start bank-account link session
POST
/v1/receivers/bank-linkopenbankingOpens a hosted bank-link session from payday-setup and transfer-flow add-bank-account screens so a checking or savings account can become a receiving account.
Auth: Authorization: Bearer <authToken>.
- purpose
- linkSessionId
- hostedLinkUrl
- expiresAt
POST /v1/receivers/bank-link HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "purpose": "receiving_account" }{ "linkSessionId": "pls_55ab", "hostedLinkUrl": "/demo/bank-link/session/pls_example", "expiresAt": "2026-10-23T12:30:00Z" }Read linked bank account
GET
/v1/receivers/banks/{uuid}openbankingReturns a linked receiving bank with routing/account last-fours, instant and RTP flags, and whether the worker must reconfirm the account before the next payday remainder.
Auth: Authorization: Bearer <authToken>.
- uuid
- accountNumber
- routingNumber
- checking
- ownerName
- primary
- bankName
- nickname
- instantEnabled
- rtpCreditable
- creditable
- twoFactorRequired
- reconfirm
GET /v1/receivers/banks/ba_4419 HTTP/1.1 Authorization: Bearer <authToken>{ "id": "ba_4419", "uuid": "ba_4419", "accountNumber": "2190", "routingNumber": "021000021", "checking": true, "name": "Chase Checking", "ownerName": "Alex Rivera", "primary": true, "bankName": "Chase", "nickname": "Main", "instantEnabled": true, "rtpCreditable": true, "creditable": true, "savingsEnabled": false, "twoFactorRequired": false, "reconfirm": false }Accept SSN user agreement
POST
/v1/identity/ssn-consentsosintRecords the SSA/SSN consumer-file agreement collected during card opening and identity verification, tying the accepted version to the employee userUuid.
Auth: Authorization: Bearer <authToken>. Identity-verification status determines transfer eligibility.
- agreementName
- agreementVersion
- ssnLastFour
- acceptedAt
- userUuid
- photoIdStatus
POST /v1/identity/ssn-consents HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "agreementName": "example_ssn_consent", "agreementVersion": "2024-11", "ssnLastFour": "6789" }{ "message": "accepted", "userAgreement": { "agreementName": "example_ssn_consent", "agreementVersion": "2024-11", "acceptedAt": "2026-10-23T11:02:00Z", "userUuid": "6f2c1a90-4b11-4e2a-9c0d-11aa22bb33cc" } }Read card direct-deposit status
GET
/v1/spending-card/payroll-routingopenfinanceReports whether the worker has switched paycheck direct deposit onto the DailyPay Card (DDU), which unlocks fee-free instant transfers for Friday / DailyPay cardholders.
Auth: Authorization: Bearer <authToken>.
- dduStatus
- directDepositEnabled
- receivingAccountType
- nextPayday
- providerId
GET /v1/spending-card/payroll-routing HTTP/1.1 Authorization: Bearer <authToken>{ "dduStatus": "switched", "directDepositEnabled": true, "receivingAccountType": "dailypay_card", "nextPayday": "2026-10-24", "providerId": 441 }Attach transfer reason
POST
/v1/earned-pay/annotationsopendataStores the self-reported reason collected after an on-demand-pay transfer, hanging reasonType/reasonText off the employeePayment for later insights.
Auth: Authorization: Bearer <authToken>.
- paymentId
- reasonType
- reasonText
POST /v1/earned-pay/annotations HTTP/1.1 Authorization: Bearer <authToken> Content-Type: application/json { "paymentId": "pay_77c1", "reasonType": "bills", "reasonText": "Rent coming due" }{ "message": "ok", "employeePayment": { "paymentId": "pay_77c1", "transferReason": { "reasonType": "bills", "reasonText": "Rent coming due" } } }
Data categories
- earned-wages
- balances
- pay-periods
- transfers
- fees
- bank-accounts
- debit-cards
- savings
- direct-deposit
- kyc
Where teams use this data
Earned-wage vs payday remainder reconciliation
Payroll and EWA ops pull availableBalanceCents, advancedAmountCents and remainderAmountCents per pay period, then match remainderPaymentReceivingAccount to the bank or DailyPay Card that will receive payday netEarningsAmountCents after early pulls.
Instant-transfer fee and limit monitoring
A transfer-risk bot reads nowFeeAmountCents, nextFeeAmountCents, dailyWithdrawalLimitAmountCents, remainingWithdrawalAmountCents and attemptsLeft from the quote, then watches paymentId / totalFeeAmountCents on the submitted AFT.
Receiving-account and RTP eligibility
Treasury tools list linked banks with routingNumber, accountNumber, instantEnabled, rtpCreditable and reconfirm, and debit cards with fridayCard / primary, so remainder pay and instant rails only target accounts that can actually receive.
Direct-deposit switch and KYC gating
Card-program ops combine dduStatus, photoIdStatus and the accepted SSN agreementVersion to know when fee-free DailyPay Card transfers are unlocked versus when identity still blocks pullAdvance.canTransfer.
Frequently asked questions
Which fields describe earned wages available before payday?
The balance snapshot includes availableBalanceCents, availableBalance, lastShiftReportedAt, lastTipReportedAt, totalBonusAmountCents and minAdvanceAmountCents. Transfer-eligibility indicators include canTransfer, instantAvailable, photoIdStatus and transfersDisabledReason.
How do the transfer examples distinguish fees, limits and settlement?
A transfer estimate includes validAmount, instantUnlocked, achUnlocked, nowFeeAmountCents, nextFeeAmountCents, dailyWithdrawalLimitAmountCents, remainingWithdrawalAmountCents and attemptsLeft. The submitted payment carries paymentId, paymentStatus and totalFeeAmountCents; pay-period records separately track totalTransferredEarlyAmountCents and remainderAmountCents.
Does the field model include linked banks, card activity and savings?
Yes. Linked banks include routingNumber, accountNumber, instantEnabled, rtpCreditable and reconfirm. Card records include availableBalanceCents, ledgerBalanceCents and cashbackAmountCents; savings records include balanceCents, fixedDeductionAmountCents and targetAmountCents. Direct-deposit switching is represented by dduStatus.
Are these production connection details, and what authentication type is shown?
The paths and examples are illustrative rather than production connection details. The authentication model uses an employee-session Bearer token, with language, partner, country and app-version headers where applicable. Access to employee balances, receiving accounts and identity records requires appropriate authorization.
Apps similar to DailyPay On-Demand Pay
- Payactiv — Payactiv is an employer-linked earned-wage access service: eligible employees can take a portion of wages already earned, there is always a free option and never any tips, and accessed amounts are reconciled through payroll rather than as a loan.
- EarnIn — EarnIn Cash Out lets U.S. workers access wages they have already earned — up to $200 a day and $1,000 per pay period — with no credit check, no interest, and no mandatory fees on standard transfers that typically take 1–2 business days.
- Branch — Branch is an employer workforce-payments platform that lets workers advance wages they have already earned before payday through the company's app or Branch's, without changing direct deposit.
- Tapcheck — Tapcheck is an employer-offered same-day pay benefit that can make up to 70% of net earnings available after a shift, with transfers to a bank account or a Tapcheck Mastercard for a single ATM-like fee.
- ZayZoon — ZayZoon is a workplace app that lets employees at participating employers access earned wages before payday through payroll-partner integrations, alongside in-app discounts, rewards, and financial-education tools.
- Stream — Stream Pay is an earned-wage access service available exclusively through destination employers, combining flexible access to pay with budgeting tools and exclusive discounts in one workplace app.
- OnePay @Work — OnePay @Work (formerly Even) is a free employer benefit whose Instapay feature lets employees request a portion of net earnings already worked, with free delivery options and optional instant deposits depending on the employer's setup.
- Brigit — Brigit Instant Cash advances $25–$500 with no credit check and no late fees on a monthly subscription of $8.99–$15.99, with optional express delivery that most members receive within 20 minutes.
Topics
- DailyPay API
- earned wage access
- on-demand pay
- availableBalanceCents
- payroll reconciliation
- payday remainder
- remainderAmountCents
- nowFeeAmountCents
- DailyPay Card
- Friday Card
- direct deposit dduStatus
- earned wage transfer fees
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