Easycash Pinjaman Daring Data API
Easycash - Pinjaman Daring is the unsecured online cash-loan app from PT Indonesia Fintopia Technology, an OJK-licensed and OJK-supervised Indonesian fintech headquartered at Menara Dea 2, Floors 18–20, Jalan Mega Kuningan Barat 1-2 Kav E4 Setiabudi, East Kuningan, South Jakarta 12950. Borrowers aged 18 and over apply with no collateral for Rp100.000 to Rp100.000.000 over tenors of 3–12 months at a published maximum 36% APR and no extra admin fee; a listed promo prices Rp5.000.000 at 0.1% per day for 90 days as Rp450.000 interest (total Rp5.450.000, about Rp1.816.667 a month). After review, funds land in a bank account, and repayment runs through ATM, mobile and internet banking, OVO, Alfamart and Alfamidi with partner banks BCA, Mandiri, BRI, BNI and CIMB. The same Android client also hosts Investaja for lenders. Borrower support is [email protected] and +62 811-4150-0866 (Monday–Sunday 8:00–20:00), lender support [email protected], Instagram @easycashid. Google Play lists a 4.62 rating across 2,762,206 ratings and 50 million-plus installs, competing with Kredivo and Akulaku for Indonesian pinjaman users.
Cash-loan remainingCredit sits against totalCredit on the home card, with tempCredit as a time-boxed top-up; the Me tab restates the same line as homepageRemainCredits, quotaTotal and quotaUsed. Underwriting state arrives as creditsStatus (NOT_APPLIED through ACCEPTED or REJECTED) plus in-review waitingSecond.
A draw quote returns loanAmount, receivedAmount, totalFee and repayAmount with instalment rows of owedAmount and owedPrincipal. Posted orders carry principal, interest, loanDays and displayStatus. Unpaid bills list instalmentId, billingDate and totalUnpaidAmount; a collection discount can lower the due to adjustedAmount. Repayment rails mint accountNumber per channelType (BCA, Mandiri, BRI, BNI, CIMB, OVO). Bound payout accounts expose credentialId, bankName and accountNumber. KYC progress is unfinishedSteps / finishedSteps with hasIdentityNumber for the KTP NIK. Collection desks and lending-stack bots stitch those fields into nightly limit monitors and VA reconciliation; openData Studio turns the same surface 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.
Password login
POST
/v1/borrower/sign-inosintSigns the borrower in with mobileNumber and password (loginMode PASSWORD, selectedSDKType IDN_YQD). The JSON body returns name, loanVipUser and traceId; the session token is the Set-Cookie userToken later attached as Cookie and YQG-PLATFORM-USER-TOKEN.
Auth: JSON body mobileNumber + password; loginMode=PASSWORD, selectedSDKType=IDN_YQD. Set-Cookie userToken is stored by the client and replayed as Cookie userToken plus YQG-PLATFORM-USER-TOKEN
- mobileNumber
- name
- hasPassword
- loanVipUser
- newlyRegistered
- nextPage
- selectedSDKType
- traceId
- userToken
POST /v1/borrower/sign-in HTTP/1.1 Content-Type: application/json CHANNEL: EASYCASH_GOOGLEPLAY_ID platformType: ANDROID clientType: NATIVE_ANDROID YQG-PLATFORM-SDK-TYPE: IDN_YQD YQG-PLATFORM-PACKAGE_NAME: com.fintopia.idnEasycash.google build: 39713 { "mobileNumber": "081234567890", "password": "********", "loginMode": "PASSWORD", "selectedSDKType": "IDN_YQD", "isFirstOpenLoginPage": "false", "appsflyerId": "af-uid", "appInstanceId": "fi-instance" }HTTP/1.1 200 OK Set-Cookie: userToken=utk_8f21c0ab; Path=/; Secure; HttpOnly { "status": { "code": 0, "detail": "OK" }, "body": { "hasPassword": true, "loanVipUser": false, "migration": false, "mobileNumber": "081234567890", "name": "Siti Nurhaliza", "newlyRegistered": false, "nextPage": "HOME", "selectedSDKType": "IDN_YQD", "showVipUIOfMePage": false, "traceId": "tr-91ab" } }Cash-loan home credits
GET
/v1/credit/summaryopenfinanceLoads the signed-in home card: remainingCredit against totalCredit, optional tempCredit, displayStatus / exactStatus, and the repayment strip (recentUnpaidAmount, totalUnpaidAmount, recentlyBillingDate) plus product minAmount / maxAmount / stepAmount.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- remainingCredit
- totalCredit
- tempCredit
- displayStatus
- exactStatus
- firstLoan
- latestPayoutSuccessOrderId
- recentUnpaidAmount
- totalUnpaidAmount
- recentlyBillingDate
- minAmount
- maxAmount
- maxTerms
- stepAmount
GET /v1/credit/summary?triggerSource=HOME HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID platformType: ANDROID clientType: NATIVE_ANDROID YQG-PLATFORM-SDK-TYPE: IDN_YQD{ "status": { "code": 0, "detail": "OK" }, "body": { "userInfo": { "remainingCredit": 4500000, "totalCredit": 8000000, "tempCredit": 500000, "displayStatus": "ENABLE_CREATE_ORDER", "exactStatus": "READY", "firstLoan": false, "latestPayoutSuccessOrderId": 882144, "loanVipUser": false, "repayment": { "orderId": "882144", "overdue": false, "recentUnpaidAmount": 1816667, "recentlyBillingDate": 1761321600000, "totalUnpaidAmount": 5450000, "seriouslyOverdue": false } }, "product": { "minAmount": 100000, "maxAmount": 10000000, "maxTerms": 12, "stepAmount": 100000, "defaultChooseProductId": "P-90D" } } }Me-tab credit quota
GET
/v1/profile/credit-lineopenfinanceReads the Me-tab quota card: homepageRemainCredits, quotaTotal, quotaUsed and creditQuotaStatus, plus userProfile.mobileNumber / emailContent and walletAmount.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- homepageRemainCredits
- quotaTotal
- quotaUsed
- creditQuotaStatus
- mobileNumber
- emailContent
- profileUrl
- walletAmount
- showDirectDebitEntrance
GET /v1/profile/credit-line HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID platformType: ANDROID clientType: NATIVE_ANDROID{ "status": { "code": 0, "detail": "OK" }, "body": { "creditInfo": { "homepageRemainCredits": 4500000, "quotaTotal": 8000000, "quotaUsed": 3500000, "creditQuotaStatus": "ACCEPTED" }, "userProfile": { "mobileNumber": "081234567890", "profileUrl": "https://cdn.example.com/p/siti.jpg", "emailContent": "[email protected]" }, "walletInfo": { "walletAmount": "0", "walletText": "Saldo", "walletUrl": "https://app.example.com/wallet" }, "showDirectDebitEntrance": true } }Credit-application status
GET
/v1/credit/application-statusopenfinanceReturns the underwriting funnel state creditsStatus (NOT_APPLIED, IN_REVIEW, ACCEPTED, REJECTED, CANCELLED, IMAGE_REVIEW_REJECTED) plus in-review timers passedTime / waitingSecond and flags jumpToCreateOrderPage, triggerAuthFlow.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- creditsStatus
- passedTime
- waitingSecond
- jumpToCreateOrderPage
- jumpToLiving
- triggerAuthFlow
GET /v1/credit/application-status HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "creditsStatus": "IN_REVIEW", "inReviewResponse": { "passedTime": 1800, "waitingSecond": 5400, "showHomeSmeEntrance": false }, "jumpToCreateOrderPage": false, "jumpToLiving": false, "triggerAuthFlow": true } }Fee quote for amount
GET
/v1/loans/quoteopenfinanceQuotes a cash-loan draw: loanAmount vs receivedAmount, totalFee, repayAmount, firstRepayAmount, days/terms, and instalmentPlanList rows with owedAmount, owedPrincipal and owedPostInterest.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- loanAmount
- receivedAmount
- repayAmount
- totalFee
- firstRepayAmount
- days
- terms
- productId
- owedAmount
- owedPrincipal
- owedPostInterest
- billingDate
GET /v1/loans/quote?productId=P-90D&amount=5000000&couponId=0 HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "loanAmount": 5000000, "receivedAmount": 5000000, "repayAmount": 5450000, "totalFee": 450000, "firstRepayAmount": "1816667", "days": 90, "terms": 3, "productId": "P-90D", "instalmentPlanList": [ { "termIdx": 1, "owedAmount": 1816667, "owedPrincipal": 1666667, "owedPostInterest": 150000, "billingDate": 1761321600000, "title": "Cicilan 1" } ] } }Create cash-loan order
POST
/v1/loansopenfinanceSubmits a cash-loan draw (principal, productId, paymentMethod, paymentCredentialId) and returns EasyCashOrder id, actualAmount, interest, loanDays, terms, displayStatus and totalInitialRepayAmount.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- id
- principal
- actualAmount
- interest
- loanDays
- remainDays
- terms
- displayStatus
- billingDate
- timeCreated
- timeDeposited
- totalInitialRepayAmount
- repayType
- isCompleted
POST /v1/loans HTTP/1.1 Content-Type: application/json Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID { "principal": "5000000", "productId": "P-90D", "paymentMethod": "BANK_ACCOUNT", "paymentCredentialId": "cred-441", "verificationCode": "123456", "scene": "NORMAL", "loanAllAmount": false }{ "status": { "code": 0, "detail": "OK" }, "body": { "message": "OK", "order": { "id": "882144", "principal": 5000000, "actualAmount": 5000000, "interest": 450000, "loanDays": 90, "remainDays": 90, "terms": 3, "displayStatus": "PAYING", "billingDate": 1761321600000, "timeCreated": 1758643200000, "timeDeposited": 0, "totalExtraFee": 0, "totalInitialRepayAmount": 1816667, "repayType": "INSTALMENT", "isCompleted": false } } }All cash-loan orders
GET
/v1/loans/recordsopenfinancePages the borrower's cash-loan history: orderId, principal, unpaidAmount, status, terms, repaymentTime and restructure on each OrderRecordInfo plus body.total.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- orderId
- principal
- unpaidAmount
- status
- terms
- repaymentTime
- displayTime
- restructure
- content
- total
GET /v1/loans/records?status=&offset=0&limit=20 HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "total": 2, "data": [ { "orderId": "882144", "principal": 5000000, "unpaidAmount": 5450000, "status": "PAYING", "terms": 3, "repaymentTime": 1761321600000, "displayTime": 1758643200000, "restructure": false, "content": "Cicilan berjalan" } ] } }Instalment bill list
GET
/v1/bills/instalmentsopenfinanceLists unpaid instalments for the bills screen: instalmentId, amount, billingDate / billingDateDesc, millisToBillingDate, plus body.totalUnpaidAmount and urgentUnpaidAmount on AmountResponse.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- instalmentId
- orderId
- amount
- billingDate
- billingDateDesc
- millisToBillingDate
- disable
- total
- totalUnpaidAmount
- urgentUnpaidAmount
GET /v1/bills/instalments?status=UNPAID HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "total": 3, "totalUnpaidAmount": 5450000, "instalmentList": [ { "instalmentId": "inst-1", "orderId": "882144", "amount": 1816667, "billingDate": 1761321600000, "billingDateDesc": "25 Okt 2026", "millisToBillingDate": 864000000, "disable": false } ], "amountResponse": { "urgentUnpaidAmount": "1816667", "urgentUnpaidAmountTitle": "Jatuh tempo", "totalUnpaidAmountDesc": "Rp5.450.000" } } }Instalment repayment quote
POST
/v1/bills/repayment-quoteopenfinanceReprices a selected instalment repayment: CollectionReduction.adjustedAmount when a collection discount is enabled, with the tip shown on the repay sheet.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- adjustedAmount
- enabled
- tip
POST /v1/bills/repayment-quote HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID scene=NORMAL&amount=1816667&canPartialRepayment=true&repaymentChannelPageDisplayStrategy=B{ "status": { "code": 0, "detail": "OK" }, "body": { "collectionReduction": { "adjustedAmount": 1750000, "enabled": true, "tip": "Diskon penagihan berlaku" } } }Repayment VA by channel
POST
/v1/payments/virtual-accountopenbankingMints the repayment virtual account for a chosen channel (BCA, Mandiri, BRI, BNI, CIMB, OVO): accountNumber, channelName, channelType, canCopy and modes listed on the repay sheet.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- accountNumber
- channelName
- channelType
- canBeUsed
- canCopy
- logoUrl
- tag
POST /v1/payments/virtual-account HTTP/1.1 Content-Type: application/json Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID { "channel": "BCA", "amount": 1816667, "instalmentIds": ["inst-1"], "couponId": 0 }{ "status": { "code": 0, "detail": "OK" }, "body": { "accountNumber": "7001234567890123", "channelName": "BCA Virtual Account", "channelType": "BCA", "canBeUsed": true, "canCopy": true, "logoUrl": "https://cdn.example.com/bank/bca.png", "tag": "VA", "modes": [ { "mode": "ATM", "desc": "Transfer via ATM BCA" } ] } }Add disbursement bank account
POST
/v1/payout-accountsopenbankingBinds a disbursement bank account (name, cardNumber, bankCode) and returns BankCardInfo credentialId, accountNumber, bankName, paymentMethod and status (AVAILABLE / PENDING / IN_REVIEW).
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- accountNumber
- bankCode
- bankName
- bankLogoUrl
- credentialId
- name
- paymentMethod
- status
- ewallet
POST /v1/payout-accounts HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID name=Siti%20Nurhaliza&cardNumber=1234567890&bankCode=CENAIDJA&source=BIND_CARD{ "status": { "code": 0, "detail": "OK" }, "body": { "accountNumber": "1234567890", "bankCode": "CENAIDJA", "bankName": "BCA", "bankLogoUrl": "https://cdn.example.com/bank/bca.png", "credentialId": "cred-441", "name": "Siti Nurhaliza", "paymentMethod": "BANK_ACCOUNT", "status": "AVAILABLE", "ewallet": false } }List payment credentials
GET
/v1/payout-accountsopenbankingLists bound disbursement credentials used at create-order: paymentCredentials[].credentialId, accountNumber, bankName, paymentMethod and status.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- paymentCredentials
- credentialId
- accountNumber
- bankCode
- bankName
- name
- paymentMethod
- status
- ewallet
GET /v1/payout-accounts HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "paymentCredentials": [ { "credentialId": "cred-441", "accountNumber": "1234567890", "bankCode": "CENAIDJA", "bankName": "BCA", "name": "Siti Nurhaliza", "paymentMethod": "BANK_ACCOUNT", "status": "AVAILABLE", "ewallet": false } ] } }KYC auth-order steps
GET
/v1/kyc/progressosintReturns the KYC progress bar: unfinishedSteps / finishedSteps (desc, webAuthUrl), canEnterMinimaListProcess, mustEnterMergeAccount and webPreLoanUrl before a first draw.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- unfinishedSteps
- finishedSteps
- canEnterMinimaListProcess
- mustEnterMergeAccount
- webPreLoanUrl
- desc
- webAuthUrl
GET /v1/kyc/progress HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "unfinishedSteps": [ { "desc": "KTP", "webAuthUrl": "https://app.example.com/auth/ktp", "hideInProgressBar": false } ], "finishedSteps": [ { "desc": "PHONE", "hideInProgressBar": false } ], "canEnterMinimaListProcess": false, "mustEnterMergeAccount": false, "webPreLoanUrl": "https://app.example.com/preloan" } }Identity-number presence check
GET
/v1/identity/check/{mobileNumber}osintTells the register/migrate flow whether this mobileNumber already has an identityNumber (KTP NIK) on file via hasIdentityNumber.
Auth: Cookie userToken plus YQG-PLATFORM-USER-TOKEN from POST /v1/borrower/sign-in (mobileNumber + password); CHANNEL EASYCASH_GOOGLEPLAY_ID
- hasIdentityNumber
GET /v1/identity/check/{mobileNumber} HTTP/1.1 Cookie: userToken=utk_8f21c0ab YQG-PLATFORM-USER-TOKEN: utk_8f21c0ab CHANNEL: EASYCASH_GOOGLEPLAY_ID{ "status": { "code": 0, "detail": "OK" }, "body": { "hasIdentityNumber": true } }
Data categories
- credit limits
- cash-loan orders
- instalment bills
- repayment VA
- linked banks
- KYC steps
- fee quotes
- identity presence
Where teams use this data
Cash-loan limit monitoring
A lender or collection desk polls remainingCredit against totalCredit and Me-tab quotaTotal / quotaUsed nightly so a new draw is blocked when homepageRemainCredits is exhausted or creditsStatus is still IN_REVIEW.
Instalment bill reconciliation
Finance ops match instalmentId, amount and billingDate from the unpaid instalment list, plus totalUnpaidAmount, against bank VA credits so overdue IDR bills are flagged the same day they age.
Repayment-VA matching
Ops look up accountNumber, channelName and channelType for BCA, Mandiri, BRI, BNI, CIMB or OVO so inbound transfers post to the correct instalmentIds.
KYC funnel tracker
Onboarding tools read unfinishedSteps / finishedSteps and hasIdentityNumber to see whether a borrower still owes KTP upload before jumpToCreateOrderPage becomes true.
Frequently asked questions
What credit-limit fields does Easycash expose?
GET /v1/credit/summary returns remainingCredit, totalCredit and optional tempCredit on the home card. GET /v1/profile/credit-line restates the line as homepageRemainCredits, quotaTotal, quotaUsed and creditQuotaStatus. GET /v1/credit/application-status adds creditsStatus (NOT_APPLIED, IN_REVIEW, ACCEPTED, REJECTED, CANCELLED, IMAGE_REVIEW_REJECTED).
How are instalment bills repaid?
GET /v1/bills/instalments returns instalmentId, amount, billingDate and totalUnpaidAmount. POST /v1/bills/repayment-quote can apply a collectionReduction.adjustedAmount. POST /v1/payments/virtual-account then mints accountNumber for a channelType such as BCA or OVO.
How does the app authenticate these calls?
POST /v1/borrower/sign-in takes mobileNumber and password (loginMode PASSWORD, selectedSDKType IDN_YQD). The session is Set-Cookie userToken, replayed as Cookie userToken= plus the YQG-PLATFORM-USER-TOKEN header. CHANNEL is EASYCASH_GOOGLEPLAY_ID.
Where does the cash-loan draw land?
POST /v1/payout-accounts binds name, cardNumber and bankCode and returns credentialId. GET /v1/payout-accounts lists those payout credentials. POST /v1/loans then pays principal into that paymentCredentialId and returns the order id, actualAmount and interest.
Apps similar to Easycash - Pinjaman Daring
- Kredivo — OJK-licensed Indonesian paylater and pinjaman line from PT Kredivo Finance Indonesia, with revolving merchant spend beside cash loans.
- Akulaku — Indonesian paylater and cash-loan brand frequently named next to Easycash in Play reviews for the same unsecured pinjaman users.
- Tunaiku — Indonesian online installment-loan app (pinjaman dana online) competing for the same unsecured personal-loan applicants as Easycash, with tenor-based repayment schedules.
Topics
- Easycash API
- Easycash pinjaman data
- remainingCredit
- quotaTotal
- instalmentId
- PT Indonesia Fintopia Technology
- Indonesia cash loan API
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