Dave ExtraCash, Spending and Flex APIs
Dave: Credit, Cash & Money App is the US consumer-finance client from Dave Inc., a Los Angeles-based fintech founded in 2016. It bundles ExtraCash advances against upcoming pay, a Dave Spending checking account with a debit card, Goals savings envelopes, a Flex revolving spending line and Dave Rent for splitting rent across the due-date window. Members sign in on Android, connect an external bank or payroll, draw ExtraCash to Spending or an outside debit card, and move money into Goals. The app is built for paycheck-to-paycheck US consumers who would otherwise reach for payday loans or overdraft, and it competes with Earnin, Brigit, MoneyLion, Albert and Possible Finance in the same cash-advance and neobank niche. Dave Inc. is publicly listed (NASDAQ: DAVE); deposits sit at partner banks such as Coastal Community Bank, and ExtraCash is the headline product that sits above the Spending account.
ExtraCash overdraftApprovals stamp maxApprovedAmount against the linked bankAccountId, with approvedRechargeAmount and an optional nextOverdraftOfferAmount upgrade on the same record. Terms quotes add serviceFee, settleableAmount and settlementDate before a draw returns its disbursementId; fee bands sit on OVERDRAFT_FEE and EXPRESS_FEE with feeAmount.
The Spending checking ledger exposes currentBalance, accountNumber and routingNumber, then pages settledTransactions nodes by amount and settledAt, while debit-card records carry lastFour and shippingStatus. Goals envelopes pair per-goal currentBalance with targetAmount, and Dave Rent adds rentDueDate and totalRentAmount. Flex lines report spendingPower, totalOwed and principalOwed; payroll snapshots add avgPaycheckAmount and nextPayrollDates, and linked external banks surface Plaid available and current balances.
Underwriting replay, ledger-reconciliation bots and Flex monitors consume those objects; openData Studio turns them into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Refresh session access token
POST
/v1/session/refreshosintExchanges the stored refresh token for a short-lived access token that is sent as Bearer on every later call.
Auth: No Bearer token yet: the request body carries the long-lived refresh token, and the response returns the short-lived access token used as Authorization: Bearer on later calls.
- refreshToken
- accessToken
POST /v1/session/refresh HTTP/1.1 Content-Type: application/json { "refreshToken": "<refreshToken>" }{ "accessToken": "<accessToken>" }Read ExtraCash approvals
POST
/v1/extracash/approvals/lookupopenfinanceLoads the signed-in member's ExtraCash approvals: maxApprovedAmount, approvalType, bankAccountId and the optional upgrade offer (nextOverdraftOfferAmount).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- overdraftApprovals
- approvalId
- approvalUlid
- approved
- approvalType
- maxApprovedAmount
- initialApprovedAmount
- totalApprovedAmount
- approvedRechargeAmount
- approvedAmounts
- bankAccountId
- expirationDate
- isSplitDraw
- quality
- primaryRejectionReason
- nextOverdraftOfferAmount
- previousOverdraftOfferAmount
POST /v1/extracash/approvals/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "overdraftApprovals": [ { "approvalId": "apr_4412", "approvalUlid": "01J8APPROVALULID", "approved": true, "approvalType": "EXTRA_CASH", "maxApprovedAmount": 25000, "initialApprovedAmount": 10000, "totalApprovedAmount": 25000, "approvedRechargeAmount": 5000, "approvedAmounts": [ 10000, 15000, 25000 ], "bankAccountId": "ba_88c1", "expirationDate": "2026-10-31", "isSplitDraw": false, "quality": "STANDARD", "primaryRejectionReason": null, "upgrade": { "nextOverdraftOfferAmount": 30000, "previousOverdraftOfferAmount": 25000, "version": 3 } } ] }Quote ExtraCash terms
POST
/v1/extracash/terms/quoteopenfinancePrices an ExtraCash draw before it is accepted: requestedAmount, serviceFee, settleableAmount, settlementDate and the chosen disbursementMethod (lastFour).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- termsId
- requestedAmount
- overdraftAmount
- serviceFee
- settleableAmount
- settlementDate
- settlementStrategy
- earlyPayday
- disbursementMethod
- universalId
- displayName
- lastFour
- expressFee
- feeType
POST /v1/extracash/terms/quote HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "requestedAmount": 15000, "disbursementMethod": { "universalId": "pm_dave_1" }, "expressDelivery": false }{ "termsId": "terms_77a1", "requestedAmount": 15000, "overdraftAmount": 15000, "serviceFee": 395, "settleableAmount": 15395, "settlementDate": "2026-10-24", "settlementStrategy": "PAYDAY", "earlyPayday": false, "disbursementMethod": { "universalId": "pm_dave_1", "displayName": "Dave Spending", "lastFour": "4412", "type": "DAVE", "isDefault": true, "isValid": true }, "expressFee": { "type": "EXPRESS", "amount": 299, "percent": 0, "feeType": "FLAT" } }Originate ExtraCash disbursement
POST
/v1/extracash/disbursementsopenfinanceBooks the ExtraCash advance after the member accepts the quoted terms and returns the advance id plus its disbursementId.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- id
- disbursementId
POST /v1/extracash/disbursements HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "termsId": "terms_77a1" }{ "id": "od_19f2", "disbursementId": "disb_55c0" }List ExtraCash transaction activity
POST
/v1/extracash/activity/listopenbankingLists the member's ExtraCash account activity rows (amount, date, description, type) covering disbursements and settlements.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- overdraftAccount
- id
- transactionActivity
- amount
- date
- description
- type
POST /v1/extracash/activity/list HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "overdraftAccount": { "id": "odacct_1", "transactionActivity": [ { "amount": 15000, "date": "2026-10-17", "description": "ExtraCash", "type": "DISBURSEMENT" }, { "amount": -15395, "date": "2026-10-24", "description": "ExtraCash settlement", "type": "SETTLEMENT" } ] } }Read ExtraCash fee schedule
POST
/v1/extracash/fees/lookupopenfinanceReads the member's ExtraCash fee schedule: feeStructure and feeVersion plus per-rail OVERDRAFT_FEE, SERVICE_FEE, EXPRESS_FEE and TRANSFER_FEE bands (minAmount, maxAmount, feeAmount).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- overdraftFees
- feeStructure
- feeVersion
- startFeeVersion
- OVERDRAFT_FEE
- SERVICE_FEE
- EXPRESS_FEE
- TRANSFER_FEE
- minAmount
- maxAmount
- feeAmount
- amountType
POST /v1/extracash/fees/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "overdraftFees": { "feeStructure": "TIERED", "feeVersion": 12, "startFeeVersion": 10, "fees": { "DAVE": { "OVERDRAFT_FEE": { "minAmount": 0, "maxAmount": 25000, "feeAmount": 395, "amountType": "FLAT" }, "SERVICE_FEE": { "minAmount": 0, "maxAmount": 25000, "feeAmount": 0, "amountType": "FLAT" }, "EXPRESS_FEE": { "minAmount": 0, "maxAmount": 25000, "feeAmount": 299, "amountType": "FLAT" }, "TRANSFER_FEE": { "minAmount": 0, "maxAmount": 25000, "feeAmount": 0, "amountType": "FLAT" } } } } }Read Dave Spending account
POST
/v1/spending/account/lookupopenbankingReturns the Dave Spending checking account: currentBalance, accountNumber, routingNumber, status and sponsorBank.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- spendAccount
- id
- status
- accountNumber
- routingNumber
- productCategory
- currentBalance
- platform
- sponsorBank
POST /v1/spending/account/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "spendAccount": { "id": "spend_4412", "status": "ACTIVE", "accountNumber": "000123456789", "routingNumber": "000111222", "productCategory": "CHECKING", "currentBalance": 18452, "platform": "ANDROID", "sponsorBank": "COASTAL" } }Page settled Spending transactions
POST
/v1/spending/transactions/settled/listopenbankingPages the Spending account's settled transactions: pageInfo plus nodes with amount, displayName, transactedAt and settledAt.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- settledTransactions
- pageInfo
- pageSize
- nextPage
- hasNextPage
- nodes
- id
- displayName
- amount
- transactedAt
- transactionType
- statementSummaryType
- settledAt
- source
POST /v1/spending/transactions/settled/list HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "first": 25, "after": null }{ "settledTransactions": { "pageInfo": { "pageSize": 25, "nextPage": "cursor_2", "hasNextPage": true }, "nodes": [ { "id": "txn_9001", "displayName": "Payroll", "amount": 84200, "transactedAt": "2026-10-16T14:02:11Z", "transactionType": "ACH_CREDIT", "statementSummaryType": "DEPOSIT", "settledAt": "2026-10-16T18:00:00Z", "source": "ACH" } ] } }List Spending debit cards
POST
/v1/spending/cards/listopenbankingLists the Spending account's debit cards: lastFour, bin, isVirtual, status and shippingStatus.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- cards
- id
- bankAccountId
- bin
- lastFour
- status
- isVirtual
- isPinLocked
- isDisabled
- isExpiring
- estimatedArrivalOn
- shippingStatus
- cardProducts
POST /v1/spending/cards/list HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "id": "spend_4412", "cards": [ { "id": "card_12ab", "bankAccountId": "spend_4412", "bin": "412345", "lastFour": "4412", "status": "ACTIVE", "isVirtual": false, "isPinLocked": false, "isDisabled": false, "isExpiring": false, "estimatedArrivalOn": "2026-10-22", "shippingStatus": { "status": "SHIPPED", "shippedDate": "2026-10-14", "isReturnedToSender": false } } ], "cardProducts": [ "PHYSICAL", "VIRTUAL" ] }Read Goals accounts overview
POST
/v1/goals/overviewopenbankingLoads the Goals overview: unallocatedAmount, remainingAvailableWithdrawals and each goal's currentBalance versus targetAmount.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- goalsAccounts
- id
- accountId
- status
- unallocatedAmount
- sponsorBank
- remainingAvailableWithdrawals
- isRoundUpEnabled
- roundUpGoalId
- goals
- name
- currentBalance
- targetAmount
- goalStatus
POST /v1/goals/overview HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "goalsAccounts": [ { "id": "gacct_1", "accountId": "goal_bank_1", "status": "ACTIVE", "unallocatedAmount": 2500, "sponsorBank": "COASTAL", "remainingAvailableWithdrawals": 4, "isRoundUpEnabled": true, "roundUpGoalId": "goal_roundup", "goals": [ { "id": "goal_rent", "name": "Rent", "currentBalance": 42000, "targetAmount": 120000, "goalStatus": "OPEN", "isRoundUpGoal": false } ] } ] }Read Flex line of credit
POST
/v1/flex/credit-line/lookupopenfinanceReads the Flex revolving line: spendingPower, totalOwed, principalOwed, feesOwed and the receivables schedule (dueDate, amount).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- flexCardLineOfCredit
- spendingPower
- totalOwed
- principalOwed
- feesOwed
- pendingPurchasesTotal
- approvalAmount
- isApproved
- receivables
- dueDate
- principalAmount
- interestFeeAmount
- participationFeeAmount
- hasDispute
- totalDisputedBalance
POST /v1/flex/credit-line/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "flexCardLineOfCredit": { "spendingPower": 17500, "totalOwed": 8250, "principalOwed": 7800, "feesOwed": 450, "pendingPurchasesTotal": 1200, "approval": { "id": "flexapr_9", "approvalAmount": 25000, "isApproved": true }, "receivables": [ { "dueDate": "2026-11-01", "amount": 8250, "principalAmount": 7800, "interestFeeAmount": 250, "participationFeeAmount": 200 } ], "disputes": { "hasDispute": false, "totalDisputedBalance": 0 } } }Read payroll income snapshot
POST
/v1/income/payroll/snapshotopenfinanceReturns the payroll snapshot used to size ExtraCash: employerName, avgPaycheckAmount, paySchedule, lastPaycheckDate and nextPayrollDates.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- payrollData
- isPayrollConnected
- isEmployed
- employerName
- avgPaycheckAmount
- lastPaycheckDate
- paySchedule
- expectedPaycheckAmount
- nextPayrollDates
- canPayrollBeCalculated
- isPaystubDataAvailable
POST /v1/income/payroll/snapshot HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "payrollData": { "isPayrollConnected": true, "isEmployed": true, "employerName": "Acme Logistics", "avgPaycheckAmount": 84200, "lastPaycheckDate": "2026-10-10", "paySchedule": "BIWEEKLY", "expectedPaycheckAmount": 85000, "nextPayrollDates": [ "2026-10-24", "2026-11-07" ], "canPayrollBeCalculated": true, "isPaystubDataAvailable": true } }List linked external bank accounts
POST
/v1/linked-accounts/listopenbankingLists the member's linked external bank accounts: available and current balances, lastFour, verificationStatus and the aggregator connection (bankingDataSource).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- bdsBankAccounts
- id
- legacyId
- available
- current
- lastFour
- verificationStatus
- displayName
- bankingDataSource
- hasValidCredentials
- hasReceivedTransactions
POST /v1/linked-accounts/list HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "filterType": "ALL" }{ "bdsBankAccounts": [ { "id": "bds_88c1", "legacyId": "legacy_12", "available": 41233, "current": 43010, "lastFour": "0091", "verificationStatus": "VERIFIED", "displayName": "Checking", "institution": { "displayName": "Example Bank" }, "bankConnection": { "bankingDataSource": "PLAID", "hasReceivedTransactions": true, "hasValidCredentials": true, "deleted": false } } ] }Read Dave Rent account
POST
/v1/rent/account/lookupopenfinanceReturns the Dave Rent account: balance, account and routing details, feeSchedule.participationFee and the current rentCycle (totalRentAmount, overdraftLimit).
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- rentAccount
- id
- status
- balance
- accountNumber
- routingNumber
- accountType
- partnerBank
- feePercentage
- participationFee
- rentDueDate
- totalRentAmount
- overdraftLimit
- estimatedSettlementAmount
- maxBalanceLimit
POST /v1/rent/account/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json {}{ "rentAccount": { "id": "rent_3", "status": "ACTIVE", "balance": 60000, "accountNumber": "000987654321", "routingNumber": "000111222", "accountType": "RENT", "partnerBank": "COASTAL", "feeSchedule": { "feePercentage": 5.0, "participationFee": 500 }, "rentCycle": { "status": "OPEN", "rentDueDate": "2026-11-01", "rentWindowStart": "2026-10-25", "rentWindowEnd": "2026-11-01", "totalRentAmount": 145000, "overdraftLimit": 50000, "estimatedSettlementAmount": 85000 }, "transferLimits": { "maxDepositAmountPerTransfer": 200000, "maxWithdrawalAmountPerTransfer": 200000, "maxBalanceLimit": 250000 } } }Mint Pinwheel payroll link token
POST
/v1/payroll/link-tokensopenfinanceMints a short-lived payroll link token (id, token, expires) so the app can open the third-party payroll connection widget and attach payroll to a bankAccountId.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- pinwheelLinkToken
- id
- expires
- token
- bankAccountId
POST /v1/payroll/link-tokens HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "bankAccountId": "spend_4412" }{ "pinwheelLinkToken": { "id": "pw_tok_18", "expires": "2026-10-17T16:30:00Z", "token": "<linkToken>" } }Read direct-deposit allocation
POST
/v1/direct-deposit/allocation/lookupopenbankingReads the direct-deposit allocation for the Spending account: ddAllocationAmount, bankAccountId, employerName and isPayrollConnected.
Auth: Authorization: Bearer access token issued by the session refresh call. Step-up challenges (email, MFA, password or document check) are completed through the sign-in challenge flow first.
- ddAllocationData
- ddAllocationAmount
- ddAllocationCreationDate
- bankAccountId
- isEmployed
- employerName
- isPayrollConnected
POST /v1/direct-deposit/allocation/lookup HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "accountType": "SPEND" }{ "ddAllocationData": { "ddAllocationAmount": 50000, "ddAllocationCreationDate": "2026-09-02", "bankAccountId": "spend_4412", "isEmployed": true, "employerName": "Acme Logistics", "isPayrollConnected": true } }
Data categories
- extra-cash
- balances
- transactions
- linked-accounts
- income
- goals
- credit-lines
- rent
- debit-cards
- fees
- direct-deposit
Where teams use this data
ExtraCash underwriting replay
A lender or personal-finance coach pulls overdraftApprovals.maxApprovedAmount together with payrollData.avgPaycheckAmount, paySchedule and nextPayrollDates, then compares serviceFee from OverdraftTermsSuccess so a draw is sized against documented income rather than a screenshot.
Spending ledger reconciliation
Bookkeeping bots read SpendAccount.currentBalance, accountNumber and routingNumber, then page settledTransactions nodes (amount, displayName, transactedAt, settledAt) to match payroll credits and card debits against an external GL.
Flex credit-line monitoring
Collections or budgeting tools subscribe to FlexCardLineOfCredit.spendingPower, totalOwed, principalOwed and receivables.dueDate so a household sees remaining spend power and the next Flex installment without opening the card tab.
Direct-deposit and linked-bank verification
Onboarding flows confirm bdsBankAccounts.available/current plus verificationStatus, then read ddAllocationData.ddAllocationAmount and pinwheelLinkToken to prove payroll is pointed at the Dave Spending account.
Frequently asked questions
What ExtraCash fields can I read?
The approvals call returns maxApprovedAmount, approvalType, bankAccountId and approvedRechargeAmount for the member's current offers. The terms quote adds requestedAmount, serviceFee, settleableAmount and settlementDate; the fee schedule lists OVERDRAFT_FEE and EXPRESS_FEE bands; and the activity list pages amount, date, description and type.
Does Dave expose a checking ledger, not just advances?
Yes. The Spending account lookup returns currentBalance, accountNumber, routingNumber and sponsorBank. The settled-transactions list pages nodes with amount, displayName, transactedAt and settledAt, and the card list returns lastFour, bin and shippingStatus.
How are these calls authenticated?
A session-refresh call exchanges a refreshToken for a short-lived accessToken, which travels as Authorization: Bearer on every later request. Sign-in step-up challenges (email, MFA, password or document verification) are completed before the token is issued.
Is Flex a separate credit line from ExtraCash?
Yes. The Flex credit-line call reads spendingPower, totalOwed, principalOwed, feesOwed and receivables due dates for the revolving Flex card line, which is distinct from the ExtraCash maxApprovedAmount advance limit.
Apps similar to Dave: Credit, Cash & Money App
- EarnIn — EarnIn is a US earned-wage access app that lets workers Cash Out wages they have already earned before payday, with no interest, no credit check and no mandatory fees, up to $200 a day and $1,000 per pay period.
- Brigit — Brigit is a US cash-advance and credit-builder app that offers Instant Cash advances of $25–$500 with no credit check and no late fees, plus overdraft predictions and credit monitoring.
- MoneyLion — MoneyLion Instacash advances up to $500 with no interest, no credit check and no mandatory fees, with free standard delivery in 1–5 business days or optional instant Turbo delivery, and a higher limit for qualifying MoneyLion Spend direct deposits.
- Possible Finance — Possible Advance is a US paycheck cash advance of up to $300 with no late fees and no credit check, offered alongside Possible loans of up to $500 that can be repaid over time.
- FloatMe — FloatMe is a US cash-advance app that offers interest-free Floats of up to $200 with no credit check and no late fees, repaid on the next payday, plus budgeting and credit-monitoring tools on a monthly membership.
- Current — Current is a US neobank whose Paycheck Advance lets eligible members with payroll deposits of $200 or more draw up to $1,000 against the next paycheck with no credit check.
- Chime — Chime MyPay is an earned-wage access feature for eligible Chime checking members with direct deposit, advancing $20–$500 per pay period at no interest, with a $2 fee only if the member chooses expedited funding.
- Klover — Klover is a US cash-advance app that lets users link a bank account and take an advance with no credit check, no interest and no late fees, alongside budgeting tools and points that can raise the advance amount.
Topics
- dave extracash api
- dave spending account
- dave flex card
- maxApprovedAmount
- currentBalance
- spendingPower
- dave overdraft
- dave payroll
- dave goals
- dave rent account
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