Indosaku installment-loan data API
Indosaku-Pinjaman Cicilan Uang is the Android installment cash-loan client of PT. INDOSAKU DIGITAL TEKNOLOGI, operating as PT Sens Teknologi Indonesia, licensed by Indonesia’s OJK under KEP-86/D.05/2021 (31 August 2021) and ISO 27001 certified, with offices at Ruko Spectra, Jl. Jalur Sutera Kav. 23B No. 1–2, Kota Tangerang, Banten 15143. Borrowers apply for unsecured Rupiah cash of IDR 500,000–80,000,000 over 3, 6 or 12 months (91–365 days) at a published maximum annual interest of 36% plus a 1.42% service fee on principal — an IDR 2,000,000 six-month example totals IDR 2,530,400. Applicants must be Indonesian citizens aged 21–55 with a steady income and an own-name savings account, complete KTP e-KYC with face liveness, pick a disbursement bank, repay through a virtual account, and re-borrow after clearing; coupons, auto-reloan and a home-limit increase track sit on the same client. Google Play lists a 4.8 rating across 547,729 reviews; customer service is [email protected] / 021-50102321 (09:00–18:00 daily). The app competes with Easycash, Tunaiku, Kredivo and PinjamanGo for Indonesian pinjaman online users.
Home-limit cards publish loanAmountMin against loanAmountMax as loanAmountDisplay, with tenorPeriodDisplay, quotaDisplay, totalLimitDisplay and orderCountDisplay. KYC rows stamp kycVerified on idCardNum and idCard, then a liveness step returns faceProcessId plus an upload url and object key.
Quick-apply commits orderId with bankAccountDisplay, bankNameDisplay, disbursementDisplay and autoReloanState. Coupon wallets list userCouponId, couponName, couponStatus and couponAmountDisplay; VA repayment screens pin dueTime to the same orderId. Collection desks and lending-stack bots stitch those fields into VA matching and limit monitors; 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.
OTP send
POST
/v1/auth/challengeosintSends a one-time code to otp_send_phone using otp_send_code_type (SMS or similar) before the session is minted.
Auth: Unauthenticated. JSON body otp_send_phone and otp_send_code_type.
- otp_send_phone
- otp_send_code_type
- ttlSec
POST /v1/auth/challenge HTTP/1.1 Content-Type: application/json { "otp_send_phone": "081234567890", "otp_send_code_type": "sms" }{ "code": 0, "msg": "OK", "data": { "otp_send_phone": "081234567890", "otp_send_code_type": "sms", "ttlSec": 60 } }OTP verify session
POST
/v1/sessions/exchangeosintExchanges otp_send_phone and the SMS code for accessToken, userId and phoneNumber used on later calls.
Auth: Unauthenticated. JSON body otp_send_phone and the SMS code. Returns accessToken for later Authorization headers.
- otp_send_phone
- verifyCode
- accessToken
- userId
- phoneNumber
POST /v1/sessions/exchange HTTP/1.1 Content-Type: application/json { "otp_send_phone": "081234567890", "verifyCode": "483920" }{ "code": 0, "msg": "OK", "data": { "accessToken": "<accessToken>", "userId": "10086001", "phoneNumber": "081234567890" } }Signed-in borrower profile
POST
/v1/members/meopendataReturns the signed-in borrower record: userId, phoneNumber, accountName, kycVerified, idCard and idCardNum.
Auth: accessToken from the OTP verify call in the Authorization header.
- userId
- phoneNumber
- accountName
- kycVerified
- idCard
- idCardNum
POST /v1/members/me HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> {}{ "code": 0, "msg": "OK", "data": { "userId": "10086001", "phoneNumber": "081234567890", "accountName": "Budi Santoso", "kycVerified": true, "idCard": "KTP", "idCardNum": "3174010101900001" } }KYC upload URL
POST
/v1/identity/uploadsopendataMints a KYC object-store slot: isSuccess, url, key, filePath, src, uploadFile and faceProcessId for the KTP photo or liveness still.
Auth: accessToken from the OTP verify call in the Authorization header.
- isSuccess
- url
- key
- filePath
- src
- uploadFile
- faceProcessId
POST /v1/identity/uploads HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> { "src": "ktp_front", "uploadFile": "ktp.jpg" }{ "code": 0, "msg": "OK", "data": { "isSuccess": true, "url": "https://cdn.example/kyc/put", "key": "kyc/10086001/ktp_front.jpg", "filePath": "kyc/10086001/ktp_front.jpg", "src": "ktp_front", "uploadFile": "ktp.jpg", "faceProcessId": "fp_9a21" } }Home credit limit
POST
/v1/credit/overviewopenfinanceLoads the home-screen limit card: loanAmountMin, loanAmountMax, loanAmountDisplay, loanMetaDisplay, tenorPeriodDisplay, quotaDisplay, totalLimitDisplay and orderCountDisplay.
Auth: accessToken from the OTP verify call in the Authorization header.
- loanAmountMin
- loanAmountMax
- loanAmountDisplay
- loanMetaDisplay
- tenorPeriodDisplay
- quotaDisplay
- totalLimitDisplay
- orderCountDisplay
POST /v1/credit/overview HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> {}{ "code": 0, "msg": "OK", "data": { "loanAmountMin": 500000, "loanAmountMax": 80000000, "loanAmountDisplay": "Rp 8.000.000", "loanMetaDisplay": "Cicilan 6 bulan", "tenorPeriodDisplay": "6 bulan", "quotaDisplay": "Rp 8.000.000", "totalLimitDisplay": "Rp 12.000.000", "orderCountDisplay": "2" } }Quick-apply order
POST
/v1/applications/instantopenfinanceCommits a quick-apply installment: orderId with bankAccountDisplay, bankNameDisplay, disbursementDisplay, autoReloanState and optional userCouponId.
Auth: accessToken from the OTP verify call in the Authorization header.
- orderId
- loanAmountDisplay
- tenorPeriodDisplay
- bankAccountDisplay
- bankNameDisplay
- disbursementDisplay
- autoReloanState
- userCouponId
POST /v1/applications/instant HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> { "loanAmountDisplay": "Rp 2.000.000", "tenorPeriodDisplay": "6 bulan", "bankAccountDisplay": "8812345678", "userCouponId": "44001", "autoReloanState": false }{ "code": 0, "msg": "OK", "data": { "orderId": "77881234", "bankAccountDisplay": "8812345678", "bankNameDisplay": "BCA", "disbursementDisplay": "Rp 2.000.000", "autoReloanState": false, "userCouponId": "44001" } }Virtual-account repayment
POST
/v1/payments/virtual-accountopenbankingIssues the repayment virtual account for an orderId: accountName, bankNameDisplay, bankAccountDisplay and dueTime.
Auth: accessToken from the OTP verify call in the Authorization header.
- orderId
- accountName
- bankNameDisplay
- bankAccountDisplay
- dueTime
POST /v1/payments/virtual-account HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> { "orderId": "77881234" }{ "code": 0, "msg": "OK", "data": { "orderId": "77881234", "accountName": "Budi Santoso", "bankNameDisplay": "BCA", "bankAccountDisplay": "8808123456789012", "dueTime": "2026-04-19 23:59:59" } }User coupon list
POST
/v1/promotions/walletopendataReturns the coupon wallet: couponMasterEnabled, totalDiscountDisplay and rows of userCouponId, couponName, couponStatus, couponUse and couponAmountDisplay.
Auth: accessToken from the OTP verify call in the Authorization header.
- couponMasterEnabled
- totalDiscountDisplay
- userCouponId
- couponUserCouponId
- couponName
- couponStatus
- couponUse
- couponAmountDisplay
POST /v1/promotions/wallet HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> {}{ "code": 0, "msg": "OK", "data": { "couponMasterEnabled": true, "totalDiscountDisplay": "Rp 50.000", "items": [ { "userCouponId": "44001", "couponUserCouponId": "44001", "couponName": "New user reduce", "couponStatus": "AVAILABLE", "couponUse": true, "couponAmountDisplay": "Rp 50.000" } ] } }Reloan and renewal
POST
/v1/applications/renewalopenfinanceLoads the reloan / renewal gate for an orderId: autoReloanState, quotaDisplay, loanAmountDisplay and tenorPeriodDisplay.
Auth: accessToken from the OTP verify call in the Authorization header.
- orderId
- autoReloanState
- quotaDisplay
- loanAmountDisplay
- tenorPeriodDisplay
POST /v1/applications/renewal HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> { "orderId": "77881234", "autoReloanState": true }{ "code": 0, "msg": "OK", "data": { "orderId": "77881234", "autoReloanState": true, "quotaDisplay": "Rp 8.000.000", "loanAmountDisplay": "Rp 8.000.000", "tenorPeriodDisplay": "6 bulan" } }Home limit-increase track
POST
/v1/credit/upgrade-trackopenfinanceReturns the home limit-increase track: quotaDisplay versus totalLimitDisplay, loanAmountMax, orderCountDisplay and autoReloanState.
Auth: accessToken from the OTP verify call in the Authorization header.
- quotaDisplay
- totalLimitDisplay
- loanAmountMax
- orderCountDisplay
- autoReloanState
POST /v1/credit/upgrade-track HTTP/1.1 Content-Type: application/json Authorization: Bearer <accessToken> {}{ "code": 0, "msg": "OK", "data": { "quotaDisplay": "Rp 8.000.000", "totalLimitDisplay": "Rp 12.000.000", "loanAmountMax": 80000000, "orderCountDisplay": "2", "autoReloanState": false } }
Data categories
- otp sessions
- kyc profiles
- face liveness uploads
- home credit limits
- installment orders
- virtual-account repayment
- coupons
- reloan state
- limit-increase tracks
Where teams use this data
KTP e-KYC matching
Onboarding desks gate disbursement on kycVerified, idCardNum and accountName, then attach faceProcessId to the upload url and key.
VA repayment matching
Collectors pull dueTime, bankNameDisplay and bankAccountDisplay for an orderId and match inbound transfers to the virtual account.
Home-limit monitors
Risk watches loanAmountMin / loanAmountMax against quotaDisplay and totalLimitDisplay as orderCountDisplay grows.
Coupon checkout audit
Finance reconciles couponAmountDisplay and totalDiscountDisplay against userCouponId, couponStatus and couponUse before quick-apply.
Frequently asked questions
What borrower records does Indosaku expose after sign-in?
Signed-in sessions return the account record (userId, phoneNumber, accountName, kycVerified, idCardNum), a home limit card (loanAmountMin, loanAmountMax, loanAmountDisplay, tenorPeriodDisplay, quotaDisplay, totalLimitDisplay), a quick-apply order (orderId, bankAccountDisplay, disbursementDisplay, autoReloanState), a virtual-account repayment (dueTime, bankNameDisplay), coupons (userCouponId, couponName, couponStatus, couponAmountDisplay) and a limit-increase track.
How does the Android client authenticate those calls?
OTP send posts otp_send_phone and otp_send_code_type. OTP verify then exchanges the SMS code for accessToken, userId and phoneNumber. Later calls send that accessToken in the Authorization header.
How is an installment repaid?
The virtual-account call returns orderId, accountName, bankNameDisplay, bankAccountDisplay and dueTime. Collectors match inbound transfers to that bank account before the dueTime.
Which fields track a limit increase?
The home limit-increase track returns quotaDisplay versus totalLimitDisplay, loanAmountMax, orderCountDisplay and autoReloanState.
Apps similar to Indosaku-Pinjaman Cicilan Uang
- Easycash - Pinjaman Daring — Easycash is PT Indonesia Fintopia Technology's OJK-licensed unsecured cash-loan app, with published limits of IDR 100,000–IDR 100,000,000 over 3–12 months and a stated maximum 36% APR.
- Tunaiku - Pinjaman Dana Online — Tunaiku is PT Bank Amar Indonesia Tbk's OJK-licensed unsecured cash-loan (KTA) product, disbursing IDR 2 million to IDR 30 million over 6–30 months.
- Kredivo - Paylater & Pinjaman — Kredivo is PT Kredivo Finance Indonesia's OJK-licensed paylater and cash-loan line of up to IDR 50 million, with a 30-day pay-in-full option and 3–24 month installments.
- PinjamanGo-Pinjaman Uang cepat — PinjamanGo is PT Dana Pinjaman Inklusif's OJK-licensed (KEP-124/D.05/2019) unsecured cash-loan app under Sinar Mas Group, with published limits of Rp 2,000,000–6,000,000 over 91–120 days.
- UangMe - Pinjaman Dana Online — UangMe is PT Uangme Fintek Indonesia's OJK-licensed unsecured cash-loan app, with published limits of Rp 200,000–Rp 50,000,000 over 3–12 months.
- Cairin: Pinjaman Daring Cepat — Cairin is PT Idana Solusi Sejahtera's OJK-licensed unsecured cash-loan app, with published limits of IDR 500,000–IDR 100,000,000 over 91–365 days and a stated maximum 24% annual interest.
- AdaKami — AdaKami is PT Pembiayaan Digital Indonesia's OJK-licensed digital cash-loan app, with published limits of Rp 300,000–Rp 80,000,000 over 3-, 6- or 12-month installments and a stated maximum 36% APR.
- JULO — JULO is PT JULO Teknologi Finansial's OJK-supervised digital-credit app whose one limit of up to Rp50,000,000 can be drawn as bank cash, e-wallet top-ups, bill pay, or paylater spend.
Topics
- Indosaku API
- Indosaku loanAmountMin
- Indosaku dueTime
- PT INDOSAKU DIGITAL TEKNOLOGI data
- Indonesian pinjaman kycVerified
- Indosaku couponAmountDisplay
- Indosaku autoReloanState
- OJK pinjaman online fields
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