MoneyTap credit-line and UPI data API
MoneyTap -Credit Loan Payments is Freo's Android client for Indian borrowers who want a revolving cash line, a personal loan, UPI (including UPI Lite), BBPS bill pay, rent and security-deposit payouts, and co-branded cards such as the YES Bank Freo RuPay/Visa card and an RBL MoneyTap card on one home. Publisher Freo — Smarter, Better, Bigger Banking — signs users in with a phone OTP (Google and Apple are configured but the login screen is phone-first), then Aadhaar OKYC plus PAN/voter-id capture, a Jarvis credit decision against CRIF, and a CASH_LINE offer booked with channel partners such as TAPSTART, Lendbox, LendenClub, Liquiloans, Arthmate, Aspire, InCred, Credit Saison, HDBFS, Fullerton and Cholamandalam; repayments go out over Razorpay keys per partner, with EMI, foreclosure and limit-unlock tiles in the action centre. It sits in India's credit-line / BNPL lane against CASHe, Kissht, KreditBee and LazyPay. Google Play lists a 3.9 rating across 232,513 reviews and 10M+ downloads.
CASH_LINE books stamp withdrawableLimit next to a CRIF bureauScore on each customerCirId, with Jarvis adding imputedIncome, FOIR availableHeadroom and per-partner slices (channelPartner, approved, rateOfInterest) for TAPSTART, Lendbox and the rest of the co-lending roster. Aadhaar OKYC returns kycStatus for AADHAAR_DIGITAL captures; the Freo Money TPAP profile then exposes virtualAddress, payerVa / payeeVa and bankRRN on pay-to-VPA, plus UPI Lite liteBalance against a ₹5,000 maxLiteBalanceAmount.
Lender-ops monitors and bureau underwriting desks consume the limit and score fields; payments recon matches seqNo to the partner Razorpay orderId on EMI rows that carry emiAmount and cutoffDays. openData Studio turns those objects into callable open data.
Screenshots
API surface
Request/response examples are illustrative, reconstructed from the app's interface — not a live capture.
Request login OTP
POST
/v1/freo/auth/otp/dispatchosintSends a phone-login OTP to mobileNumber over otpChannel and returns the FREOTP sender regex used by the auto-read SMS receiver.
Auth: Unauthenticated JSON body. Phone is the default login screen; Google and Apple are configured but not shown first.
- mobileNumber
- loginType
- otpChannel
- ttlSec
- autoReadSenderRegex
POST /v1/freo/auth/otp/dispatch HTTP/1.1 Content-Type: application/json X-App-Version: 5.2.6 { "mobileNumber": "9876543210", "loginType": "phone", "otpChannel": "sms" }{ "status": "SUCCESS", "mobileNumber": "9876543210", "otpChannel": "sms", "ttlSec": 60, "autoReadSenderRegex": ".*-FREOTP(-.*)?$" }Verify OTP session
POST
/v1/freo/auth/otp/confirmosintExchanges mobileNumber and otp for accessToken plus customerCirId used as the signed-in borrower key.
Auth: Unauthenticated JSON body with mobileNumber and otp. Response accessToken is attached as Authorization: Bearer on later calls; customerCirId identifies the borrower.
- mobileNumber
- otp
- accessToken
- customerCirId
- customerPhone
POST /v1/freo/auth/otp/confirm HTTP/1.1 Content-Type: application/json { "mobileNumber": "9876543210", "otp": "482913" }{ "status": "SUCCESS", "accessToken": "<accessToken>", "customerCirId": "2605131137357933eawIAVQCn", "customerPhone": "9876543210", "newLoginFlowEnabled": true }Credit-line decision
GET
/v1/credit-line/decisionopenfinanceLoads the Jarvis credit decision for the signed-in borrower: CRIF bureauScore, CASH_LINE limit / withdrawableLimit / rateOfInterest, imputedIncome and FOIR availableHeadroom.
Auth: Authorization: Bearer accessToken from POST /v1/freo/auth/otp/confirm. Scoped to customerCirId.
- customerCirId
- approvalStatus
- decisionSegment
- bureauScore
- bureauType
- lineType
- limit
- withdrawableLimit
- rateOfInterest
- imputedIncome
- availableHeadroom
GET /v1/credit-line/decision HTTP/1.1 Authorization: Bearer <accessToken> Accept: application/json{ "httpCode": 0, "customerCirId": "2605131137357933eawIAVQCn", "customerPhone": "9876543210", "scoreDate": "2026-05-13T11:38:13+0530", "gatingApproved": "APPROVED", "approvalStatus": "APPROVED", "decisionSegment": "TS_FP_100K", "riskOwner": "PARTNER", "megaApiOutput": { "version": "jarvis_v1.0", "status": "SUCCESS", "approvalStatus": "APPROVED", "riskSegment": "LOW_RISK", "bureauType": "CRIF", "bureauRequestType": "SOFT_PULL", "data": { "bureauScore": 719, "bureauType": "CRIF", "creditCardPresent": true, "planId": "CASH_LINE_BOLT" }, "imputedIncomeApiResponse": { "imputedIncome": 58920.0, "salaryDetermined": 58920.0, "predictionConfidence": 50.0 }, "creditModelApiResponse": { "lineType": "CASH_LINE", "lineTypeVariant": "BOLT", "creditLines": [ { "type": "CASH_LINE", "limit": 100000.0, "withdrawableLimit": 100000.0, "rateOfInterest": 29.0, "baseLineSetupFee": 300, "maxLimit": 100000.0 } ] }, "foirApiResponse": { "finalIncome": 200000, "selfDeclaredIncome": 200000.0, "allowedFoir": 90.0, "availableHeadroom": 180000.0 } } }Channel-partner credit lines
GET
/v1/credit-line/partnersopenfinanceLists per-partner CASH_LINE books: channelPartner, IMPS channel, approved/withdrawable/sanctioned limit slices, rateOfInterest and whether the line is active.
Auth: Authorization: Bearer accessToken from POST /v1/freo/auth/otp/confirm.
- channelPartner
- channel
- lineType
- approved
- withdrawable
- sanctioned
- rateOfInterest
- baseLineSetupFee
- active
GET /v1/credit-line/partners HTTP/1.1 Authorization: Bearer <accessToken>{ "creditLineChannelPartners": [ { "lineType": "CASH_LINE", "channelPartner": "TAPSTART", "channel": "IMPS", "limit": { "approved": 100000, "withdrawable": 100000, "sanctioned": 0, "pending": 0, "withdrawn": 0, "available": 0, "reserved": 0, "eligible": 0 }, "rateOfInterest": 29.0, "baseLineSetupFee": 300, "successfulWithdrawals": 0, "active": false } ], "partnerBanks": ["TAPSTART", "LENDBOX", "LDC", "LIQUILOANS", "ARTHMATE", "ASPIRE", "INCRED", "CREDITSAISON", "HDBFS", "FULLERTON", "CHOLAMANDALAM", "RBL"] }Aadhaar OKYC upload
POST
/v1/kyc/documents/aadhaarosintAccepts front/back Aadhaar captures as AADHAAR_DIGITAL OKYC and returns kycStatus against the allowed aadhaar_card / voter_id / pan_card set.
Auth: Authorization: Bearer accessToken from POST /v1/freo/auth/otp/confirm. Multipart images plus documentType.
- documentType
- aadhaar_front
- aadhaar_back
- isOkycEnabled
- kycStatus
- allowedKycDocs
POST /v1/kyc/documents/aadhaar HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: multipart/form-data { "documentType": "AADHAAR_DIGITAL", "pages": [ {"id": "front", "documentType": "aadhaar_front"}, {"id": "back", "documentType": "aadhaar_back"} ], "customerCirId": "2605131137357933eawIAVQCn" }{ "status": "SUCCESS", "isOkycEnabled": true, "documentType": "AADHAAR_DIGITAL", "kycStatus": "VERIFIED", "allowedKycDocs": ["aadhaar_card", "voter_id", "pan_card"] }Linked UPI accounts
GET
/v1/upi/accountsopenbankingReturns bank accounts bound on the Freo Money TPAP profile: masked accountNo, ifsc, virtualAddress, accType and AEBA/MBEBA flags.
Auth: Authorization: Bearer accessToken. TPAP session is initialised with channelCode FREOMONEY against the ICICI Ultra SDK.
- accountNo
- ifsc
- virtualAddress
- accType
- name
- accRefNumber
- mbeba
- aeba
- channelCode
GET /v1/upi/accounts HTTP/1.1 Authorization: Bearer <accessToken>{ "accounts": [ { "accountNo": "XXXXX6897", "ifsc": "INDB0000323", "virtualAddress": "priya@fbl", "accType": "SAVINGS", "name": "PRIYA SHARMA", "accRefNumber": "AXcb18a6af46d6bbaee80b325cd23cbf94", "mbeba": "Y", "aeba": "Y" } ], "channelCode": "FREOMONEY" }Validate VPA
POST
/v1/upi/validate-vpaopenbankingResolves a payee VPA to name, type and featureSupportedValue before pay-to-VPA or merchant collect.
Auth: Authorization: Bearer accessToken plus an initialised FREOMONEY TPAP profile.
- upiNumberVpa
- upiNumber
- name
- type
- code
- featureSupportedValue
POST /v1/upi/validate-vpa HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "upiNumberVpa": "merchant@okicici", "upiNumber": "9876543210" }{ "code": "00", "name": "ACME STORES", "type": "PERSON", "upiNumber": "9876543210", "upiNumberVpa": "merchant@okicici", "featureSupportedValue": "P2P" }UPI pay to VPA
POST
/v1/upi/payopenbankingExecutes a device-bound UPI debit from payerVa to payeeVa and returns bankRRN, seqNo and responseCode for the ledger row.
Auth: Authorization: Bearer accessToken. Device-bound TPAP profile; UPI MPIN is collected natively via the ICICI Ultra SDK.
- amount
- payerVa
- payeeVa
- payeeName
- payeeIfsc
- txnType
- mcc
- mTxnId
- seqNo
- bankRRN
- responseCode
POST /v1/upi/pay HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "amount": "2500.00", "payerVa": "priya@fbl", "payeeVa": "merchant@okicici", "payeeName": "ACME STORES", "payeeIfsc": "ICIC0000001", "txnType": "P2M", "mcc": "5411", "note": "grocery", "mTxnId": "MTX240198", "seqNo": "ICI860aae828a7e48309c6dad4982d7095d" }{ "success": true, "status": "SUCCESS", "responseCode": "00", "bankRRN": "425567564200", "mTxnId": "MTX240198", "seqNo": "ICI860aae828a7e48309c6dad4982d7095d", "payerVa": "priya@fbl", "payeeVa": "merchant@okicici", "amount": "2500.00" }UPI Lite balance
GET
/v1/upi-lite/balanceopenbankingReads the on-device UPI Lite wallet: upiLiteStatus, liteBalance, maxLiteBalanceAmount (₹5,000 cap) and maxTxnAmountAllowed.
Auth: Authorization: Bearer accessToken. Requires a registered UPI Lite wallet on the FREOMONEY TPAP profile.
- upiLiteStatus
- liteBalance
- maxLiteBalanceAmount
- maxTxnAmountAllowed
- defaultTopupAmount
- isAutoTopUpEnabled
- result
GET /v1/upi-lite/balance HTTP/1.1 Authorization: Bearer <accessToken>{ "result": "SUCCESS", "upiLiteStatus": "ACTIVE", "upiLiteList": [ { "liteBalance": 200.00, "maxLiteBalanceAmount": 5000, "maxTxnAmountAllowed": 1000, "defaultTopupAmount": 200, "isAutoTopUpEnabled": false } ] }EMI billing statement
GET
/v1/repayments/emisopenfinancePages the live EMI book for the active channelPartner: sanctionedAmount, emiAmount, GST-on-EMI flag and the repayment-nudge cutoffDays window.
Auth: Authorization: Bearer accessToken from POST /v1/freo/auth/otp/confirm.
- channelPartner
- sanctionedAmount
- emiAmount
- addGstToEmi
- billingCycle
- cutoffDays
- emiDueDate
- status
GET /v1/repayments/emis HTTP/1.1 Authorization: Bearer <accessToken>{ "channelPartner": "TAPSTART", "sanctionedAmount": 100000, "emiAmount": 4250.00, "addGstToEmi": true, "billingCycle": "MONTHLY", "repaymentNudgeEnabled": true, "cutoffDays": 11, "items": [ { "emiDueDate": "2026-06-05", "emiAmount": 4250.00, "status": "DUE" } ] }Initiate partner repayment
POST
/v1/repayments/initiateopenfinanceOpens a Razorpay checkout for the due EMI/partial amount on a named channelPartner and returns orderId plus whether UPI is allowed on that book.
Auth: Authorization: Bearer accessToken. Checkout is created against the partner Razorpay key from banking_partner.json.
- channelPartner
- amount
- repaymentType
- razorpayKey
- orderId
- shouldAllowUpiPayments
- status
POST /v1/repayments/initiate HTTP/1.1 Authorization: Bearer <accessToken> Content-Type: application/json { "channelPartner": "TAPSTART", "amount": 4250.00, "repaymentType": "EMI" }{ "channelPartner": "TAPSTART", "amount": 4250.00, "repaymentType": "EMI", "razorpayKey": "rzp_live_xxxxxxxx", "orderId": "order_MtPay9k2", "shouldAllowUpiPayments": false, "status": "CREATED" }Credit-score snapshot
GET
/v1/credit/scoreopendataReturns the latest CRIF soft-pull bureauScore with scoreDate, employmentType, NTC flag and PAN name-match status for the home credit-health tile.
Auth: Authorization: Bearer accessToken from POST /v1/freo/auth/otp/confirm.
- bureauScore
- bureauType
- bureauRequestType
- scoreDate
- employmentType
- isNTC
- nameMatchAsPerPancard
- creditCardPresent
GET /v1/credit/score HTTP/1.1 Authorization: Bearer <accessToken>{ "bureauScore": 719, "bureauType": "CRIF", "bureauRequestType": "SOFT_PULL", "scoreDate": "2026-05-13T11:38:13+0530", "employmentType": "SALARIED", "isNTC": false, "nameMatchAsPerPancard": "MATCH", "creditCardPresent": true }
Data categories
- credit-limits
- bureau-scores
- kyc-documents
- upi-accounts
- repayments
- income
Where teams use this data
Credit-line headroom monitor
A lender-ops bot pulls withdrawableLimit, sanctioned and available slices per channelPartner each night and flags TAPSTART/Lendbox books where rateOfInterest or baseLineSetupFee drifted after a Jarvis re-decision.
Bureau-score underwriting feed
An underwriting desk joins bureauScore, bureauType CRIF, imputedIncome, availableHeadroom and employmentType onto the origination file so a second-look model can see the same FOIR headroom the home tile showed.
UPI settlement recon
A payments recon job matches bankRRN and seqNo from pay-to-VPA rows against the partner Razorpay orderId, using payerVa / payeeVa and UPI Lite liteBalance to explain short-amount wallets.
OKYC completeness check
A KYC ops queue reads kycStatus and allowedKycDocs after the Aadhaar front/back capture so video-KYC (action_initiate_vkyc) is only scheduled when isOkycEnabled still needs a fallback.
Frequently asked questions
What credit-line fields does MoneyTap expose?
The reconstructed decision object carries customerCirId, approvalStatus, decisionSegment, CRIF bureauScore, CASH_LINE limit and withdrawableLimit, rateOfInterest, imputedIncome and FOIR availableHeadroom, then splits the book per channelPartner (approved, withdrawable, sanctioned).
How does the app authenticate borrowers?
Phone OTP is the default login screen. Verify returns accessToken and customerCirId; later credit-line, KYC, UPI and repayment calls attach Authorization: Bearer. UPI MPIN stays on-device in the ICICI Ultra SDK for the FREOMONEY TPAP profile.
Which UPI objects sit behind Scan & Pay?
Linked accounts return accountNo, ifsc, virtualAddress and AEBA flags; validate-VPA returns name and upiNumberVpa; pay-to-VPA writes amount, payerVa, payeeVa, mTxnId, seqNo and bankRRN; UPI Lite adds liteBalance and maxLiteBalanceAmount.
Apps similar to MoneyTap -Credit Loan Payments
- CASHe: Quick Personal Loan App — CASHe is a Mumbai-based India digital-lending app that offers short-term personal loans to salaried millennials through a mobile application.
- Kissht: Instant Personal Loans — Kissht is an India digital-lending app from OnEMI Technology Solutions that offers unsecured personal and business loans of up to ₹5 lakh with a fully online application.
- KreditBee — KreditBee is an India digital-lending app that arranges personal loans of ₹3,000 to ₹10 lakh over 3–60 months and also advertises a flexi personal-loan credit line.
- Moneyview — Moneyview is an India finance app that offers unsecured personal loans of ₹5,000 to ₹10 lakh over 3–60 months, plus UPI payments and a credit-report tracker.
- Fibe — Fibe (formerly EarlySalary) is a Pune-based India digital-lending app that offers unsecured personal loans of up to ₹10 lakh with no collateral.
- LazyPay — LazyPay is PayU Finance's India consumer-credit brand for pay-later and digital loans, after PayU took a controlling stake in PaySense and planned to merge it with LazyPay.
- Paisabazaar: Credit Score App — Paisabazaar is an India consumer-credit marketplace and free credit-score platform where borrowers can compare personal-loan offers from partner lenders.
Topics
- MoneyTap API
- Freo credit line API
- CASH_LINE withdrawableLimit
- CRIF bureauScore
- Freo Money UPI TPAP
- MoneyTap KYC Aadhaar
- TAPSTART repayment Razorpay
- UPI Lite liteBalance
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