Samir circular-credit and VA data API
Samir - Pinjaman Daring is the Android cash-loan app from PT SAHABAT MIKRO FINTEK for Indonesian borrowers. Its application flow combines SMS or WhatsApp OTP, KTP identity checks, face liveness and Digisign electronic signing, with approved funds paid into a bank account. The published offer covers unsecured loans of Rp400.000–Rp100.000.000 over 91–365 days at a maximum 24% annual interest rate for Indonesian citizens aged 18 and over. Repayment options include ATM, mobile and internet banking, virtual accounts and Alfamart, with Mandiri, BRI, Permata, BSI, CIMB Niaga and BJB among the named partner banks. Circular-credit re-borrowing, coupons and live chat support returning customers. The provider lists OJK license KEP-105/D.05/2021 and AFPI membership; the supplied Google Play listing records a 4.5 rating from 227,411 reviews and more than 10 million installs.
Circular-credit headroom connects tempCreditAmount and tempCreditExpireIn with nested availableAmount, minAmount, nominalAmount and creditState. Together these fields distinguish a temporary allowance from credit available for re-borrowing. Credit evaluations add bizId, status and userConfirmStatus, while loan records connect creditNo, factAmount and shouldRepayAmount to loan_status and overdueDays.
Virtual-account reconciliation uses va, va_amount and repayment entries containing repaymentCode, bankCode and repaymentCodeExpireDate. Loan estimates separate loanAmount and payAmount from gstFee, stampDuty, adminTaxFee, eSignatureFee and totalInsterst, with installment details in repaymentList. These amount, fee and expiry fields support collections matching and comparisons between quoted charges and repayment schedules.
KTP intake supplies idNumber, name, pob, province and religion; borrower files add identity, motherName, monthlyIncome, emergentContacts and whatsAppId. Coupon records pair couponTitle and worth with couponTypeCode and benefitId. Lending operations, collections teams and authorized KYC desks can use these distinct records for credit-headroom monitoring, payment reconciliation, identity intake and fee comparisons; openData Studio turns the data 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.
Send SMS or WhatsApp OTP
POST
/v1/verification/deliverosintSends an SMS or WhatsApp OTP for mobile and returns the remaining smsAvailableCount, whatsAppAvailableCount and voiceAvailableCount, together with exist, needWait and showVoice.
Auth: Unauthenticated; mobile is supplied in the JSON body. Responses use code, message and result, with success code "200".
- mobile
- smsCode
- exist
- needWait
- showVoice
- smsAvailableCount
- whatsAppAvailableCount
- voiceAvailableCount
- smsConfig
- code
- message
POST /v1/verification/deliver HTTP/1.1 Content-Type: application/json { "mobile": "08<demo_account_number>" }{ "code": "200", "message": "OK", "result": { "smsCode": "", "exist": true, "needWait": false, "showVoice": 1, "smsAvailableCount": 4, "whatsAppAvailableCount": 3, "voiceAvailableCount": 2, "smsConfig": {} } }Verify OTP and issue session
POST
/v1/sessions/confirmosintExchanges mobile and smsCode for session id and token plus borrower userNo, mid, mobile, phone, userName, realName and staticKey. The session retains token, userNo and mid for subsequent calls.
Auth: Unauthenticated; mobile and smsCode are supplied in the JSON body. The result includes a session token and borrower identifiers for subsequent requests.
- mobile
- smsCode
- id
- token
- userNo
- mid
- phone
- userName
- realName
- staticKey
POST /v1/sessions/confirm HTTP/1.1 Content-Type: application/json { "mobile": "08<demo_account_number>", "smsCode": "483920" }{ "code": "200", "message": "OK", "result": { "id": "tok-10086001", "token": "<session_token>", "userNo": "UN-10086001", "mid": "88001234", "mobile": "08<demo_account_number>", "phone": "08<demo_account_number>", "userName": "budi.santoso", "realName": "Budi Santoso", "staticKey": "<mock_static_key>" } }Signed-in borrower profile
POST
/v1/borrowers/profileopendataReturns the signed-in borrower profile: userNo, mid, staticKey, mobile, phone, userName and realName.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- userNo
- mid
- staticKey
- mobile
- phone
- userName
- realName
POST /v1/borrowers/profile HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": { "userNo": "UN-10086001", "mid": "88001234", "staticKey": "<mock_static_key>", "mobile": "08<demo_account_number>", "phone": "08<demo_account_number>", "userName": "budi.santoso", "realName": "Budi Santoso" } }KTP OCR recognition
POST
/v1/identity/cards/readosintReads a KTP image into identity fields: idNumber, name, sex, birthday, pob, province, city, district, village and religion.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- idNumber
- name
- sex
- birthday
- pob
- province
- city
- district
- village
- religion
POST /v1/identity/cards/read HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": { "idNumber": "<demo_identity_number>", "name": "BUDI SANTOSO", "sex": "L", "birthday": "1990-01-01", "pob": "JAKARTA", "province": "DKI JAKARTA", "city": "JAKARTA SELATAN", "district": "KEBAYORAN BARU", "village": "SENAYAN", "religion": "ISLAM" } }Submit credit-person KYC
POST
/v1/borrowers/identityosintSaves the borrower KYC file with identity, firstName, motherName, monthlyIncome, companyName, bankId, cardNo, whatsAppId, home_region_1 through home_region_4 and emergentContacts for the current session.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- identity
- firstName
- motherName
- monthlyIncome
- companyName
- bankId
- cardNo
- whatsAppId
- home_region_1
- home_region_2
- home_region_3
- home_region_4
- emergentContacts
POST /v1/borrowers/identity HTTP/1.1 Content-Type: application/json token: <session_token> { "identity": "<demo_identity_number>", "firstName": "Budi Santoso", "motherName": "Siti Aminah", "monthlyIncome": "8000000", "companyName": "PT Contoh", "bankId": "008", "cardNo": "<demo_account_number>", "whatsAppId": "08<demo_account_number>", "home_region_1": "31", "home_region_2": "3174", "home_region_3": "317407", "home_region_4": "3174071003" }{ "code": "200", "message": "OK", "result": { "identity": "<demo_identity_number>", "firstName": "Budi Santoso", "motherName": "Siti Aminah", "monthlyIncome": "8000000", "companyName": "PT Contoh", "bankId": "008", "cardNo": "<demo_account_number>", "whatsAppId": "08<demo_account_number>", "home_region_1": "31", "home_region_2": "3174", "home_region_3": "317407", "home_region_4": "3174071003", "emergentContacts": [ { "name": "Andi", "phone": "<demo_contact_mobile>" } ] } }Face liveness score
POST
/v1/identity/presence/checkosintReturns the face-liveness gate before loan submission: livenessScore, livingCtn, isNeedLiving and isHint.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- livenessScore
- livingCtn
- isNeedLiving
- isHint
POST /v1/identity/presence/check HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": { "livenessScore": "92.4", "livingCtn": 1, "isNeedLiving": false, "isHint": false } }Credit evaluation poll
POST
/v1/assessments/progressopenfinanceChecks an in-progress credit evaluation using bizId and returns status, userConfirmStatus, hideCut and doubleLoan.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- bizId
- status
- userConfirmStatus
- hideCut
- doubleLoan
POST /v1/assessments/progress HTTP/1.1 Content-Type: application/json token: <session_token> { "bizId": "biz-77881234" }{ "code": "200", "message": "OK", "result": { "bizId": "biz-77881234", "status": "PASS", "userConfirmStatus": 1, "hideCut": "0", "doubleLoan": "0" } }Home loan origin
POST
/v1/borrowing/overviewopenfinanceLoads the borrowing overview with availableAmount, virtualCreditAmount, circularCreditResp, creditOrderList, repayOrderList, productList, needLiving, oneClickLoan, doubleLoan and needRefreshCircular.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- availableAmount
- virtualCreditAmount
- needLiving
- oneClickLoan
- doubleLoan
- needRefreshCircular
- circularCreditResp
- creditOrderList
- repayOrderList
- productList
POST /v1/borrowing/overview HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": { "availableAmount": "4500000", "virtualCreditAmount": "500000", "needLiving": "0", "oneClickLoan": "1", "doubleLoan": "0", "needRefreshCircular": "0", "circularCreditResp": { "availableAmount": "4000000", "minAmount": "400000", "nominalAmount": "5000000", "creditState": 1 }, "creditOrderList": { "creditNo": "CN-77881234", "loan_status": "INLOAN", "applyAmount": "5000000" }, "repayOrderList": [], "productList": {} } }Product trial quote
POST
/v1/borrowing/estimateopenfinanceEstimates a chosen loanAmount with payAmount, totalAmount, rate, displayRate, serviceFee, gstFee, stampDuty, adminTaxFee, totalInsterst, couponAmount, eSignatureFee, fineScale and repaymentList.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- loanAmount
- payAmount
- totalAmount
- rate
- displayRate
- serviceFee
- gstFee
- stampDuty
- adminTaxFee
- totalInsterst
- couponAmount
- eSignatureFee
- fineScale
- repaymentList
POST /v1/borrowing/estimate HTTP/1.1 Content-Type: application/json token: <session_token> { "loanAmount": "5000000" }{ "code": "200", "message": "OK", "result": { "loanAmount": "5000000", "payAmount": "5000000", "totalAmount": "5305753", "rate": "0.24", "displayRate": "24%", "serviceFee": "0", "gstFee": "0", "stampDuty": "10000", "adminTaxFee": "0", "totalInsterst": "305753", "couponAmount": "0", "eSignatureFee": "0", "fineScale": "0.005", "repaymentList": [ { "factTotalAmount": "1785571", "remainingCapital": "1666667", "factInterest": "101904" } ] } }Circular-credit quota
POST
/v1/borrowing/headroomopenfinanceReturns temporary credit amount and expiry through tempCreditAmount and tempCreditExpireIn, the hitXCircular and hitXConfirm flags, and nested circular-credit availableAmount, minAmount, nominalAmount and creditState.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- tempCreditAmount
- tempCreditExpireIn
- hitXCircular
- hitXConfirm
- availableAmount
- minAmount
- nominalAmount
- creditState
POST /v1/borrowing/headroom HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": { "tempCreditAmount": "500000", "tempCreditExpireIn": "259200", "hitXCircular": "1", "hitXConfirm": "0", "circularCreditResp": { "availableAmount": "4000000", "minAmount": "400000", "nominalAmount": "5000000", "creditState": 1, "title": "Limit tersedia", "tips": "Tarik ulang setelah lunas" } } }Bind disbursement bank card
POST
/v1/payouts/accounts/linkopenbankingLinks the disbursement bank account using bankId, bankName, cardNo, fullName, identityCardNo and phone, and returns tiedCardId.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- bankId
- bankName
- cardNo
- fullName
- identityCardNo
- phone
- tiedCardId
POST /v1/payouts/accounts/link HTTP/1.1 Content-Type: application/json token: <session_token> { "bankId": "008", "bankName": "Bank Mandiri", "cardNo": "<demo_account_number>", "fullName": "Budi Santoso", "identityCardNo": "<demo_identity_number>", "phone": "08<demo_account_number>" }{ "code": "200", "message": "OK", "result": { "tiedCardId": "card-33001" } }Create loan order
POST
/v1/borrowing/requestsopenfinanceCreates a cash-loan order with creditNo, applyAmount, factAmount, shouldRepayAmount, va, va_amount, bankName, cardNo, loan_status and overdueDays, plus qrCodeList entries containing repaymentCode, repaymentCodeExpireDate, bankCode and amount.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- creditNo
- applyAmount
- factAmount
- shouldRepayAmount
- va
- va_amount
- bankName
- cardNo
- loan_status
- overdueDays
- qrCodeList
- repaymentCode
- repaymentCodeExpireDate
- bankCode
POST /v1/borrowing/requests HTTP/1.1 Content-Type: application/json token: <session_token> { "applyAmount": "5000000", "tiedCardId": "card-33001" }{ "code": "200", "message": "OK", "result": { "creditNo": "CN-77881234", "applyAmount": "5000000", "factAmount": "5000000", "shouldRepayAmount": "5305753", "va": "8800<demo_account_number>12", "va_amount": "5305753", "bankName": "Bank Mandiri", "cardNo": "<demo_account_number>", "loan_status": "INLOAN", "overdueDays": 0, "qrCodeList": [ { "repaymentCode": "8800<demo_account_number>12", "repaymentCodeExpireDate": 1738368000000, "bankCode": "008", "amount": "5305753", "payTime": "", "status": 0 } ] } }List my coupons
POST
/v1/benefits/availableopendataLists coupons for the signed-in borrower with id, couponTitle, worth, couponTypeCode, isAvailable, startTime, endTime, benefitId and couponDescription.
Auth: Session token in the token header, with mid and userNo identifying the borrower. Responses use code, message and result, with success code "200".
- id
- couponTitle
- worth
- couponTypeCode
- isAvailable
- startTime
- endTime
- benefitId
- couponDescription
POST /v1/benefits/available HTTP/1.1 Content-Type: application/json token: <session_token> { "mid": "88001234", "userNo": "UN-10086001" }{ "code": "200", "message": "OK", "result": [ { "id": "cp-44001", "couponTitle": "Potongan bunga", "worth": "50000", "couponTypeCode": "INTEREST", "isAvailable": true, "startTime": 1729123200000, "endTime": 1738368000000, "benefitId": "bf-12", "couponDescription": "Potong bunga cicilan pertama" } ] }
Data categories
- identity
- kyc
- credit-quota
- loan-orders
- repayment
- coupons
Where teams use this data
Circular-credit headroom monitor
Treasury bots poll tempCreditAmount, tempCreditExpireIn and nested availableAmount / minAmount / creditState so collections and growth teams see when circular-credit re-borrow opens.
VA repayment reconciliation
Payment ops match va, va_amount and QrCodeInfo.repaymentCode / bankCode / repaymentCodeExpireDate against Mandiri, BRI, Permata, BSI, CIMB Niaga, BJB and Alfamart inbound credits.
KTP KYC intake
Onboarding desks copy OCRRecognition idNumber, name, pob and religion into the PersonInfo file (identity, motherName, monthlyIncome, emergentContacts, whatsAppId) before underwrite.
Trial-quote fee audit
Compliance compares ProductTrialBean gstFee, stampDuty, adminTaxFee, eSignatureFee and totalInsterst against the published 24% APR simulation on a chosen loanAmount.
Frequently asked questions
Which circular-credit fields describe Samir headroom?
Temporary credit uses tempCreditAmount and tempCreditExpireIn, with hitXCircular and hitXConfirm flags. The nested circular-credit record adds availableAmount, minAmount, nominalAmount and creditState, linking the allowance to re-borrowing eligibility.
How are virtual-account repayment codes represented?
Loan records contain va and va_amount alongside qrCodeList. Repayment entries include repaymentCode, repaymentCodeExpireDate and bankCode for matching repayment instructions to incoming payments. The associated creditNo, shouldRepayAmount, loan_status and overdueDays provide the loan reference, amount due and repayment-status context.
What KTP and borrower details are included, and how is access scoped?
KTP recognition provides idNumber, name, sex, birthday, pob, province, city, district, village and religion. The borrower file adds identity, firstName, motherName, monthlyIncome, companyName, home_region_1 through home_region_4 and emergentContacts. These examples are session-scoped: OTP confirmation supplies token, userNo and mid, and subsequent requests carry the token header and borrower identifiers. Published routes and example values are illustrative, not production connection details.
Which fields separate a trial quote from a confirmed loan?
A trial quote contains loanAmount, payAmount, totalAmount, rate, gstFee, stampDuty, adminTaxFee, eSignatureFee, totalInsterst and repaymentList. A confirmed order adds creditNo, factAmount, shouldRepayAmount, loan_status and virtual-account repayment instructions.
Apps similar to Samir - Pinjaman Daring
- Easycash - Pinjaman Daring — Easycash is PT Indonesia Fintopia Technology's OJK-licensed unsecured pinjaman daring platform, advertising collateral-free online loans with round-the-clock disbursement.
- Kredit Pintar — Kredit Pintar is an OJK-supervised Indonesian unsecured cash-loan app that advertises pinjaman online tunai of up to Rp50 million over 2-, 3- or 12-month tenors, paid into a bank account.
- AdaKami — AdaKami is an OJK-licensed Indonesian online cash-loan app with published 1–12 month tenors on a 30-day installment cycle, and it states that it does not deduct fees at disbursement.
- UangMe - Pinjaman Dana Online — UangMe is an OJK-licensed P2P lending platform (KEP-4/D.05/2021) that offers unsecured cash loans with tenors of up to 12 months.
- Tunaiku - Pinjaman Dana Online — Tunaiku is an OJK-licensed Indonesian cash-loan app that advertises online pinjaman dana with Rupiah disbursement into a bank account.
- Kredivo - Paylater & Pinjaman — Kredivo is an Indonesian paylater and shopping-credit line of up to Rp50 million at more than 10,000 merchants, with a next-month payoff or 3–24 month installments and no down payment.
- JULO — JULO is an OJK-licensed Indonesian pinjaman online app listed as JULO: Pinjaman & Kredit Online, offering digital credit alongside cash-loan products.
- Singa Fintech-Digital Loans — Singa Fintech is an OJK-licensed Indonesian unsecured cash-loan app advertising pinjaman daring of up to Rp48 million over 1–12 month tenors.
Topics
- samir pinjaman data api
- samir circular credit headroom
- indonesia virtual account repayment data
- ktp identity fields
- sahabat mikro fintek loan quotes
- loan fee and installment 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