PinjamanGo cash-loan data API
PinjamanGo-Pinjaman Uang cepat is the Android cash-loan client of PT. Dana Pinjaman Inklusif, a Sinarmas Group subsidiary licensed by Indonesia’s OJK (KEP-124/D.05/2019) and based at Menara Tekno Lt.7, Jl. Fachrudin No.19, Jakarta Pusat. Borrowers apply for Rupiah cash of Rp 2,000,000–6,000,000 over 91–120 days at a published cap of 15% interest per year, complete KTP e-KYC with face liveness, pick a disbursement bank, repay through a virtual account, and re-borrow after clearing. SMS and WhatsApp OTP, Privy e-sign, coupons and a credit-limit growth track sit on the same home screen. Google Play lists a 4.59 rating across 706,927 reviews; customer service is 021-30033039 / WhatsApp 0817172367. The app competes with Easycash, Tunaiku and Kredivo for Indonesian pinjaman online users.
KTP OCR rows stamp identity against ocrIdentity and realName against ocrRealName, with faceCompareScore, isCompleteEkyc and emergency userContactList. Cash-product quotes publish loanAmountMin / loanAmountMax, periodDay and a calculator that splits ppnAmount, totalInterestAmount, totalServiceAmount and coupon reducedAmount.
Reborrow books list canBorrow, due dueRepayAmount and dueDays; repayment mints a bank vaCode with expireTime and bankCode. Limit-growth tracks baseCreditLimit toward nextCreditLimit and maxCreditLimit under progressPercent and riskRating. 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 login token
POST
/v1/session/otp/verifyosintExchanges mobile, verifyCode and channelName (SMS or WhatsApp) for a session token, register and thirdLoginStatus. Later calls send that token in the Authorization header. Responses use a code/msg/data envelope with success code 200.
Auth: Unauthenticated. JSON body mobile, verifyCode, channelName. Returns a session token for the Authorization header on later calls.
- mobile
- verifyCode
- channelName
- token
- register
- thirdLoginStatus
- code
- msg
POST /v1/session/otp/verify HTTP/1.1 Content-Type: application/json { "mobile": "081234567890", "verifyCode": "483920", "channelName": "whatsapp" }{ "code": 200, "msg": "OK", "data": { "token": "tok_demo_7c41d9e2", "register": true, "thirdLoginStatus": "bound" } }Signed-in user profile
POST
/v1/account/meopendataReturns the signed-in borrower's account record: userId, mobile, userName, faceChannel, isNewUser, hasPwd, hasLoanOrder, hasRegisterCoupon, registerTimestamp and registerResource.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- userId
- mobile
- userName
- faceChannel
- isNewUser
- hasRegisterCoupon
- hasPwd
- hasLoanOrder
- registerCoupon
- registerTimestamp
- registerResource
POST /v1/account/me HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "userId": 10086001, "mobile": "081234567890", "userName": "Budi Santoso", "faceChannel": "partner_a", "isNewUser": false, "hasRegisterCoupon": true, "hasPwd": true, "hasLoanOrder": true, "registerCoupon": null, "registerTimestamp": 1729123200000, "registerResource": "organic" } }Home loan status
POST
/v1/dashboard/loan-stateopenfinanceLoads the home-screen loan gate: canEnterReborrowPage, nested homeUserInfo.profileOrderTag, homeStatus, active orderId, profileStatus, retryStatus, profileCountDownTime, showUserFeedbackPopup and nextLoanTime.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- canEnterReborrowPage
- homeUserInfo
- profileOrderTag
- homeStatus
- orderId
- profileStatus
- retryStatus
- profileCountDownTime
- showUserFeedbackPopup
- nextLoanTime
POST /v1/dashboard/loan-state HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "canEnterReborrowPage": true, "homeUserInfo": { "profileOrderTag": "REPEAT" }, "homeStatus": 3, "orderId": 77881234, "profileStatus": 2, "profileJson": null, "retryStatus": 0, "profileCountDownTime": 0, "showUserFeedbackPopup": false, "nextLoanTime": 1730390400000 } }Cash product quote
POST
/v1/offers/cash/quoteopenfinanceReturns the cash-loan offer: productId, loanAmount between loanAmountMin and loanAmountMax, nextMaxLoanAmount, periodDay, repaymentAmount, electronicState, cutRate, stageNum, stagePeriodDays and productCategoryCode.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- productId
- orderId
- loanAmount
- loanAmountMin
- loanAmountMax
- nextMaxLoanAmount
- periodDay
- electronicState
- repaymentAmount
- productType
- cutRate
- stageNum
- stagePeriodDays
- productCategoryCode
POST /v1/offers/cash/quote HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "orderId": "77881234", "productCategoryCode": "CASH" }{ "code": 200, "msg": "OK", "data": { "productId": 9001, "orderId": 77881234, "loanAmount": 4000000, "loanAmountMin": 2000000, "loanAmountMax": 6000000, "nextMaxLoanAmount": 6000000, "periodDay": 91, "electronicState": 1, "repaymentAmount": 4520000, "productType": 1, "rightsGroupAmount": 0, "rightsGroupId": 0, "cutRate": 0.0, "rights": [], "rightsType": 0, "stageNum": 1, "stagePeriodDays": 91, "productCategoryCode": "CASH" } }Installment calculator
POST
/v1/offers/cash/simulateopenfinanceQuotes a repayment preview for a selected amount: periodDay, PPN ppnAmount, totalInterestAmount, totalServiceAmount, userAmount, coupon reducedAmount and repayPlanSubExpectLit rows (expectNum, dayNum, interest, serviceFee, repayTime).
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- periodDay
- ppnAmount
- repayPlanSubExpectLit
- totalAmount
- totalInterestAmount
- totalServiceAmount
- userAmount
- loanAmount
- electronicAmount
- serviceAmount
- couponType
- reducedAmount
- rightsAmount
- rightsRate
POST /v1/offers/cash/simulate HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "productId": 9001, "orderId": 77881234, "selectAmount": 4000000, "userBankId": 33001, "userCouponId": 44001, "productCategoryCode": "CASH" }{ "code": 200, "msg": "OK", "data": { "periodDay": 91, "ppnAmount": 44000, "repayPlanSubExpectLit": [ { "amount": 4000000, "amountReduced": 50000, "dayNum": 91, "expectNum": 1, "interest": 136000, "interestReduced": 0, "ppn": 44000, "repayTime": 1738368000000, "serviceFee": 340000, "totalAmount": 4470000, "serviceAmount": 340000 } ], "totalAmount": 4470000, "totalInterestAmount": 136000, "totalServiceAmount": 340000, "userAmount": 4000000, "loanAmount": 4000000, "electronicAmount": 0, "serviceAmount": 340000, "couponType": "REDUCE", "reducedAmount": 50000, "rightsAmount": 0, "rightsRate": 0.0 } }KTP eKYC profile
POST
/v1/identity/profileopendataReads the borrower's KYC profile: isCompleteEkyc, KTP identity versus ocrIdentity, realName versus ocrRealName, faceCompareScore, npwp, liveAddress, job, monthlyIncome, loanPurpose, whatApp and userContactList (name, mobile, relationship).
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- isCompleteEkyc
- identity
- realName
- ocrIdentity
- ocrRealName
- faceCompareScore
- faceLiveScore
- npwp
- liveAddress
- postcode
- job
- monthlyIncome
- loanPurpose
- whatApp
- userBankId
- userContactList
POST /v1/identity/profile HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "isCompleteEkyc": true, "identity": "3174010101900001", "realName": "Budi Santoso", "ocrIdentity": "3174010101900001", "ocrRealName": "BUDI SANTOSO", "faceCompareScore": "92.4", "faceLiveScore": "0.98", "npwp": "10.0.0.1-012.000", "liveAddress": "Jl. Merdeka No.10", "postcode": "10110", "job": "Karyawan", "monthlyIncome": "8000000", "loanPurpose": "Modal usaha", "whatApp": "081234567890", "userBankId": 33001, "userId": 10086001, "profileStatus": 2, "userContactList": [ { "name": "Siti", "mobile": "081298765432", "relationship": "SPOUSE" } ] } }KTP OCR extract
POST
/v1/identity/id-card/scanopendataReturns the text read from the KTP photo: id, name, birthday, address, ocrCode and nextChannel (typically face liveness).
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- id
- name
- birthday
- address
- ocrCode
- nextChannel
POST /v1/identity/id-card/scan HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "id": "3174010101900001", "name": "BUDI SANTOSO", "birthday": "1990-01-01", "address": "JL MERDEKA NO 10 JAKARTA PUSAT", "ocrCode": 0, "nextChannel": "face" } }Confirm cash order
POST
/v1/loans/commitopenfinanceSubmits productId, userBankId, tokenKey, amount, interestAmount, userCouponId and productCategoryCode to lock the cash-loan order and returns its orderId.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- productId
- userBankId
- tokenKey
- amount
- interestAmount
- userCouponId
- productCategoryCode
- orderId
POST /v1/loans/commit HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "productId": 9001, "userBankId": 33001, "tokenKey": "<confirm_token>", "amount": 4000000, "interestAmount": 136000, "userCouponId": 44001, "productCategoryCode": "CASH" }{ "code": 200, "msg": "OK", "data": { "orderId": 77881234 } }Reborrow book
POST
/v1/loans/repeat/overviewopenfinanceLoads the borrower's reborrow ledger: canBorrow plus orderList rows (loanAmount, orderId, repayAmount, repayTime, status, showRepayButton, dueDays) and dueSummary (dueOrderCount, dueRepayAmount, maxDueDays).
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- canBorrow
- orderList
- loanAmount
- orderId
- repayAmount
- repayTime
- status
- showRepayButton
- dueDays
- dueSummary
- dueOrderCount
- dueRepayAmount
- maxDueDays
POST /v1/loans/repeat/overview HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "canBorrow": false, "orderList": [ { "loanAmount": "4000000", "orderId": 77881234, "repayAmount": "4470000", "repayTime": 1738368000000, "status": 2, "retryStatus": 0, "showRepayButton": true, "dueDays": 5 } ], "dueSummary": { "dueOrderCount": 1, "dueRepayAmount": "4470000", "maxDueDays": 5, "orderId": 77881234, "orderRepaymentAmount": "4470000" }, "d3Summary": null, "quickVaSummary": null, "msg": "" } }Repayment breakdown
POST
/v1/repayments/breakdownopenfinanceReturns the repayment breakdown for an orderId: principalAmount, interestAmount, ppnAmount, serviceFeeAmount, repaymentAmount, overdueInterestAmount, reduceAmount, isFullySettled and the available banks.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- principalAmount
- interestAmount
- ppnAmount
- serviceFeeAmount
- repaymentAmount
- overdueInterestAmount
- reduceAmount
- electronicAmount
- isFullySettled
- orderId
- banks
POST /v1/repayments/breakdown HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "orderId": "77881234" }{ "code": 200, "msg": "OK", "data": { "banks": [ { "bankCode": "BCA", "bankName": "BCA" } ], "electronicAmount": "0", "interestAmount": "136000", "orderId": 77881234, "overdueInterestAmount": "0", "ppnAmount": "44000", "principalAmount": "4000000", "reduceAmount": "50000", "repaymentAmount": "4470000", "serviceFeeAmount": "340000", "userId": 10086001, "isFullySettled": false, "fullySettledOrderId": null, "details": [] } }Fixed virtual-account code
POST
/v1/repayments/va/issueopenbankingIssues a repayment virtual account: amount, bankCode, expireTime, vaCode, repaymentCodeInfoId and repaymentCodeMappingId from orderId, isFullySettled, totalAmount and optional couponId.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- orderId
- bankCode
- isFullySettled
- totalAmount
- couponReduceAmount
- couponId
- amount
- expireTime
- vaCode
- repaymentCodeInfoId
- repaymentCodeMappingId
POST /v1/repayments/va/issue HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "orderId": 77881234, "bankCode": "BCA", "isFullySettled": "false", "totalAmount": "4470000", "couponReduceAmount": 50000, "couponId": 44001, "details": [] }{ "code": 200, "msg": "OK", "data": { "amount": 4470000, "bankCode": "BCA", "expireTime": 1730500000000, "repaymentCodeInfoId": 551, "repaymentCodeMappingId": 8821, "vaCode": "8808123456789012" } }Disbursement bank list
POST
/v1/payout-accounts/listopenbankingLists the borrower's bank accounts filtered by status: userBankId, bankCard, bankCoding, bankName, bankType, isDefault and state; the chosen userBankId is passed when the order is committed.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- status
- userBanks
- userBankId
- userId
- bankCard
- bankCoding
- bankName
- bankType
- isDefault
- state
POST /v1/payout-accounts/list HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "status": 1 }{ "code": 200, "msg": "OK", "data": { "userBanks": [ { "userBankId": 33001, "userId": 10086001, "bankCard": "8812345678", "bankCoding": "CENAIDJA", "bankName": "BCA", "bankType": 1, "callBackCode": null, "ctime": 1729123200000, "isDefault": 1, "state": 1 } ] } }Coupon wallet
POST
/v1/promotions/walletopendataReturns the borrower's couponList: couponName, couponType, discountType, amount, limitAmount, expireTime, status, available and postingMethod; the chosen id is later passed as userCouponId.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- couponList
- id
- available
- couponName
- couponType
- discountType
- amount
- limitAmount
- expireTime
- status
- postingMethod
POST /v1/promotions/wallet HTTP/1.1 Content-Type: application/json Authorization: <session_token> {}{ "code": 200, "msg": "OK", "data": { "couponList": [ { "id": 44001, "available": true, "couponName": "New user reduce", "couponType": "REGISTER", "discountType": "AMOUNT", "discount": "50000", "amount": "50000", "limitAmount": "2000000", "enabled": true, "receiveTime": 1729123200000, "effectiveTime": 1729123200000, "expireTime": 1731715200000, "usedTime": null, "status": 1, "postingMethod": "AUTO" } ] } }Credit-limit growth
POST
/v1/limit/progressopenfinanceReturns credit-limit growth for an orderId: progressPercent, clearedPeriodNum, baseCreditLimit, nextCreditLimit, maxCreditLimit, trend and riskRating.
Auth: Session token from the OTP verify call in the Authorization header. Bodies may be wrapped in an encrypted envelope (wrapped key, payload, iv, tag, version) after request signing.
- userId
- orderId
- progressPercent
- clearedPeriodNum
- baseCreditLimit
- nextCreditLimit
- maxCreditLimit
- trend
- riskRating
POST /v1/limit/progress HTTP/1.1 Content-Type: application/json Authorization: <session_token> { "orderId": 77881234 }{ "code": 200, "msg": "OK", "data": { "userId": 10086001, "orderId": 77881234, "progressPercent": 40, "clearedPeriodNum": 1, "baseCreditLimit": "2000000", "nextCreditLimit": "4000000", "maxCreditLimit": "6000000", "trend": "UP", "riskRating": "B" } }
Data categories
- kyc profiles
- cash-loan products
- installment quotes
- loan orders
- repayment schedules
- virtual-account codes
- bank accounts
- coupons
- credit-limit growth
Where teams use this data
KTP eKYC matching
Onboarding desks match identity to ocrIdentity and realName to ocrRealName, then gate disbursement on isCompleteEkyc, faceCompareScore and userContactList.
VA repayment matching
Collectors pull repaymentAmount, principalAmount and overdueInterestAmount, then match inbound transfers to vaCode, bankCode and expireTime.
Credit-limit growth monitors
Risk watches progressPercent and clearedPeriodNum as baseCreditLimit steps toward nextCreditLimit and maxCreditLimit under riskRating.
Coupon and PPN quote audit
Finance reconciles calculator ppnAmount, totalInterestAmount and reducedAmount against couponList amount, limitAmount and expireTime before confirmOrder.
Frequently asked questions
What borrower records does PinjamanGo expose after sign-in?
Signed-in sessions return the account record (userId, mobile, hasLoanOrder), a KTP identity profile (identity, ocrIdentity, realName, ocrRealName, faceCompareScore, isCompleteEkyc), cash-product quotes (loanAmountMin, loanAmountMax, periodDay), calculator splits (ppnAmount, totalInterestAmount, reducedAmount), reborrow rows (canBorrow, dueDays, dueRepayAmount), a fixed virtual account (vaCode, bankCode, expireTime) and credit-limit growth (baseCreditLimit, nextCreditLimit, maxCreditLimit, riskRating).
How does the Android client authenticate those calls?
OTP login posts mobile, verifyCode and channelName (SMS or WhatsApp) and receives a session token with register and thirdLoginStatus. Later calls send that token in the Authorization header, and some request bodies are wrapped in an encrypted envelope carrying a wrapped key, payload, iv, tag and version.
How is a cash loan repaid?
The reborrow book lists orderId, repayAmount and dueDays. The repayment breakdown splits principalAmount, interestAmount, ppnAmount and serviceFeeAmount, and the virtual-account call then mints vaCode, bankCode, amount and expireTime for the chosen bank.
Which fields track a limit increase after repayment?
The credit-limit growth call returns progressPercent, clearedPeriodNum, baseCreditLimit, nextCreditLimit, maxCreditLimit, trend and riskRating for the current orderId.
Apps similar to PinjamanGo-Pinjaman Uang cepat
- Easycash - Pinjaman Daring — Easycash is an OJK-licensed Indonesian unsecured cash-loan app offering IDR 100,000 to IDR 100,000,000 over 3–12 months at a published maximum 36% APR.
- Tunaiku - Pinjaman Dana Online — Tunaiku is PT Bank Amar Indonesia Tbk's OJK-licensed unsecured cash-loan (KTA) app, 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.
- Singa Fintech-Digital Loans — Singa Fintech is PT Abadi Sejahtera Finansindo's OJK-licensed Indonesian cash-loan app, with published limits from IDR 1.1 million to IDR 48 million and installment periods of 91–100 days.
- AdaKami — AdaKami is an OJK-licensed Indonesian digital cash-loan app with published limits of IDR 3,000,000 to IDR 80,000,000 over 3-, 6- or 12-month installments and a stated maximum APR of 36%.
- JULO — JULO is an OJK-supervised Indonesian 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.
- Akulaku — Akulaku combines cash loans of Rp300,000–Rp40,000,000, PayLater of up to Rp25,000,000, and merchant installments in one Indonesian app, with financing from OJK-licensed PT Akulaku Finance Indonesia.
- Home Credit-Pinjaman & Kredit — Home Credit Indonesia finances phones, laptops and other goods in more than 20,000 stores, and also offers cash financing and a paylater line under OJK supervision.
Topics
- PinjamanGo API
- PinjamanGo vaCode
- PinjamanGo loanAmountMax
- PT Dana Pinjaman Inklusif data
- Indonesian pinjaman KTP OCR
- PinjamanGo credit-limit growth
- PinjamanGo ppnAmount
- 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