Mobirec retailer wallet, recharge and margin APIs
Mobile Recharge Commission App — branded Mobirec — is the kirana-counter client from Mobirec Private Limited for India's multi-operator prepaid trade. Neighbourhood retailers sign in with a mobile number and SMS OTP, then sell Jio/Airtel/Vi top-ups by telecom circle, DTH packs, BBPS utility bills and brand vouchers (Amazon, Flipkart, Swiggy and the rest via Hubble) from a home wallet they refill over UPI. A Margin screen lists per-operator commission, reports cover recharge, ledger and add-money history, and PAN KYC plus a mandatory Gmail/PIN-code profile gates the live till. It competes for the same shop counters as Airtel Mitra, JioPOS Lite and PayNearby, but as an independent multi-operator commission app rather than a single-carrier LAPU wallet.
Retailer float sits in balance and ub on the signed-in session, with amSys switching add-money on or off and utilityUse recording whether BBPS debit is allowed. Prepaid checkout carries rcNumber, rcOperator, rcCircle and plan rows with rs, validity and data; the margin board exposes each operator's commissions[].margin and margin_type.
Outstanding BBPS and DTH bills arrive as customerName, dueDate, billDate and refId before checkout writes txnId and optRef. Ledger and recharge reports page those rows with amount, profit and status between from/to dates, while PAN KYC posts pan plus name and returns a rotated token. Reports cards add todaySale/todayProfite versus totalSale, and the referral board tracks qualifiedReferred against next_milestone. Distributors, commission engines and shop-ERP bots use that surface to reconcile float, score operator margins and match BBPS receipts — openData Studio turns it 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.
Request retailer login OTP
POST
/v1/session/otp/requestosintStarts SMS OTP login for a retailer MSISDN, optionally attaching a referral code from the install/deep-link flow.
Auth: No prior session. Phone number is RSA/AES-wrapped as hashKey; the on-device SMS OTP listener fills the confirm step.
- hashKey
- phone
- ref
- response
- message
POST /v1/session/otp/request HTTP/1.1 Content-Type: application/json { "hashKey": "<rsa-aes phone+ref>" }{ "response": true, "message": "OTP sent", "data": { "phone": "9876543210", "ref": "MRC8K2" } }Verify OTP and issue session token
POST
/v1/session/otp/confirmosintConfirms the SMS OTP and returns the session token stored as a token cookie and attached as the token header on later API calls.
Auth: No prior session. Phone number is RSA/AES-wrapped as hashKey; the on-device SMS OTP listener fills the confirm step.
- hashKey
- phone
- otp
- token
- user
- status
- name
- response
POST /v1/session/otp/confirm HTTP/1.1 Content-Type: application/json { "hashKey": "<rsa-aes phone+otp>" }{ "response": true, "token": "<sessionToken>", "user": { "phone": "9876543210", "status": "Verified", "name": "Ravi Sharma" } }Read retailer wallet balance
POST
/v1/wallet/balanceopenbankingReturns the live till wallet shown on the home card: main balance, unutilised/hold bucket, BBPS debit flag and whether add-money is enabled.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- balance
- ub
- utilityUse
- amSys
- response
POST /v1/wallet/balance HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "balance": "18450.75", "ub": "1200.00", "utilityUse": true, "amSys": 1 } }Fetch signed-in retailer profile
POST
/v1/retailer/profileosintLoads the retailer identity the app gates on: Verified status, Gmail, gender and PIN-code address used before the live till opens.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- name
- gender
- phone
- status
- pin
- city
- dist
- state
- address
- response
POST /v1/retailer/profile HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "name": "Ravi Sharma", "email": "[email protected]", "gender": "male", "phone": "9876543210", "status": "Verified", "pin": "110001", "city": "Connaught Place", "dist": "New Delhi", "state": "Delhi", "address": "Connaught Place, New Delhi, Delhi - 110001" } }Update retailer profile and complete signup
POST
/v1/retailer/profile/saveosintWrites the mandatory onboarding profile (Gmail-only email, PIN-resolved city/district/state) and may rotate the session token when status becomes Verified.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- name
- gender
- ref
- pin
- city
- dist
- state
- address
- token
- user
- status
- message
- response
POST /v1/retailer/profile/save HTTP/1.1 token: <sessionToken> Content-Type: multipart/form-data name=Ravi Sharma&[email protected]&gender=male&ref=MRC8K2&pin=110001&city=Connaught Place&dist=New Delhi&state=Delhi&address=Connaught Place, New Delhi, Delhi - 110001{ "response": true, "message": "Profile verified successfully!", "data": { "token": "<sessionToken>", "user": { "status": "Verified", "name": "Ravi Sharma", "email": "[email protected]" } } }Resolve PIN code to post offices
GET
/v1/geo/postcodeosintResolves a 6-digit PIN into post-office Name/District/State so the mandatory profile form can fill city, dist, state and address before the profile save.
Auth: Unauthenticated same-origin lookup. Query pin is the 6-digit PIN code; falls back to the public India Post PIN directory when the first lookup misses.
- pin
- success
- data
- Name
- District
- State
- Pincode
GET /v1/geo/postcode?pin=110001 HTTP/1.1 Accept: application/json{ "success": true, "data": [ { "Name": "Connaught Place", "District": "New Delhi", "State": "Delhi", "Pincode": "110001" } ] }List operators and commission slabs
POST
/v1/catalog/operators/{serviceId}/{page}opendataReturns the per-service operator catalogue the Margin screen renders, including each operator's commission slab as percent or flat margin.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- id
- name
- icon
- operators
- commissions
- margin_type
- margin
- response
POST /v1/catalog/operators/prepaid/0 HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": [ { "id": "jio", "name": "Jio", "operators": [ { "id": "jio-in", "name": "Reliance Jio", "icon": "https://cdn.example.com/icons/jio.svg", "commissions": [ { "margin_type": "Percent", "margin": "2.40" } ] } ] } ] }Search prepaid recharge plans
POST
/v1/plans/searchopendataReturns circle-specific prepaid plans (and R-offer rows when roffer=yes) for a mobile number so the retailer can pick rs/validity/data before checkout.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- circle
- operator
- roffer
- rcNumber
- rcOperator
- rcCircle
- rs
- desc
- validity
- data
- sms
- response
POST /v1/plans/search HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes number+circle+operator+roffer>" }{ "response": true, "data": { "rcNumber": "9876543210", "rcOperator": "Jio", "rcCircle": "Delhi NCR", "plans": [ { "rs": "299", "desc": "2GB/day + unlimited calls", "validity": "28 days", "data": "2 GB/day", "sms": "100/day" } ] } }Validate selected prepaid plan
POST
/v1/plans/validateopendataConfirms the chosen plan amount is valid for that MSISDN, operator and telecom circle before the retailer proceeds to recharge checkout.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- circle
- operator
- amount
- message
- response
POST /v1/plans/validate HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes number+circle+operator+amount>" }{ "response": true, "message": "Plan verified", "data": { "number": "9876543210", "circle": "Delhi NCR", "operator": "Jio", "amount": 299 } }Detect prepaid operator and circle
POST
/v1/plans/lookup-operatoropendataLooks up the MSISDN's home operator and telecom circle so the prepaid drawer can pre-select rcOperator/rcCircle before the plan list loads.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- phone
- Number
- Operator
- Circle
- response
POST /v1/plans/lookup-operator HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes phone>" }{ "response": true, "data": { "Number": "9876543210", "Operator": "Jio", "Circle": "Delhi NCR" } }List telecom circles for prepaid
POST
/v1/plans/circlesopendataReturns the prepaid circle-name list the circle drawer matches against the operator-lookup Circle string.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- circleList
- Circle
- response
POST /v1/plans/circles HTTP/1.1 Content-Type: application/json token: <sessionToken> {}[ "Delhi NCR", "Mumbai", "Kolkata", "Maharashtra", "Tamil Nadu" ]Submit prepaid, DTH or BBPS recharge
POST
/v1/orders/placeopenfinanceDebits the retailer wallet and fires the prepaid/DTH/utility sale; the same call is reused for redeem and bill-pay confirm.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- amount
- operator
- option1
- option2
- option3
- refId
- txnId
- status
- optRef
- response
- message
POST /v1/orders/place HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes number+amount+operator+refId>" }{ "response": true, "message": "Recharge accepted", "data": { "txnId": "MRC24019876", "status": "Success", "amount": 299, "operator": "Jio", "number": "9876543210", "optRef": "JIO9X21" } }Fetch BBPS or DTH bill details
POST
/v1/bills/lookupopenfinanceLooks up the outstanding BBPS/DTH bill so the retailer can confirm amount and refId before placing the order.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- operator
- amount
- billDate
- dueDate
- customerName
- refId
- response
POST /v1/bills/lookup HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes bill-account payload>" }{ "response": true, "data": { "number": "DL123456789", "operator": "BSES Rajdhani", "amount": 1860.5, "billDate": "2026-09-12", "dueDate": "2026-09-28", "customerName": "Ravi Sharma", "refId": "BBPS9F2A11" } }Create add-money UPI order
POST
/v1/wallet/topupopenbankingOpens an add-balance order for the retailer float; the app launches the returned UPI payment_url via the in-app UPI payment sheet.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- amount
- channel
- payment_url
- redirect_url
- txn_id
- txnId
- response
POST /v1/wallet/topup HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes amount+channel=APP>" }{ "response": true, "data": { "payment_url": "upi://pay?pa=retailer@upi&am=5000.00&tn=MRC24019899", "redirect_url": "https://app.example.com/wallet/topup/callback", "txn_id": "MRC24019899" } }List add-money amount presets
POST
/v1/wallet/topup-presetsopenbankingReturns the preset top-up chips on the Add Balance screen so the retailer can pick a float refill amount.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- amount
- response
POST /v1/wallet/topup-presets HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": [ { "amount": 500 }, { "amount": 1000 }, { "amount": 2000 }, { "amount": 5000 }, { "amount": 10000 } ] }Page recharge, ledger and complaint history
POST
/v1/reports/searchopenfinancePages the Transaction Reports, ledger and complaint lists with operator head/subhead, amount, profit and operator reference, plus ledger open_bal/close_bal on type=Ledger rows.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashKey
- from
- to
- page
- for
- search
- total
- data
- txnId
- head
- subhead
- status
- amount
- profit
- date
- optRef
- icon
- response
- open_bal
- close_bal
POST /v1/reports/search HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashKey": "<rsa-aes from+to+page+for=Recharge>" }{ "response": true, "total": 86, "data": [ { "txnId": "MRC24019876", "head": "Jio Prepaid", "subhead": "9876543210", "status": "Success", "amount": 299, "profit": 7.18, "date": "2026-10-08 18:42", "optRef": "JIO9X21", "icon": "https://cdn.example.com/icons/jio.svg" } ] }Fetch a single transaction report
POST
/v1/reports/itemopenfinanceLoads one recharge or ledger row for the details screen and for complaint follow-up.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashKey
- id
- for
- txnId
- head
- subhead
- status
- amount
- profit
- date
- optRef
- message
- response
POST /v1/reports/item HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashKey": "<rsa-aes id+for=Recharge>" }{ "response": true, "data": { "txnId": "MRC24019876", "head": "Jio Prepaid", "subhead": "9876543210", "status": "Success", "amount": 299, "profit": 7.18, "date": "2026-10-08 18:42", "optRef": "JIO9X21", "message": "Recharge successful" } }Verify retailer PAN KYC
POST
/v1/kyc/panosintSubmits PAN and legal name from the KYC screen; a rotated token is stored when verification succeeds.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- pan
- name
- token
- status
- message
- response
POST /v1/kyc/pan HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes pan+name>" }{ "response": true, "message": "Your PAN KYC has been successfully completed.", "token": "<sessionToken>", "data": { "pan": "ABCDE1234F", "name": "RAVI SHARMA", "status": "Verified" } }List last three recharges for a service
POST
/v1/orders/recentopendataFeeds the Recent Recharges strip on the prepaid/DTH/utility number-entry screens so the retailer can one-tap a repeat MSISDN.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashKey
- for
- number
- amount
- operator
- status
- response
POST /v1/orders/recent HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashKey": "<rsa-aes for=Prepaid>" }{ "response": true, "data": [ { "number": "9876543210", "amount": 299, "operator": "Jio", "status": "Success" }, { "number": "9123456780", "amount": 199, "operator": "Airtel", "status": "Success" } ] }Refresh retailer session token
POST
/v1/session/refreshosintRotates the signed-in retailer JWT; Verified status sends the shop home, otherwise the verify-user gate.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- token
- user
- status
- phone
- name
- response
POST /v1/session/refresh HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "token": "<sessionToken>", "user": { "phone": "9876543210", "status": "Verified", "name": "Ravi Sharma" } } }Read today and lifetime till totals
POST
/v1/reports/totalsopenfinanceFeeds the Reports home cards: Payments/Sales/Profit for today versus lifetime (wire names keep the Profite spelling).
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- todayAddMoney
- todaySale
- todayProfite
- totalAddMoney
- totalSale
- totalProfite
- response
POST /v1/reports/totals HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "todayAddMoney": 5000, "todaySale": 12840, "todayProfite": 186.5, "totalAddMoney": 185000, "totalSale": 942310, "totalProfite": 14280.75 } }Read referral milestone progress
POST
/v1/referrals/progressopendataDrives the Refer screen: how many friends have done the qualifying recharge, remaining slots to the wallet bonus, and the bonus amount.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- qualifiedReferred
- totalReferred
- next_milestone
- remaining_referrals
- qualifiedBonuses
- new_bounded_amount
- bonus_credited
- response
POST /v1/referrals/progress HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "qualifiedReferred": 11, "totalReferred": 14, "next_milestone": 15, "remaining_referrals": 4, "qualifiedBonuses": 0, "new_bounded_amount": 349, "bonus_credited": 0 } }List home service catalogue
POST
/v1/catalog/servicesopendataReturns the signed-in home catalogue; the UI splits rows whose type is Mobile or DTH from other bill-pay services, then feeds each id into the operator-commission list.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- id
- name
- type
- icon
- response
POST /v1/catalog/services HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": [ { "id": "prepaid", "name": "Mobile Recharge", "type": "Mobile", "icon": "https://cdn.example.com/icons/prepaid.svg" }, { "id": "dth", "name": "DTH", "type": "DTH", "icon": "https://cdn.example.com/icons/dth.svg" } ] }Fetch app metadata and support contacts
GET
/v1/config/app/{changes}opendataVersioned config blob: Changes invalidates the cached config, AppUrl drives in-app update, and contactDetails.WhatsApp is the support chat deep link.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- Changes
- AppUrl
- appUrl
- playStoreUrl
- contactDetails
- Refer
- Switch
- Amount
GET /v1/config/app/0 HTTP/1.1 token: <sessionToken>{ "Changes": "12", "AppUrl": "https://play.google.com/store/apps/details?id=com.FreeRechargeApp", "contactDetails": { "WhatsApp": "919876543210" }, "Refer": { "Switch": true, "Amount": 349 } }Lookup DTH subscriber before checkout
POST
/v1/dth/subscriberopendataResolves a DTH subscriber on the info-submit screen before the retailer posts the recharge order with option1-3.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- operator
- operatorName
- customerName
- response
POST /v1/dth/subscriber HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes number+operator>" }{ "response": true, "data": { "number": "3012345678", "operator": "Tata Play", "operatorName": "Tata Play", "customerName": "Ravi Sharma" } }File a transaction complaint
POST
/v1/reports/complaintopenfinanceOpens a complaint against a recharge or add-money txnId from the details sheet (pending, wallet not credited, BBPS not adjusted).
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashKey
- id
- for
- message
- status
- response
POST /v1/reports/complaint HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashKey": "<rsa-aes id+for=Recharge+message>" }{ "response": true, "message": "Complaint registered", "data": { "id": "MRC24019876", "for": "Recharge", "status": "Open" } }Submit recharge with simultaneous add-money
POST
/v1/orders/place-with-topupopenfinanceFires the same prepaid/DTH/redeem/BBPS sale as the standard order call while topping up float in one step, used when the till cannot cover the sale from balance alone.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- hashData
- number
- amount
- operator
- option1
- option2
- option3
- txnId
- status
- payment_url
- response
- message
POST /v1/orders/place-with-topup HTTP/1.1 Content-Type: application/json token: <sessionToken> { "hashData": "<rsa-aes number+amount+operator>" }{ "response": true, "message": "Recharge accepted", "data": { "txnId": "MRC24019901", "status": "Pending", "amount": 299, "operator": "Jio", "number": "9876543210", "payment_url": "upi://pay?pa=retailer@upi&am=299.00" } }Issue Hubble voucher mock token
POST
/v1/vouchers/session-tokenopendataMints the Hubble gift-card SDK token the voucher screen needs before it can open an iframe to voucher checkout.
Auth: Session token header issued after SMS OTP confirm (and rotated by the session-refresh call). Sent as the token request header.
- mockToken
- response
POST /v1/vouchers/session-token HTTP/1.1 Content-Type: application/json token: <sessionToken> {}{ "response": true, "data": { "mockToken": "<hubbleMockToken>" } }Create Hubble voucher checkout session
GET
/v1/vouchers/checkoutopendataTurns a brand title plus Hubble mockToken into the iframe src (url/baseUrl) for Amazon/Flipkart/OTT voucher checkout.
Auth: Query token is the mockToken from the voucher session-token call. Same-origin BFF; the iframe then loads url on the Hubble checkout host.
- title
- token
- url
- baseUrl
GET /v1/vouchers/checkout?title=amazon&token=<hubbleMockToken> HTTP/1.1{ "url": "https://vouchers.example.com/sdk?session=hbl_sess_91", "baseUrl": "https://vouchers.example.com/sdk?session=hbl_sess_91" }
Data categories
- balances
- transactions
- recharges
- commissions
- kyc
- referrals
Where teams use this data
Distributor float reconciliation
Nightly jobs pull balance and ub, then match add-money txn_id rows and ledger credit/debit status so a super-distributor can see which kirana wallets ran dry before the next UPI refill.
Operator margin engine
A commission engine reads commissions[].margin and margin_type per operator from the service-operator catalogue and compares them with profit on each recharge history row to flag underpaying circles.
BBPS receipt matching
Accounts bots join fetch-bill refId/customerName/dueDate with later order txnId and optRef so utility collections reconcile against the retailer's wallet debit.
Shop onboarding gate
Compliance queues watch PAN verify (pan, name, status) plus profile completeness (email, pin, city, dist, state) before a new counter is allowed to debit float.
Frequently asked questions
What wallet fields does Mobirec expose for a retailer?
The signed-in balance call returns balance (live till), ub (hold/unutilised bucket), utilityUse (whether BBPS debit is allowed) and amSys (whether UPI add-money is enabled). Add-money then returns payment_url, redirect_url and txn_id for the UPI intent.
How are prepaid plans and commissions represented?
Plans are circle-specific rows with rs, desc, validity, data and sms, validated for a number/operator/circle/amount tuple. The margin screen lists operators[].commissions[] with margin_type (Percent or flat) and margin.
How are BBPS bills joined to a wallet debit?
Bill lookup returns number, operator, amount, billDate, dueDate, customerName and refId. The later order row carries txnId, optRef, amount and status, so accounts jobs can match the receipt against the till debit.
Which history rows can be paged?
The history call pages Recharge, ledger and complaint lists with txnId, head, subhead, amount, profit, status, optRef and date. A details call loads one row by txnId; complaints post an extra message against that id.
Apps similar to Mobile Recharge Commission App
- Mitra — Mitra is Bharti Airtel's retailer app for managing an Airtel LAPU wallet, viewing circle tariff plans, processing customer top-ups and tracking live and monthly recharge commissions.
- JioPOS Lite — JioPOS Lite is Reliance Jio's partner app that lets individuals onboard as Jio partners, load a wallet and recharge Jio customers, with an earnings dashboard for daily commission.
- PayNearby — PayNearby is a kirana-retailer platform whose shops collect phone and DTH recharges, utility bills and EMI cash, alongside branchless banking such as cash-in, cash-out and transfers.
- Spice Money — Spice Money is a DiGiSPICE rural-finance network whose Adhikari agents offer bill payments plus mobile, OTT and FASTag recharge from neighbourhood shops, along with money transfer and mini-ATM cash services.
- Paytm — Paytm is One97's Indian payments app whose Play listing covers UPI money transfer, bill payments and prepaid recharge, so kirana counters already taking Paytm also sell top-ups from the same phone.
- PhonePe — PhonePe is a Bengaluru UPI payments app that also lets users recharge mobile and DTH connections and pay utility bills from the same wallet used for in-store scans.
- Eko — Eko Bharat Ventures runs a recharge portal and commission-based retailer tools so neighbourhood shops can sell recharges, pay utility bills and offer Aadhaar cash-out and money transfer.
Topics
- mobirec api
- retailer recharge wallet
- prepaid commission margin
- bbps bill fetch
- upi add money
- pan kyc retailer
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