Happycash-Easy and happy loan icon

HappyCash peso loan data surface

YINSHAN LENDING INC. · Lending

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

  • Happycash-Easy and happy loan screenshot 1
  • Happycash-Easy and happy loan screenshot 2
  • Happycash-Easy and happy loan screenshot 3
  • Happycash-Easy and happy loan screenshot 4
  • Happycash-Easy and happy loan screenshot 5
  • Happycash-Easy and happy loan screenshot 6
  • Happycash-Easy and happy loan screenshot 7
  • Happycash-Easy and happy loan screenshot 8

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/otp osint

    Sends 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/session osint

    Exchanges 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/submissions osint

    Files 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/status osint

    Polls 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/limit openfinance

    Returns 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/quote openfinance

    Reproduces 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/loans openfinance

    Submits 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}/schedule openfinance

    Returns 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/loans openfinance

    Pages 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/accounts openbanking

    Registers 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/repayments openfinance

    Records 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/repayments openfinance

    Pages 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

Get a quote