HappyCash peso loan data surface
HappyCash is YINSHAN LENDING INC.'s peso cash-loan client for borrowers in the Philippines, operated under the HappyCash business name from The World Center on Gil Puyat Avenue in Makati as an SEC-regulated finance company (registration CS201900108, Certificate of Authority No. 2860). Sign-up runs on an active Philippine mobile number, after which applicants fill in the online loan forms, upload one government-issued ID with a selfie, and describe a stable income; lending is limited to Filipino citizens aged 18 and over. The app quotes PHP 2,000 to PHP 25,000 over 91 to 180 days with a 0% processing fee and a stated maximum APR of 180%, shows a worked representative example that prices PHP 20,000 over 91 days at a 15% annual interest rate plus the 10% service fee (PHP 22,747.9 in total, PHP 7,582.6 a month), and generates a Truth-in-Lending disclosure statement before release; its Play tagline, 'No Tago-Tago Fees', pairs with a pledge of the full amount and no hidden fees. Approved cash goes to the borrower's preferred cash-out method, a bank account or GCash, and is repaid in installments through in-app payment instructions, with limit increases offered to on-time payers and support through Facebook, [email protected] and two customer-service phone lines open 9 am to 6 pm, Monday to Sunday. Google Play lists 1M+ installs and a 4.8 rating from roughly 182,000 reviews.
Disbursed peso cash lands on a dated ledger: creditLimit, usedLimit and availableLimit shift as each advance is drawn, while the quote record pins the whole cost of a loan in principalAmount, serviceFee, interestAmount, apr and totalRepayment under a single disclosureNo. After release, the same account carries an amortization of installmentNo, dueDate, principalDue, interestDue, feeDue and penaltyFee that a treasury or collections team can reconcile against actual payments, and each settled repayment adds paidAmount, channel, referenceNo, receiptNo and remainingBalance.
Two supporting records round out the account: the identity file keeps idType, livenessScore, kycStatus and rejectReason along with the requiredItems a borrower must resubmit, and the payout record holds accountType, bankCode, maskedAccountNo, verified and isDefault for the account that receives the cash.
Sanctioned limits, a priced quote and a dated installment plan are what risk models, collections desks and budgeting tools otherwise rebuild by hand from disclosure statements and payment receipts. As callable open data they support pre-due-date nudges keyed on dueDate and totalDue, re-loan timing driven by eligibleForIncrease and limitStatus, collections queues ranked by overdueDays and outstandingBalance, and pricing comparisons across lenders built on apr and totalRepayment; openData Studio exposes the surface with stable field names and one auth contract.
Screenshots
API surface
Request/response examples are illustrative, reconstructed from the app's interface — not a live capture.
Send a sign-up or sign-in OTP
POST
/v1/happycash/auth/otposintSends a six-digit SMS or voice code to the number captured at registration, returns the requestId consumed by the verify step, and enforces the resend window the app shows as a countdown.
Auth: No token. JSON POST bound to the handset through X-Device-Id and X-App-Version headers; the same endpoint serves first-time registration and later sign-ins on an active Philippine mobile number.
- mobile
- channel
- scene
- deviceId
- requestId
- maskedMobile
- expiresIn
- retryAfter
POST /v1/happycash/auth/otp HTTP/1.1 Content-Type: application/json X-Device-Id: 3f6a1c92-7d4e-4b0a-9c11-2e7f8a5b6c31 X-App-Version: 1.2.32 { "mobile": "09171234567", "channel": "SMS", "scene": "REGISTER", "deviceId": "3f6a1c92-7d4e-4b0a-9c11-2e7f8a5b6c31" }{ "requestId": "otp_88f2c1a7", "maskedMobile": "0917****567", "channel": "SMS", "expiresIn": 300, "retryAfter": 60 }Verify OTP and open a session
POST
/v1/happycash/auth/sessionosintExchanges the OTP for a session token and flags first-time registrations so onboarding opens the loan forms; the returned kycStatus decides whether the home screen shows verification or the amount selector.
Auth: No token; the requestId from the OTP step plus the six-digit code. A successful verify returns accessToken and refreshToken, and every later call sends Authorization: Bearer <accessToken>.
- requestId
- otpCode
- deviceId
- referralCode
- accessToken
- refreshToken
- userId
- isNewUser
- kycStatus
- expiresIn
POST /v1/happycash/auth/session HTTP/1.1 Content-Type: application/json X-Device-Id: 3f6a1c92-7d4e-4b0a-9c11-2e7f8a5b6c31 { "requestId": "otp_88f2c1a7", "otpCode": "481920", "deviceId": "3f6a1c92-7d4e-4b0a-9c11-2e7f8a5b6c31", "referralCode": null }{ "accessToken": "<access-token>", "refreshToken": "<refresh-token>", "userId": "hc_55231047", "isNewUser": true, "kycStatus": "NOT_STARTED", "expiresIn": 7200 }Submit ID and selfie for KYC
POST
/v1/happycash/kyc/submissionsosintFiles one government-issued ID (front, back and a selfie with a liveness score) together with address and income details for underwriting review, matching the eligibility rules the app states: 18+, Filipino citizen, one valid ID, stable income.
Auth: Authorization: Bearer <access-token>, sent as multipart/form-data. The app captures the ID and selfie with the handset camera, so the flow also needs the CAMERA permission the listing declares.
- idType
- idNumber
- frontImage
- backImage
- selfieImage
- livenessScore
- address
- employmentType
- monthlyIncome
- submissionId
- kycStatus
- reviewEtaHours
POST /v1/happycash/kyc/submissions HTTP/1.1 Authorization: Bearer <access-token> Content-Type: multipart/form-data; boundary=----hcKyc9f21 ------hcKyc9f21 Content-Disposition: form-data; name="idType" PH_UMID ------hcKyc9f21 Content-Disposition: form-data; name="idNumber" CRN-0042-1182736-1 ------hcKyc9f21 Content-Disposition: form-data; name="frontImage"; filename="front.jpg" Content-Type: image/jpeg <binary> ------hcKyc9f21 Content-Disposition: form-data; name="backImage"; filename="back.jpg" Content-Type: image/jpeg <binary> ------hcKyc9f21 Content-Disposition: form-data; name="selfieImage"; filename="selfie.jpg" Content-Type: image/jpeg <binary> ------hcKyc9f21 Content-Disposition: form-data; name="livenessScore" 0.97 ------hcKyc9f21 Content-Disposition: form-data; name="monthlyIncome" 28000 ------hcKyc9f21--{ "submissionId": "kyc_20261025_4471", "kycStatus": "PENDING", "reviewEtaHours": 24, "requiredItems": [] }Read KYC review state
GET
/v1/happycash/kyc/statusosintPolls the review result so the home screen knows whether to open the amount selector or a resubmission prompt; rejectReason drives the retry copy and requiredItems lists exactly which captures must be redone.
Auth: Authorization: Bearer <access-token>.
- kycStatus
- requiredItems
- rejectReason
- verifiedAt
- canApply
- nextReviewAt
GET /v1/happycash/kyc/status HTTP/1.1 Authorization: Bearer <access-token>{ "kycStatus": "REJECTED", "requiredItems": [ "ID_BACK_IMAGE", "SELFIE" ], "rejectReason": "ID_BACK_BLURRY", "verifiedAt": null, "canApply": false, "nextReviewAt": "2026-10-26T09:00:00+08:00" }Read sanctioned and available credit limit
GET
/v1/happycash/credit/limitopenfinanceReturns the sanctioned ceiling inside the advertised PHP 2,000 to PHP 25,000 band, how much is still drawable, and whether on-time repayment has unlocked the next increase.
Auth: Authorization: Bearer <access-token>.
- creditLimit
- availableLimit
- usedLimit
- limitStatus
- currency
- nextReviewDate
- eligibleForIncrease
GET /v1/happycash/credit/limit HTTP/1.1 Authorization: Bearer <access-token>{ "creditLimit": 25000, "availableLimit": 25000, "usedLimit": 0, "limitStatus": "ACTIVE", "currency": "PHP", "nextReviewDate": "2027-01-25", "eligibleForIncrease": false }Quote a loan and price the disclosure
POST
/v1/happycash/loans/quoteopenfinanceReproduces the in-app calculator: principal and term in, interest, the 10% service fee, total repayment, monthly installment and the disclosure number out, so the borrower sees the full cost before applying.
Auth: Authorization: Bearer <access-token>.
- principalAmount
- termDays
- disbursementAccountId
- promoCode
- quoteId
- dailyInterestRate
- interestAmount
- serviceFee
- totalRepayment
- monthlyInstallment
- apr
- disclosureNo
- validUntil
POST /v1/happycash/loans/quote HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "principalAmount": 20000, "termDays": 91, "disbursementAccountId": "acc_778120", "promoCode": null }{ "quoteId": "q_20261025_8812", "principalAmount": 20000, "termDays": 91, "dailyInterestRate": 0.0015, "interestAmount": 747.9, "serviceFee": 2000, "totalRepayment": 22747.9, "monthlyInstallment": 7582.6, "apr": 1.8, "disclosureNo": "TILA-2026-10-004471", "validUntil": "2026-10-25T23:59:59+08:00" }Submit a loan application
POST
/v1/happycash/loansopenfinanceSubmits the priced quote as an application together with the three consent flags the app collects, and returns the loan id that the schedule and repayment endpoints address.
Auth: Authorization: Bearer <access-token>.
- quoteId
- loanPurpose
- disbursementAccountId
- consent.truthInLending
- consent.privacyPolicy
- consent.dataProcessing
- loanId
- loanStatus
- submittedAt
- estimatedDecisionMinutes
- disclosureNo
POST /v1/happycash/loans HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "quoteId": "q_20261025_8812", "loanPurpose": "WORKING_CAPITAL", "disbursementAccountId": "acc_778120", "consent": { "truthInLending": true, "privacyPolicy": true, "dataProcessing": true } }{ "loanId": "loan_9917204", "loanStatus": "UNDER_REVIEW", "submittedAt": "2026-10-25T08:12:41+08:00", "estimatedDecisionMinutes": 10, "disclosureNo": "TILA-2026-10-004471" }Read a loan's installment schedule
GET
/v1/happycash/loans/{loanId}/scheduleopenfinanceReturns the amortization rendered on the loan-detail screen, one row per due date with the principal, interest and fee split, so the borrower can see exactly what each of the three monthly installments covers.
Auth: Authorization: Bearer <access-token>.
- loanId
- principalAmount
- termDays
- installmentCount
- totalRepayment
- installments.installmentNo
- installments.dueDate
- installments.principalDue
- installments.interestDue
- installments.feeDue
- installments.totalDue
- installments.penaltyFee
- installments.status
- installments.paidAt
GET /v1/happycash/loans/loan_9917204/schedule HTTP/1.1 Authorization: Bearer <access-token>{ "loanId": "loan_9917204", "principalAmount": 20000, "termDays": 91, "installmentCount": 3, "totalRepayment": 22747.9, "installments": [ { "installmentNo": 1, "dueDate": "2026-11-25", "principalDue": 6666.67, "interestDue": 249.3, "feeDue": 666.67, "totalDue": 7582.6, "penaltyFee": 0, "status": "UNPAID", "paidAt": null } ] }List loans with balances
GET
/v1/happycash/loansopenfinancePages current and past loans with outstanding balance and overdue days, backing the home-screen card that shows what is due next and the history list in the account tab.
Auth: Authorization: Bearer <access-token>.
- status
- page
- total
- pageSize
- loans.loanId
- loans.loanStatus
- loans.principalAmount
- loans.outstandingBalance
- loans.overdueDays
- loans.nextDueDate
- loans.disbursedAt
GET /v1/happycash/loans?status=ALL&page=1 HTTP/1.1 Authorization: Bearer <access-token>{ "total": 1, "page": 1, "pageSize": 20, "loans": [ { "loanId": "loan_9917204", "loanStatus": "ACTIVE", "principalAmount": 20000, "outstandingBalance": 15165.2, "overdueDays": 0, "nextDueDate": "2026-11-25", "disbursedAt": "2026-10-25T09:40:12+08:00" } ] }Bind a GCash or bank payout account
POST
/v1/happycash/disbursement/accountsopenbankingRegisters the cash-out destination the app advertises, GCash or a bank account, and verifies ownership by OTP before it can be selected for a disbursement.
Auth: Authorization: Bearer <access-token>; the account is bound only after the OTP issued for the same session is confirmed.
- accountType
- bankCode
- accountNo
- accountName
- otpRequestId
- otpCode
- accountId
- maskedAccountNo
- verified
- isDefault
POST /v1/happycash/disbursement/accounts HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "accountType": "EWALLET", "bankCode": "GCASH", "accountNo": "09171234567", "accountName": "JUAN DELA CRUZ", "otpRequestId": "otp_71bb04e9", "otpCode": "903118" }{ "accountId": "acc_778120", "accountType": "EWALLET", "bankCode": "GCASH", "maskedAccountNo": "0917****567", "accountName": "JUAN DELA CRUZ", "verified": true, "isDefault": true }Record an installment repayment
POST
/v1/happycash/repaymentsopenfinanceRecords a payment against one installment, returns the receipt number and recalculated balance, and moves the next due date forward once the amount clears.
Auth: Authorization: Bearer <access-token>, plus an OTP confirmation for the payment amount.
- loanId
- installmentNo
- amount
- channel
- referenceNo
- otpCode
- paymentId
- paymentStatus
- paidAmount
- paidAt
- remainingBalance
- receiptNo
- nextDueDate
POST /v1/happycash/repayments HTTP/1.1 Authorization: Bearer <access-token> Content-Type: application/json { "loanId": "loan_9917204", "installmentNo": 1, "amount": 7582.6, "channel": "GCASH", "referenceNo": "HC20261025000118", "otpCode": "552907" }{ "paymentId": "pay_3320771", "paymentStatus": "SUCCESS", "paidAmount": 7582.6, "paidAt": "2026-11-24T19:05:33+08:00", "remainingBalance": 15165.3, "receiptNo": "RCPT-2026-11-024418", "nextDueDate": "2026-12-25" }Page the repayment receipt history
GET
/v1/happycash/repaymentsopenfinancePages the receipt history so a borrower, or a reconciliation job, can match each payment to an installment and spot partial, repeated or reversed transactions.
Auth: Authorization: Bearer <access-token>.
- loanId
- page
- pageSize
- total
- payments.paymentId
- payments.installmentNo
- payments.paidAmount
- payments.paidAt
- payments.channel
- payments.referenceNo
- payments.receiptNo
- payments.paymentStatus
GET /v1/happycash/repayments?loanId=loan_9917204&page=1&pageSize=20 HTTP/1.1 Authorization: Bearer <access-token>{ "total": 2, "page": 1, "pageSize": 20, "payments": [ { "paymentId": "pay_3320771", "loanId": "loan_9917204", "installmentNo": 1, "paidAmount": 7582.6, "paidAt": "2026-11-24T19:05:33+08:00", "channel": "GCASH", "referenceNo": "HC20261025000118", "receiptNo": "RCPT-2026-11-024418", "paymentStatus": "SUCCESS" } ] }
Data categories
- KYC identity records
- credit limits
- loan quotes
- installment schedules
- payout accounts
- repayment receipts
Where teams use this data
Pre-due-date nudges for peso borrowers
A budgeting app reads dueDate, totalDue and installmentNo from the schedule and warns a borrower before a collection date, with the exact amount still owed on each installment.
Credit-limit and re-loan monitoring
Lenders and brokers track creditLimit, availableLimit, kycStatus and limitStatus to time a re-loan offer or a limit increase for on-time payers.
Collections queues ranked by arrears
A collections workflow sorts accounts on overdueDays and outstandingBalance, and pulls penaltyFee to quote a cure amount before escalation.
Effective-pricing comparison across lenders
Comparison tools line up principalAmount, serviceFee, apr and totalRepayment from each quote to show the true cost of a peso cash loan.
Frequently asked questions
What loan terms does HappyCash advertise?
Credit limits run from PHP 2,000 to PHP 25,000 over 91 to 180 days, with a 0% processing fee and a stated maximum APR of 180%. The worked example prices PHP 20,000 over 91 days at a 15% annual interest rate plus a 10% service fee, for PHP 22,747.9 in total, and the app generates a Truth-in-Lending disclosure statement before a loan is released.
Which repayment data can an integration read?
The installment schedule returns installmentNo, dueDate, principalDue, interestDue, feeDue, totalDue, penaltyFee and a paid status per row, while the repayment history adds paidAmount, channel, referenceNo and receiptNo for each settled payment.
How does HappyCash verify a borrower?
Registration starts with a mobile-number OTP, then the loan forms collect one government-issued ID with front, back and selfie captures plus a liveness score, address and income details. The listing restricts applicants to Filipino citizens aged 18 and over with a stable income.
Where does the money go and where is it repaid?
Approved cash is disbursed to the borrower's preferred cash-out method, a bank account or GCash, and installments are repaid through the payment channels shown in the app, each producing a receipt number and an updated remaining balance.
Apps similar to Happycash-Easy and happy loan
- Home Credit Philippines — Home Credit Philippines (HC Consumer Finance Philippines, Inc.) offers cash loans from ₱3,000 to ₱150,000 and 6- to 24-month product installment plans, and states SEC registration CS201301354 with Certificate of Authority 1071.
- Cashalo — Cashalo is PALOO FINANCING, INC.'s Philippine cash-loan service, which the company states is SEC-registered as CS201800209 with Certificate of Authority 1162.
- Billease — Billease is First Digital Finance Corporation's Philippine buy-now-pay-later and cash-loan app that advertises credit of up to ₱50,000 for partner-store purchases, QR Ph payments, or cash-out to a bank or e-wallet, and cites SEC Certificate of Authority 1101.
- Tonik Bank — Tonik is a Bangko Sentral ng Pilipinas-regulated Philippine digital bank whose app advertises a Credit Builder Loan of up to 50K, with deposits described as PDIC-insured up to ₱1 million per depositor.
Topics
- HappyCash API
- Happycash Easy and happy loan
- Philippines loan app data
- peso cash loan API
- credit limit API
- KYC identity data
- installment schedule API
- repayment receipt API
- open lending data
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