MoneyTap -Credit Loan Payments icon

MoneyTap credit-line and UPI data API

Freo - Smarter, Better, Bigger Banking · Lending 3.9 ★

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

  • MoneyTap -Credit Loan Payments screenshot 1
  • MoneyTap -Credit Loan Payments screenshot 2
  • MoneyTap -Credit Loan Payments screenshot 3
  • MoneyTap -Credit Loan Payments screenshot 4
  • MoneyTap -Credit Loan Payments screenshot 5
  • MoneyTap -Credit Loan Payments screenshot 6
  • MoneyTap -Credit Loan Payments screenshot 7
  • MoneyTap -Credit Loan Payments screenshot 8

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/dispatch osint

    Sends 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/confirm osint

    Exchanges 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/decision openfinance

    Loads 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/partners openfinance

    Lists 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/aadhaar osint

    Accepts 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/accounts openbanking

    Returns 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-vpa openbanking

    Resolves 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/pay openbanking

    Executes 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/balance openbanking

    Reads 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/emis openfinance

    Pages 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/initiate openfinance

    Opens 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/score opendata

    Returns 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

Get a quote